powerpc/xive: Add interrupt flag to disable automatic EOI
This will be used by KVM in order to keep escalation interrupts in the non-EOI (masked) state after they fire. They will be re-enabled directly in HW by KVM when needed. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
12c1f339cd
commit
7f1c410da5
@ -58,6 +58,9 @@ struct xive_irq_data {
|
|||||||
#define XIVE_IRQ_FLAG_EOI_FW 0x10
|
#define XIVE_IRQ_FLAG_EOI_FW 0x10
|
||||||
#define XIVE_IRQ_FLAG_H_INT_ESB 0x20
|
#define XIVE_IRQ_FLAG_H_INT_ESB 0x20
|
||||||
|
|
||||||
|
/* Special flag set by KVM for excalation interrupts */
|
||||||
|
#define XIVE_IRQ_NO_EOI 0x80
|
||||||
|
|
||||||
#define XIVE_INVALID_CHIP_ID -1
|
#define XIVE_INVALID_CHIP_ID -1
|
||||||
|
|
||||||
/* A queue tracking structure in a CPU */
|
/* A queue tracking structure in a CPU */
|
||||||
|
@ -367,7 +367,8 @@ static void xive_irq_eoi(struct irq_data *d)
|
|||||||
* EOI the source if it hasn't been disabled and hasn't
|
* EOI the source if it hasn't been disabled and hasn't
|
||||||
* been passed-through to a KVM guest
|
* been passed-through to a KVM guest
|
||||||
*/
|
*/
|
||||||
if (!irqd_irq_disabled(d) && !irqd_is_forwarded_to_vcpu(d))
|
if (!irqd_irq_disabled(d) && !irqd_is_forwarded_to_vcpu(d) &&
|
||||||
|
!(xd->flags & XIVE_IRQ_NO_EOI))
|
||||||
xive_do_source_eoi(irqd_to_hwirq(d), xd);
|
xive_do_source_eoi(irqd_to_hwirq(d), xd);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user