[PATCH 2/2] dmar: Fix dmar interrupt affinity handling

From: Kenji Kaneshige
Date: Tue Nov 30 2010 - 03:33:06 EST


Fix the problem that changing IRQ affinity of dmar fault interrupt
causes "No irq handler for vector (irq XX)" message and dmar fault
interrupts are never notified after that.

The dmar_msi_set_affinity() must configure upper address register of
remapping hardware interrupt in x2apic mode.

Signed-off-by: Kenji Kaneshige <kaneshige.kenji@xxxxxxxxxxxxxx>

---
arch/x86/kernel/apic/io_apic.c | 3 +++
1 file changed, 3 insertions(+)

Index: linux-next-20101125/arch/x86/kernel/apic/io_apic.c
===================================================================
--- linux-next-20101125.orig/arch/x86/kernel/apic/io_apic.c
+++ linux-next-20101125/arch/x86/kernel/apic/io_apic.c
@@ -3413,6 +3413,9 @@ dmar_msi_set_affinity(struct irq_data *d
msg.data |= MSI_DATA_VECTOR(cfg->vector);
msg.address_lo &= ~MSI_ADDR_DEST_ID_MASK;
msg.address_lo |= MSI_ADDR_DEST_ID(dest);
+ msg.address_hi = MSI_ADDR_BASE_HI;
+ if (x2apic_enabled())
+ msg.address_hi |= MSI_ADDR_EXT_DEST_ID(dest);

dmar_msi_write(irq, &msg);



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/