[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] x86/irq: do not insert IRQ_MSI_EMU in emuirq mappings
Do not use emuirq mappings for MSIs injected by emulated devices. This kind of pirq shares the same emuirq value and is not remapped. Fixes: 88fccdd11ca0 ('xen: event channel remapping for emulated MSIs') Signed-off-by: Xenia Ragiadakou <xenia.ragiadakou@xxxxxxx> --- Question: is there any strong reason why Linux HVM guests still use pirqs? xen/arch/x86/irq.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index f42ad539dc..cdc8dc5a55 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -2684,7 +2684,7 @@ int map_domain_emuirq_pirq(struct domain *d, int pirq, int emuirq) } old_emuirq = domain_pirq_to_emuirq(d, pirq); - if ( emuirq != IRQ_PT ) + if ( (emuirq != IRQ_PT) && (emuirq != IRQ_MSI_EMU) ) old_pirq = domain_emuirq_to_pirq(d, emuirq); if ( (old_emuirq != IRQ_UNBOUND && (old_emuirq != emuirq) ) || @@ -2699,8 +2699,8 @@ int map_domain_emuirq_pirq(struct domain *d, int pirq, int emuirq) if ( !info ) return -ENOMEM; - /* do not store emuirq mappings for pt devices */ - if ( emuirq != IRQ_PT ) + /* do not store emuirq mappings for pt devices and emulated MSIs */ + if ( (emuirq != IRQ_PT) && (emuirq != IRQ_MSI_EMU) ) { int err = radix_tree_insert(&d->arch.hvm.emuirq_pirq, emuirq, radix_tree_int_to_ptr(pirq)); @@ -2753,7 +2753,7 @@ int unmap_domain_pirq_emuirq(struct domain *d, int pirq) info->arch.hvm.emuirq = IRQ_UNBOUND; pirq_cleanup_check(info, d); } - if ( emuirq != IRQ_PT ) + if ( (emuirq != IRQ_PT) && (emuirq != IRQ_MSI_EMU) ) radix_tree_delete(&d->arch.hvm.emuirq_pirq, emuirq); done: -- 2.34.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |