qemu/hw
Cédric Le Goater 13df93244e spapr/xive: fix EQ page addresses above 64GB
The high order bits of the address of the OS event queue is stored in
bits [4-31] of word2 of the XIVE END internal structures and the low
order bits in word3. This structure is using Big Endian ordering and
computing the value requires some simple arithmetic which happens to
be wrong. The mask removing bits [0-3] of word2 is applied to the
wrong value and the resulting address is bogus when above 64GB.

Guests with more than 64GB of RAM will allocate pages for the OS event
queues which will reside above the 64GB limit. In this case, the XIVE
device model will wake up the CPUs in case of a notification, such as
IPIs, but the update of the event queue will be written at the wrong
place in memory. The result is uncertain as the guest memory is
trashed and IPI are not delivered.

Introduce a helper xive_end_qaddr() to compute this value correctly in
all places where it is used.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20190508171946.657-3-clg@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-05-29 11:39:44 +10:00
..
9pfs
acpi acpi/pcihp: Add a few more trace points related to unplug 2019-05-20 18:40:02 -04:00
adc
alpha
arm hw/arm/mps2: Use object_initialize_child for correct reference counting 2019-05-24 15:29:02 -03:00
audio
block vhost-user-blk: Add support to reconnect backend 2019-05-20 18:40:02 -04:00
bt
char Mostly bugfixes and cleanups, the most important being 2019-05-17 16:17:34 +01:00
core hw: report invalid disable-legacy|modern usage for virtio-1-only devs 2019-05-20 18:40:02 -04:00
cpu
cris
display hw/display/ramfb: initialize fw-config space with xres/ yres 2019-05-24 09:10:29 +02:00
dma hw/dma: Compile the bcm2835_dma device as common object 2019-04-29 17:36:03 +01:00
gpio
hppa
hyperv
i2c hw/arm: Express dependencies of realview, versatile and vexpress with Kconfig 2019-05-13 09:36:31 +02:00
i386 hw/i386: Implement fw_cfg_arch_key_name() 2019-05-23 14:10:31 +02:00
ide Kconfig settings for the Arm machines 2019-05-13 16:52:56 +01:00
input hw/input: Add a CONFIG_PS2 switch for the ps2.c file 2019-05-15 11:56:53 +02:00
intc spapr/xive: fix EQ page addresses above 64GB 2019-05-29 11:39:44 +10:00
ipack
ipmi
isa hw/ppc/40p: Move the MC146818 RTC to the board where it belongs 2019-05-29 11:39:44 +10:00
lm32
m68k
mem
microblaze hw/microblaze/zynqmp: Use object_initialize_child for correct ref. counting 2019-05-24 15:29:02 -03:00
mips Various testing updates 2019-05-28 17:38:32 +01:00
misc hw/misc/macio: Use object_initialize_child for correct ref. counting 2019-05-24 15:29:02 -03:00
moxie
net Mostly bugfixes and cleanups, the most important being 2019-05-17 16:17:34 +01:00
nios2
nvram hw/nvram/fw_cfg: Store 'reboot-timeout' as little endian 2019-05-23 14:10:31 +02:00
openrisc target/openrisc: Fix LGPL information in the file headers 2019-05-08 17:45:54 +02:00
pci pci: msix: move 'MSIX_CAP_LENGTH' to header file 2019-05-22 17:35:27 +02:00
pci-bridge pci: Simplify pci_bus_is_root() 2019-05-20 18:40:02 -04:00
pci-host hw/pci-host: Use object_initialize_child for correct reference counting 2019-05-02 16:56:33 +02:00
pcmcia
ppc target/ppc: Add ibm,purr and ibm,spurr device-tree properties 2019-05-29 11:39:44 +10:00
rdma Clean up header guards that don't match their file name 2019-05-13 08:58:55 +02:00
riscv riscv: spike: Add a generic spike machine 2019-05-24 12:09:24 -07:00
s390x s390/css: handle CCW_FLAG_SKIP 2019-05-17 08:16:02 +02:00
scsi megasas: fix mapped frame size 2019-05-15 11:56:53 +02:00
sd Clean up header guards that don't match their file name 2019-05-13 08:58:55 +02:00
semihosting semihosting: enable chardev backed output for console 2019-05-28 10:28:50 +01:00
sh4 hw/usb/hcd-ohci: Move PCI-related code into a separate file 2019-05-02 08:42:17 +02:00
smbios
sparc hw/sparc: Implement fw_cfg_arch_key_name() 2019-05-23 14:10:31 +02:00
sparc64 hw/sparc64: Implement fw_cfg_arch_key_name() 2019-05-23 14:10:31 +02:00
ssi
timer grlib, gptimer: get rid of the old-style create function 2019-05-17 09:17:11 +01:00
tpm Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
tricore
unicore32
usb hw/usb: avoid format truncation warning when formatting port name 2019-05-03 08:56:58 +02:00
vfio hw/display/ramfb: initialize fw-config space with xres/ yres 2019-05-24 09:10:29 +02:00
virtio hw/virtio: Use object_initialize_child for correct reference counting 2019-05-24 15:29:02 -03:00
watchdog
xen
xenpv
xtensa Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
Kconfig semihosting: introduce CONFIG_SEMIHOSTING 2019-05-28 10:28:50 +01:00
Makefile.objs semihosting: move semihosting configuration into its own directory 2019-05-28 10:28:50 +01:00