Messages in this thread Patch in this message | | | From | Jiang Liu <> | Subject | [Bugfix] x86, irq: Fix a regression caused by commit b5dc8e6c21e7 | Date | Sun, 9 Aug 2015 16:15:20 +0800 |
| |
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 times out when executing SATA commands. This regression bisects to 52f518a3a7c2 ("x86/MSI: Use hierarchical irqdomains to manage MSI interrupts"), but it's not the root cause, it just triggers a bug caused by b5dc8e6c21e7 ("x86/irq: Use hierarchical irqdomain to manage CPU interrupt vectors").
With this patch applied, the affected SATA controllers work as expected.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com> Reported-by: Alex Deucher <alexdeucher@gmail.com> Reported-by: Mark Rustad <mrustad@gmail.com> Reported-by: Alexander Holler <holler@ahsoftware.de> --- Hi Alex, Mark and Alexandler, Sorry for the long delay to root cause this regression, it's really annoying. Could you please help test this patch against the latest v4.2-rcx? Thanks! Gerry --- arch/x86/kernel/apic/vector.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/kernel/apic/vector.c b/arch/x86/kernel/apic/vector.c index f813261d9740..2683f36e4e0a 100644 --- a/arch/x86/kernel/apic/vector.c +++ b/arch/x86/kernel/apic/vector.c @@ -322,7 +322,7 @@ static int x86_vector_alloc_irqs(struct irq_domain *domain, unsigned int virq, irq_data->chip = &lapic_controller; irq_data->chip_data = data; irq_data->hwirq = virq + i; - err = assign_irq_vector_policy(virq, irq_data->node, data, + err = assign_irq_vector_policy(virq + i, irq_data->node, data, info); if (err) goto error; -- 1.7.10.4
| |