From 956a8b69d2eaaf597909ff8b5c16b87085eba440 Mon Sep 17 00:00:00 2001 From: Yaroslav Kurlaev Date: Tue, 6 Jul 2021 22:38:37 +0700 Subject: src/mainboard/emulation/qemu-power9: require hb-mode=on MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "hb-mode" is a -machine flag for QEMU. "hb" stands for Hostboot, which is OpenPower firmware created by IBM. QEMU for PPC64 can run initial program in two different modes: * hb-mode=off with load address 0x00000000 * hb-mode=on with load address 0x08000000 Real hardware always loads firmware at 0x08000000 and coreboot shouldn't require a special build to be run on QEMU. Memory layout is updated to reflect change of load address. Change-Id: I1bdc97a095bd46fccc862985b3bd24f4fa5bc054 Signed-off-by: Yaroslav Kurlaev Signed-off-by: Sergii Dmytruk Reviewed-on: https://review.coreboot.org/c/coreboot/+/57082 Tested-by: build bot (Jenkins) Reviewed-by: Michał Żygowski --- src/mainboard/emulation/qemu-power9/memlayout.ld | 27 +++++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'src/mainboard') diff --git a/src/mainboard/emulation/qemu-power9/memlayout.ld b/src/mainboard/emulation/qemu-power9/memlayout.ld index 42e388951f..8209433020 100644 --- a/src/mainboard/emulation/qemu-power9/memlayout.ld +++ b/src/mainboard/emulation/qemu-power9/memlayout.ld @@ -10,14 +10,25 @@ SECTIONS BOOTBLOCK(0, 32K) - ROMSTAGE(0xf00000, 1M) - STACK(0x1000000, 32K) - RAMSTAGE(0x1008000, 1M) + ROMSTAGE(0x1f00000, 1M) - FMAP_CACHE(0x1108000, 4K) - CBFS_MCACHE(0x1109000, 8K) - TIMESTAMP(0x110b000, 4K) - CBFS_CACHE(0x110c000, 512K) - PRERAM_CBMEM_CONSOLE(0x118c000, 128K) +#if !ENV_RAMSTAGE + STACK(0x2000000, 32K) +#endif + FMAP_CACHE(0x2108000, 4K) + CBFS_MCACHE(0x2109000, 8K) + TIMESTAMP(0x210b000, 4K) + CBFS_CACHE(0x210c000, 512K) + PRERAM_CBMEM_CONSOLE(0x218c000, 128K) + + /* By default all memory addresses are affected by the value of HRMOR + * (Hypervisor Real Mode Offset Register) which is ORed to them. HRMOR + * has initial value of 0x8000000 in QEMU and is changed to 0 in + * ramstage. This means that before ramstage 0 actually points to + * 0x8000000. */ +#if ENV_RAMSTAGE + STACK(0xa000000, 32K) +#endif + RAMSTAGE(0xa008000, 1M) } -- cgit v1.2.3