aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorCédric Le Goater <clg@kaod.org>2019-06-12 18:23:57 +0200
committerDavid Gibson <david@gibson.dropbear.id.au>2019-07-02 09:43:58 +1000
commite1a9b7d1fcc1f41c917c0306bd1f2adf0d5d8e1e (patch)
treea23c17677459ae9561044efae4da4a6bed0339a3 /hw
parentb87a0100cde349a977a19969660660bcb84720be (diff)
downloadqemu-e1a9b7d1fcc1f41c917c0306bd1f2adf0d5d8e1e.zip
qemu-e1a9b7d1fcc1f41c917c0306bd1f2adf0d5d8e1e.tar.gz
qemu-e1a9b7d1fcc1f41c917c0306bd1f2adf0d5d8e1e.tar.bz2
ppc/pnv: fix StoreEOI activation
The firmware (skiboot) of the PowerNV machines can configure the XIVE interrupt controller to activate StoreEOI on the ESB pages of the interrupts. This feature lets software do an EOI with a store instead of a load. It is not activated today on P9 for rare race condition issues but it should be on future processors. Nevertheless, QEMU has a model for StoreEOI which can be used today by experimental firmwares. But, the use of object_property_set_int() in the PnvXive model is incorrect and crashes QEMU. Replace it with a direct access to the ESB flags of the XiveSource object modeling the internal sources of the interrupt controller. Signed-off-by: Cédric Le Goater <clg@kaod.org> Message-Id: <20190612162357.29566-1-clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'hw')
-rw-r--r--hw/intc/pnv_xive.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/hw/intc/pnv_xive.c b/hw/intc/pnv_xive.c
index a55c2bb..9ab77fe 100644
--- a/hw/intc/pnv_xive.c
+++ b/hw/intc/pnv_xive.c
@@ -781,8 +781,7 @@ static void pnv_xive_ic_reg_write(void *opaque, hwaddr offset,
* support recently though)
*/
if (val & (VC_SBC_CONF_CPLX_CIST | VC_SBC_CONF_CIST_BOTH)) {
- object_property_set_int(OBJECT(&xive->ipi_source),
- XIVE_SRC_STORE_EOI, "flags", &error_fatal);
+ xive->ipi_source.esb_flags |= XIVE_SRC_STORE_EOI;
}
break;