qemu-e2k/hw
Alexey Kardashevskiy 5bb55f3e3b spapr: Use address from elf parser for kernel address
tl;dr: This allows Big Endian zImage booting via -kernel + x-vof=on.

QEMU loads the kernel at 0x400000 by default which works most of
the time as Linux kernels are relocatable, 64bit and compiled with "-pie"
(position independent code). This works for a little endian zImage too.

However a big endian zImage is compiled without -pie, is 32bit, linked to
0x4000000 so current QEMU ends up loading it at
0x4400000 but keeps spapr->kernel_addr unchanged so booting fails.

This uses the kernel address returned from load_elf().
If the default kernel_addr is used, there is no change in behavior (as
translate_kernel_address() takes care of this), which is:
LE/BE vmlinux and LE zImage boot, BE zImage does not.
If the VM created with "-machine kernel-addr=0,x-vof=on", then QEMU
prints a warning and BE zImage boots.

Note #1: SLOF (x-vof=off) still cannot boot a big endian zImage as
SLOF enables MSR_SF for everything loaded by QEMU and this leads to early
crash of 32bit zImage.

Note #2: BE/LE vmlinux images set MSR_SF in early boot so these just work;
a LE zImage restores MSR_SF after every CI call and we are lucky enough
not to crash before the first CI call.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Tested-by: Joel Stanley <joel@jms.id.au>
Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
Message-Id: <20220504065536.3534488-1-aik@ozlabs.ru>
[danielhb: use PRIx64 instead of lx in warn_report]
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2022-05-26 17:11:32 -03:00
..
9pfs virtio: drop name parameter for virtio_init() 2022-05-16 04:38:40 -04:00
acpi acpi/cxl: Introduce CFMWS structures in CEDT 2022-05-13 07:57:26 -04:00
adc hw/adc/zynq-xadc: Use qemu_irq typedef 2022-05-19 16:19:02 +01:00
alpha
arm hw/arm/aspeed: Add i2c devices for AST2600 EVB 2022-05-25 16:22:37 +02:00
audio hw/audio/ac97: Remove unneeded local variables 2022-05-25 21:26:35 +02:00
avr
block hw: m25p80: allow write_enable latch get/set 2022-05-25 10:31:33 +02:00
char virtio: drop name parameter for virtio_init() 2022-05-16 04:38:40 -04:00
core hw/core: loader: Set is_linux to true for VxWorks uImage 2022-05-24 10:38:50 +10:00
cpu
cris
cxl hw/cxl/component Add a dumb HDM decoder handler 2022-05-13 07:57:26 -04:00
display hppa: Artist graphics driver fixes for HP-UX and keyboard fix in firmware boot console 2022-05-18 09:32:15 -07:00
dma ptimer: Rename PTIMER_POLICY_DEFAULT to PTIMER_POLICY_LEGACY 2022-05-19 16:19:03 +01:00
gpio hw/gpio: replace HWADDR_PRIx with PRIx64 2022-05-25 10:31:33 +02:00
hppa machine: use QAPI struct for boot configuration 2022-05-12 12:29:43 +02:00
hyperv util: rename qemu_*block() socket functions 2022-05-03 15:53:20 +04:00
i2c
i386 hw/i386/amd_iommu: Fix IOMMU event log encoding errors 2022-05-16 16:15:40 -04:00
ide ide_ioport_read: Return lower octet of data register instead of 0xFF 2022-05-25 21:26:35 +02:00
input virtio: add vhost support for virtio devices 2022-05-16 04:38:40 -04:00
intc hw/intc: Pass correct hartid while updating mtimecmp 2022-05-24 09:48:20 +10:00
ipack
ipmi
isa Warn user if the vga flag is passed but no vga device is created 2022-05-09 08:21:14 +02:00
m68k ptimer: Rename PTIMER_POLICY_DEFAULT to PTIMER_POLICY_LEGACY 2022-05-19 16:19:03 +01:00
mem mem/cxl_type3: Add read and write functions for associated hostmem. 2022-05-13 07:57:26 -04:00
microblaze
mips Warn user if the vga flag is passed but no vga device is created 2022-05-09 08:21:14 +02:00
misc lasi: move from hw/hppa to hw/misc 2022-05-08 18:52:37 +01:00
net ptimer: Rename PTIMER_POLICY_DEFAULT to PTIMER_POLICY_LEGACY 2022-05-19 16:19:03 +01:00
nios2 hw/nios2: Machine with a Vectored Interrupt Controller 2022-04-26 08:17:05 -07:00
nubus
nvme Clean up header guards that don't match their file name 2022-05-11 16:49:06 +02:00
nvram machine: use QAPI struct for boot configuration 2022-05-12 12:29:43 +02:00
openrisc hw/openrisc: use right OMPIC size variable 2022-05-15 10:33:01 +09:00
pci pci/pcie_port: Add pci_find_port_by_pn() 2022-05-13 07:57:26 -04:00
pci-bridge CXL/cxl_component: Add cxl_get_hb_cstate() 2022-05-13 07:57:26 -04:00
pci-host hw/pci-host/gpex-acpi: Add support for dsdt construction for pxb-cxl 2022-05-13 07:57:26 -04:00
pcmcia
ppc spapr: Use address from elf parser for kernel address 2022-05-26 17:11:32 -03:00
rdma hw/pvrdma: Some cosmetic fixes 2022-04-26 12:25:14 +02:00
remote QIOChannel: Add flags on io_writev and introduce io_flush callback 2022-05-16 13:56:24 +01:00
riscv hw/riscv: virt: Fix interrupt parent for dynamic platform devices 2022-05-24 10:38:50 +10:00
rtc ptimer: Rename PTIMER_POLICY_DEFAULT to PTIMER_POLICY_LEGACY 2022-05-19 16:19:03 +01:00
rx hw/rx: rx-gdbsim DTB load address aligned of 16byte. 2022-04-21 10:06:42 -07:00
s390x machine: use QAPI struct for boot configuration 2022-05-12 12:29:43 +02:00
scsi virtio: add vhost support for virtio devices 2022-05-16 04:38:40 -04:00
sd
sensor
sh4
smbios
sparc machine: make memory-backend a link property 2022-05-12 12:29:44 +02:00
sparc64 machine: use QAPI struct for boot configuration 2022-05-12 12:29:43 +02:00
ssi aspeed/smc: Add AST1030 support 2022-05-02 17:03:03 +02:00
timer ptimer: Rename PTIMER_POLICY_DEFAULT to PTIMER_POLICY_LEGACY 2022-05-19 16:19:03 +01:00
tpm
tricore
usb Clean up header guards that don't match their file name 2022-05-11 16:49:06 +02:00
vfio hw/vfio/pci-quirks: Resolve redundant property getters 2022-05-24 10:38:50 +10:00
virtio vhost-vdpa: change name and polarity for vhost_vdpa_one_time_request() 2022-05-16 16:15:41 -04:00
watchdog aspeed/wdt: Add AST1030 support 2022-05-02 17:03:03 +02:00
xen hw/xen/xen_pt: Resolve igd_passthrough_isa_bridge_create() indirection 2022-05-12 12:07:06 +02:00
xenpv Warn user if the vga flag is passed but no vga device is created 2022-05-09 08:21:14 +02:00
xtensa hw/xtensa: fix reset value of MIROUT register of MX PIC 2022-05-06 15:27:40 -07:00
Kconfig hw/cxl/component: Introduce CXL components (8.1.x, 8.2.5) 2022-05-13 06:13:35 -04:00
meson.build hw/cxl/component: Introduce CXL components (8.1.x, 8.2.5) 2022-05-13 06:13:35 -04:00