qemu/hw/arm
Eric Auger 957e32cffa hw/arm/virt: Dynamic memory map depending on RAM requirements
Up to now the memory map has been static and the high IO region
base has always been 256GiB.

This patch modifies the virt_set_memmap() function, which freezes
the memory map, so that the high IO range base becomes floating,
located after the initial RAM and the device memory.

The function computes
- the base of the device memory,
- the size of the device memory,
- the high IO region base
- the highest GPA used in the memory map.

Entries of the high IO region are assigned a base address. The
device memory is initialized.

The highest GPA used in the memory map will be used at VM creation
to choose the requested IPA size.

Setting all the existing highmem IO regions beyond the RAM
allows to have a single contiguous RAM region (initial RAM and
possible hotpluggable device memory). That way we do not need
to do invasive changes in the EDK2 FW to support a dynamic
RAM base.

Still the user cannot request an initial RAM size greater than 255GB.

Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Message-id: 20190304101339.25970-8-eric.auger@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2019-03-05 15:55:09 +00:00
..
allwinner-a10.c hw/arm/allwinner-a10: Add the 'A' SRAM and the SRAM controller 2019-01-07 15:23:47 +00:00
armsse.c hw/arm/armsse: Unify init-svtor and cpuwait handling 2019-02-28 11:03:04 +00:00
armv7m.c elf: Add optional function ptr to load_elf() to parse ELF notes 2019-02-05 16:50:16 +01:00
aspeed_soc.c aspeed: add a max_ram_size property to the memory controller 2018-08-16 14:29:58 +01:00
aspeed.c i2c: Split smbus into parts 2019-02-27 21:06:08 -06:00
bcm2835_peripherals.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
bcm2836.c hw/arm/bcm2836: Fix crash with device_add bcm2837 on unsupported machines 2018-07-17 13:12:49 +01:00
boot.c hw/arm/boot: introduce fdt_add_memory_node helper 2019-03-05 15:55:08 +00:00
collie.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-06-01 14:15:10 +02:00
cubieboard.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
digic_boards.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
digic.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
exynos4_boards.c hw: add .min_cpus and .default_cpus fields to machine_class 2017-11-13 13:55:27 +00:00
exynos4210.c hw/arm/exynos4210: Zero memory allocated for Exynos4210State 2018-11-06 11:32:14 +00:00
fsl-imx6.c hw/arm/fsl-imx6: Fix introspection problems with the "fsl, imx6" device 2018-07-17 13:12:49 +01:00
fsl-imx6ul.c hw/arm/fsl-imx6ul: Connect VIRQ and VFIQ 2018-08-24 13:17:33 +01:00
fsl-imx7.c hw/arm/fsl-imx6ul: Connect VIRQ and VFIQ 2018-08-24 13:17:34 +01:00
fsl-imx25.c hw/arm/fsl-imx25: Fix introspection problem with the "fsl, imx25" device 2018-07-17 13:12:49 +01:00
fsl-imx31.c hw/arm/fsl-imx31: Fix introspection problem with the "fsl, imx31" device 2018-07-17 13:12:49 +01:00
gumstix.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-06-01 14:15:10 +02:00
highbank.c hw/arm/highbank: Connect VIRQ and VFIQ 2018-08-24 13:17:33 +01:00
imx25_pdk.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
integratorcp.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
kzm.c Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
mainstone.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-06-01 14:15:10 +02:00
Makefile.objs hw/arm/musca.c: Implement models of the Musca-A and -B1 boards 2019-02-21 18:17:47 +00:00
mcimx6ul-evk.c i.MX6UL: Add Freescale i.MX6 UltraLite 14x14 EVK Board 2018-08-16 14:05:28 +01:00
mcimx7d-sabre.c i.mx7d: Remove unused header files 2018-06-29 15:11:16 +01:00
microbit.c arm: Stub out NRF51 TWI magnetometer/accelerometer detection 2019-01-29 11:46:03 +00:00
mps2-tz.c hw/arm/mps2-tz: Add mps2-an521 model 2019-02-01 14:55:44 +00:00
mps2.c hw/arm/mps2: Fix ID register errors on AN511 and AN385 2018-08-24 13:17:50 +01:00
msf2-soc.c hw/arm: make bitbanded IO optional on ARMv7-M 2018-08-16 14:05:28 +01:00
msf2-som.c hw: Directly use "qemu/units.h" instead of "qemu/cutils.h" 2018-07-02 15:41:12 +02:00
musca.c hw/arm/musca: Wire up PL011 UARTs 2019-02-21 18:17:47 +00:00
musicpal.c musicpal: Convert sysbus init function to realize function 2018-12-13 13:47:56 +00:00
netduino2.c arm: drop intermediate cpu_model -> cpu type parsing and use cpu type directly 2017-09-19 09:09:32 -03:00
nrf51_soc.c arm: Instantiate NRF51 special NVM's and NVMC 2019-02-01 15:32:17 +00:00
nseries.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-06-01 14:15:10 +02:00
omap1.c hw/arm/omap1: Use qemu_log_mask(GUEST_ERROR) instead of fprintf 2018-06-26 17:50:40 +01:00
omap2.c char: allow specifying a GMainContext at opening time 2019-02-13 14:23:39 +01:00
omap_sx1.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-06-01 14:15:10 +02:00
palm.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
pxa2xx_gpio.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
pxa2xx_pic.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
pxa2xx.c i2c: have I2C receive operation return uint8_t 2019-02-27 21:06:08 -06:00
raspi.c hw/arm/raspi: Don't bother setting default_cpu_type 2018-04-26 11:04:39 +01:00
realview.c scsi: move lsi53c8xx_create() callers to lsi53c8xx_handle_legacy_cmdline() 2018-09-25 11:12:25 +10:00
sabrelite.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
smmu-common.c hw/arm/smmu-common: Fix the name of the iommu memory regions 2018-09-25 14:14:07 +01:00
smmu-internal.h hw/arm/smmu-common: VMSAv8-64 page table walk 2018-05-04 18:05:51 +01:00
smmuv3-internal.h hw/arm/smmuv3: fix eventq recording and IRQ triggerring 2018-09-25 15:13:24 +01:00
smmuv3.c hw/arm/smmuv3: fix eventq recording and IRQ triggerring 2018-09-25 15:13:24 +01:00
spitz.c hw/arm/spitz: Move problematic nand_init() code to realize function 2018-07-23 15:21:26 +01:00
stellaris.c arm:i2c: Don't mask return from i2c_recv() 2019-02-27 21:06:08 -06:00
stm32f205_soc.c hw/arm: make bitbanded IO optional on ARMv7-M 2018-08-16 14:05:28 +01:00
strongarm.c strongarm: mask off high[31:28] bits from dir and state registers 2018-11-02 14:03:33 +00:00
strongarm.h Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
sysbus-fdt.c hw/arm/sysbus-fdt: Only call match_fn callback if the type matches 2018-11-13 10:47:58 +00:00
tosa.c i2c: have I2C receive operation return uint8_t 2019-02-27 21:06:08 -06:00
trace-events hw/arm/smmuv3: Add notifications on invalidation 2018-06-26 17:50:42 +01:00
versatilepb.c scsi: move lsi53c8xx_create() callers to lsi53c8xx_handle_legacy_cmdline() 2018-09-25 11:12:25 +10:00
vexpress.c hw/arm/vexpress: Add "virtualization" property controlling presence of EL2 2018-08-24 13:17:35 +01:00
virt-acpi-build.c hw/arm/virt: Rename highmem IO regions 2019-03-05 15:55:09 +00:00
virt.c hw/arm/virt: Dynamic memory map depending on RAM requirements 2019-03-05 15:55:09 +00:00
xilinx_zynq.c hw/arm/xilinx_zynq: Use the ARRAY_SIZE macro 2018-11-02 14:03:33 +00:00
xlnx-versal-virt.c hw/arm: versal: Plug memory leaks 2019-01-07 15:23:46 +00:00
xlnx-versal.c hw/arm: versal: Add a model of Xilinx Versal SoC 2018-11-02 14:10:53 +00:00
xlnx-zcu102.c xlnx-zynqmp: Swap Cortex-R5 for Cortex-R5F 2018-06-22 13:28:38 +01:00
xlnx-zynqmp.c hw/arm/xlnx-zynqmp: Realize cluster after putting RPUs in it 2019-01-29 11:46:05 +00:00
z2.c i2c: have I2C receive operation return uint8_t 2019-02-27 21:06:08 -06:00