|
[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 |