[Skiboot] [PATCH 11/16] xive: Don't try to EOI a masked source
Benjamin Herrenschmidt
benh at kernel.crashing.org
Thu Nov 10 18:34:47 AEDT 2016
It will just generate spurious powerbus traffic and ESB state
changes.
Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
---
hw/xive.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/hw/xive.c b/hw/xive.c
index 33c8fe2..69b5738 100644
--- a/hw/xive.c
+++ b/hw/xive.c
@@ -1563,9 +1563,21 @@ static void xive_source_eoi(struct irq_source *is, uint32_t isn)
{
struct xive_src *s = container_of(is, struct xive_src, is);
uint32_t idx = isn - s->esb_base;
+ struct xive_ive *ive;
void *mmio_base;
uint64_t eoi_val;
+ /* Grab the IVE */
+ ive = s->xive->ivt_base;
+ if (!ive)
+ return;
+ ive += GIRQ_TO_IDX(isn);
+
+ /* If it's invalid or masked, don't do anything */
+ if ((ive->w & IVE_MASKED) || !(ive->w & IVE_VALID))
+ return;
+
+ /* Grab MMIO control address for that ESB */
mmio_base = s->esb_mmio + (1ull << s->esb_shift) * idx;
/* If the XIVE supports the new "store EOI facility, use it */
--
2.7.4
More information about the Skiboot
mailing list