diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2025-05-12 13:10:47 +1000 |
---|---|---|
committer | Cédric Le Goater <clg@redhat.com> | 2025-07-21 08:03:53 +0200 |
commit | 370ea4a4b6fffc30324fc8f8134483e5a749114d (patch) | |
tree | c0d6b2ab5fca700f47b8286a56956f2472b1d1d8 | |
parent | 04627e2206dce95ecda486abf70d0ef7dd9f39f4 (diff) | |
download | qemu-370ea4a4b6fffc30324fc8f8134483e5a749114d.zip qemu-370ea4a4b6fffc30324fc8f8134483e5a749114d.tar.gz qemu-370ea4a4b6fffc30324fc8f8134483e5a749114d.tar.bz2 |
ppc/xive2: Avoid needless interrupt re-check on CPPR set
When CPPR priority is decreased, pending interrupts do not need to be
re-checked if one is already presented because by definition that will
be the highest priority.
This prevents a presented group interrupt from being lost.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Michael Kowal <kowal@linux.ibm.com>
Tested-by: Gautam Menghani <gautam@linux.ibm.com>
Link: https://lore.kernel.org/qemu-devel/20250512031100.439842-39-npiggin@gmail.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
-rw-r--r-- | hw/intc/xive2.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index be945be..531e651 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -1250,7 +1250,9 @@ static void xive2_tctx_set_cppr(XiveTCTX *tctx, uint8_t sig_ring, uint8_t cppr) } /* CPPR priority decreased (higher value) */ - xive2_tctx_process_pending(tctx, sig_ring); + if (!xive_nsr_indicates_exception(sig_ring, nsr)) { + xive2_tctx_process_pending(tctx, sig_ring); + } } void xive2_tm_set_hv_cppr(XivePresenter *xptr, XiveTCTX *tctx, |