summary refs log tree commit diff stats
path: root/hw/intc
diff options
context:
space:
mode:
authorCédric Le Goater <clg@kaod.org>2019-07-18 13:54:10 +0200
committerDavid Gibson <david@gibson.dropbear.id.au>2019-08-21 17:17:39 +1000
commitad31e2d242399bdaa300b940bbef253331c92ec3 (patch)
tree68d3f3b6e03764a5889d2bc50bdd35eb9200174f /hw/intc
parent53e934921d660be951167fccad4b6302c4633486 (diff)
downloadfocaccia-qemu-ad31e2d242399bdaa300b940bbef253331c92ec3.tar.gz
focaccia-qemu-ad31e2d242399bdaa300b940bbef253331c92ec3.zip
ppc/xive: Provide silent escalation support
When the 's' bit is set the escalation is said to be 'silent' or
'silent/gather'. In such configuration, the notification sequence is
skipped and only the escalation sequence is performed. This is used to
configure all the EQs of a vCPU to escalate on a single EQ which will
then target the hypervisor.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20190718115420.19919-8-clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'hw/intc')
-rw-r--r--hw/intc/xive.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/hw/intc/xive.c b/hw/intc/xive.c
index 3fe84f3e76..dd7d02dfdf 100644
--- a/hw/intc/xive.c
+++ b/hw/intc/xive.c
@@ -1486,6 +1486,13 @@ static void xive_router_end_notify(XiveRouter *xrtr, uint8_t end_blk,
     }
 
     /*
+     * When the END is silent, we skip the notification part.
+     */
+    if (xive_end_is_silent_escalation(&end)) {
+        goto do_escalation;
+    }
+
+    /*
      * The W7 format depends on the F bit in W6. It defines the type
      * of the notification :
      *
@@ -1564,6 +1571,7 @@ static void xive_router_end_notify(XiveRouter *xrtr, uint8_t end_blk,
          */
     }
 
+do_escalation:
     /*
      * If activated, escalate notification using the ESe PQ bits and
      * the EAS in w4-5