diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2017-03-15 20:58:53 +1100 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-03-16 17:18:01 +1100 |
commit | 2edf94362afb72d22cd49624fabc9a098559961d (patch) | |
tree | e6ea3a5de86a9fd7ff4bf92221c6580235073613 | |
parent | 1d16851e342ffa0d341609a64f7cc991690d092e (diff) | |
download | skiboot-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.c | 8 |
1 files changed, 3 insertions, 5 deletions
@@ -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; |