qemu/include/hw/ppc
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
..
fdt.h target/ppc: Pass cpu instead of env to ppc_create_page_sizes_prop() 2018-04-27 18:05:22 +10:00
mac_dbdma.h mac_dbdma: remove DBDMA_init() function 2017-09-27 13:05:41 +10:00
openpic.h mac_newworld: simplify IRQ wiring 2018-12-21 09:24:23 +11:00
openpic_kvm.h openpic: move KVM-specific declarations into separate openpic_kvm.h file 2018-03-06 13:16:29 +11:00
pnv.h Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
pnv_core.h Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
pnv_lpc.h Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
pnv_occ.h Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
pnv_psi.h Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
pnv_xive.h ppc/pnv: add a XIVE interrupt controller model for POWER9 2019-03-12 14:33:04 +11:00
pnv_xscom.h Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
ppc.h ppc: externalize ppc_get_vcpu_by_pir() 2019-03-12 14:33:04 +11:00
ppc4xx.h ppc4xx: Use ram_addr_t in ppc4xx_sdram_adjust() 2019-02-04 18:44:17 +11:00
ppc_e500.h intc/openpic: Build openpic only once 2013-07-09 21:33:02 +02:00
spapr.h ppc/hash64: Rework R and C bit updates 2019-04-26 11:37:57 +10:00
spapr_cpu_core.h spapr: Use CamelCase properly 2019-03-12 14:33:05 +11:00
spapr_drc.h spapr: Use CamelCase properly 2019-03-12 14:33:05 +11:00
spapr_irq.h spapr: Use CamelCase properly 2019-03-12 14:33:05 +11:00
spapr_ovec.h Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
spapr_rtas.h tests: add RTAS command in the protocol 2016-09-23 10:29:40 +10:00
spapr_vio.h spapr: Use CamelCase properly 2019-03-12 14:33:05 +11:00
spapr_xive.h spapr: Use CamelCase properly 2019-03-12 14:33:05 +11:00
xics.h xics: Write source state to KVM at claim time 2019-02-26 09:21:25 +11:00
xics_spapr.h spapr: Use CamelCase properly 2019-03-12 14:33:05 +11:00
xive.h ppc/pnv: export the xive_router_notify() routine 2019-03-12 14:33:04 +11:00
xive_regs.h spapr/xive: fix EQ page addresses above 64GB 2019-05-29 11:39:44 +10:00