533eb415df
It's supposed that SOC will check if "-m" provided RAM size is valid by setting "ram-size" property and then board would read back valid (possibly corrected value) to map RAM MemoryReging with valid size. It isn't doing so, since check is called only indirectly from aspeed_sdmc_reset()->asc->compute_conf() or much later when guest writes to configuration register. So depending on "-m" value QEMU end-ups with a warning and an invalid MemoryRegion size allocated and mapped. (examples: -M ast2500-evb -m 1M 0000000080000000-000000017ffffffe (prio 0, i/o): aspeed-ram-container 0000000080000000-00000000800fffff (prio 0, ram): ram 0000000080100000-00000000bfffffff (prio 0, i/o): max_ram -M ast2500-evb -m 3G 0000000080000000-000000017ffffffe (prio 0, i/o): aspeed-ram-container 0000000080000000-000000013fffffff (prio 0, ram): ram [DETECTED OVERFLOW!] 0000000140000000-00000000bfffffff (prio 0, i/o): max_ram ) On top of that sdmc falls back and reports to guest "default" size, it thinks machine should have. This patch makes ram-size check actually work and changes behavior from a warning later on during machine reset to error_fatal at the moment SOC.ram-size is set so user will have to fix RAM size on CLI to start machine. It also gets out of the way mutable ram-size logic, so we could consolidate RAM allocation logic around pre-allocated hostmem backend (supplied by user or auto created by generic machine code depending on supplied -m/mem-path/mem-prealloc options. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20200219160953.13771-10-imammedo@redhat.com> |
||
---|---|---|
.. | ||
macio | ||
a9scu.h | ||
arm11scu.h | ||
arm_integrator_debug.h | ||
armsse-cpuid.h | ||
armsse-mhu.h | ||
aspeed_scu.h | ||
aspeed_sdmc.h | ||
aspeed_xdma.h | ||
auxbus.h | ||
bcm2835_mbox_defs.h | ||
bcm2835_mbox.h | ||
bcm2835_property.h | ||
bcm2835_rng.h | ||
bcm2835_thermal.h | ||
cbus.h | ||
grlib_ahb_apb_pnp.h | ||
imx2_wdt.h | ||
imx6_ccm.h | ||
imx6_src.h | ||
imx6ul_ccm.h | ||
imx7_ccm.h | ||
imx7_gpr.h | ||
imx7_snvs.h | ||
imx25_ccm.h | ||
imx31_ccm.h | ||
imx_ccm.h | ||
imx_rngc.h | ||
iotkit-secctl.h | ||
iotkit-sysctl.h | ||
iotkit-sysinfo.h | ||
ivshmem.h | ||
mac_via.h | ||
mips_cmgcr.h | ||
mips_cpc.h | ||
mips_itu.h | ||
mos6522.h | ||
mps2-fpgaio.h | ||
mps2-scc.h | ||
msf2-sysreg.h | ||
nrf51_rng.h | ||
pca9552_regs.h | ||
pca9552.h | ||
pvpanic.h | ||
stm32f2xx_syscfg.h | ||
stm32f4xx_exti.h | ||
stm32f4xx_syscfg.h | ||
tmp105_regs.h | ||
tz-mpc.h | ||
tz-msc.h | ||
tz-ppc.h | ||
unimp.h | ||
vmcoreinfo.h | ||
zynq-xadc.h |