aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2017-03-15 20:58:53 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2017-03-16 17:18:01 +1100
commit2edf94362afb72d22cd49624fabc9a098559961d (patch)
treee6ea3a5de86a9fd7ff4bf92221c6580235073613
parent1d16851e342ffa0d341609a64f7cc991690d092e (diff)
downloadskiboot-2edf94362afb72d22cd49624fabc9a098559961d.zip
skiboot-2edf94362afb72d22cd49624fabc9a098559961d.tar.gz
skiboot-2edf94362afb72d22cd49624fabc9a098559961d.tar.bz2
xive: Don't expose a trigger page when none exist
Otherwise Linux might try to retrigger an escalation interrupt when doing an EOI which will checkstop Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r--hw/xive.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/hw/xive.c b/hw/xive.c
index bb20cb7..fb18661 100644
--- a/hw/xive.c
+++ b/hw/xive.c
@@ -3360,12 +3360,10 @@ static int64_t opal_xive_get_irq_info(uint32_t girq,
if (s->flags & XIVE_SRC_EOI_PAGE1) {
uint64_t p1off = 1ull << (s->esb_shift - 1);
eoi_page = mm_base + p1off;
- trig_page = mm_base;
- } else {
- eoi_page = mm_base;
- if (!(s->flags & XIVE_SRC_STORE_EOI))
+ if (s->flags & XIVE_SRC_TRIGGER_PAGE)
trig_page = mm_base;
- }
+ } else
+ eoi_page = mm_base;
if (out_eoi_page)
*out_eoi_page = eoi_page;