Messages in this thread Patch in this message | | | Date | Tue, 30 Nov 2010 17:32:06 +0900 | From | Kenji Kaneshige <> | Subject | [PATCH 2/2] dmar: Fix dmar interrupt affinity handling |
| |
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@jp.fujitsu.com>
--- 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);
| |