mirror of
https://github.com/qemu/qemu.git
synced 2025-10-28 23:46:56 +00:00
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 | ||