The XIVE object has its own set of qirqs which is to be used when the
XIVE interrupt mode is activated.

Signed-off-by: Cédric Le Goater <c...@kaod.org>
---
 hw/ppc/spapr.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 734706c18cb3..a91ec1c0751a 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3746,8 +3746,12 @@ qemu_irq spapr_irq_get_qirq(sPAPRMachineState *spapr, 
int irq)
 {
     ICSState *ics = spapr->ics;
 
-    if (ics_valid_irq(ics, irq)) {
-        return ics->qirqs[irq - ics->offset];
+    if (spapr_ovec_test(spapr->ov5_cas, OV5_XIVE_EXPLOIT)) {
+        return spapr->xive->qirqs[irq];
+    } else {
+        if (ics_valid_irq(ics, irq)) {
+            return ics->qirqs[irq - ics->offset];
+        }
     }
 
     return NULL;
-- 
2.13.6


Reply via email to