diff options
author | Alper Nebi Yasak <alpernebiyasak@gmail.com> | 2024-01-09 18:53:02 +0300 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2024-02-15 14:21:32 +0000 |
commit | 39e592aaaacd3509736bcdc130b3112d00404cc9 (patch) | |
tree | 0e509aadccf5977b46b849b461a8f1ad45dfdf05 /src/mainboard/emulation | |
parent | 21af2118072279c8ae1925e70ace9d358df8e416 (diff) |
mainboard/qemu-aarch64: Map entire RAM space as read-write memory
Commit 977b8e83cb0a ("mb/emulation/qemu-aarch64: Add MMU support") adds
MMU support for ARM64 QEMU VMs, but registers a limited 1GiB region for
the DRAM, with a note that ramstage should update it.
However on recent versions of QEMU "virt" VMs, accessing RAM outside
this registered region results in an exception even if the address is
backed by actual RAM. This interferes with RAM detection which catches
these exceptions, effectively limiting us to detecting a maximum 1GiB of
RAM even if more is available.
Register the entire RAM space to MMU instead of just the 1GiB, so that
probing RAM addresses can correctly detect how much RAM we have.
Change-Id: I3afbd27b91ab37304a29a62506f965ac3cfb1c06
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/80321
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Martin L Roth <gaumless@gmail.com>
Diffstat (limited to 'src/mainboard/emulation')
-rw-r--r-- | src/mainboard/emulation/qemu-aarch64/bootblock.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/mainboard/emulation/qemu-aarch64/bootblock.c b/src/mainboard/emulation/qemu-aarch64/bootblock.c index 5fe0888e59..5561d6f2a6 100644 --- a/src/mainboard/emulation/qemu-aarch64/bootblock.c +++ b/src/mainboard/emulation/qemu-aarch64/bootblock.c @@ -10,8 +10,7 @@ void bootblock_mainboard_init(void) /* Everything below DRAM is device memory */ mmu_config_range((void *)0, (uintptr_t)_dram, MA_DEV | MA_RW); - /* Set a dummy value for DRAM. ramstage should update the mapping. */ - mmu_config_range(_dram, 1 * GiB, MA_MEM | MA_RW); + mmu_config_range(_dram, (uintptr_t)CONFIG_DRAM_SIZE_MB * MiB, MA_MEM | MA_RW); mmu_config_range(_ttb, REGION_SIZE(ttb), MA_MEM | MA_S | MA_RW); mmu_config_range(_bootblock, REGION_SIZE(bootblock), MA_MEM | MA_S | MA_RW); |