]> git.baikalelectronics.ru Git - kernel.git/commit
x86/irq: Build correct vector mapping for multiple MSI interrupts
authorJiang Liu <jiang.liu@linux.intel.com>
Tue, 18 Aug 2015 15:20:20 +0000 (23:20 +0800)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 18 Aug 2015 16:18:55 +0000 (18:18 +0200)
commit2107827d059c5532da04507401074fd92b0139b3
treed26355011fff8276809ebe8ddb499fe7e44005c8
parentff9ff5928b315db192e09e305930514b1db4868c
x86/irq: Build correct vector mapping for multiple MSI interrupts

Alex Deucher, Mark Rustad and Alexander Holler reported a regression
with the latest v4.2-rc4 kernel, which breaks some SATA controllers.
With multi-MSI capable SATA controllers, only the first port works,
all other ports time out when executing SATA commands.

This happens because the first argument to assign_irq_vector_policy()
is always the base linux irq number of the multi MSI interrupt block,
so all subsequent vector assignments operate on the base linux irq
number, so all MSI irqs are handled as the first irq number. Therefor
the other MSI irqs of a device are never set up correctly and never
fire.

Add the loop iterator to the base irq number so all vectors are
assigned correctly.

Fixes: bba1808ba7e3 "x86/irq: Use hierarchical irqdomain to manage CPU interrupt vectors"
Reported-and-tested-by: Alex Deucher <alexdeucher@gmail.com>
Reported-and-tested-by: Mark Rustad <mrustad@gmail.com>
Reported-and-tested-by: Alexander Holler <holler@ahsoftware.de>
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Tony Luck <tony.luck@intel.com>
Link: http://lkml.kernel.org/r/1439911228-9880-1-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/apic/vector.c