Commit-ID: 91d0639923526b8f312a4d865451934ab67e7730 Gitweb: http://git.kernel.org/tip/91d0639923526b8f312a4d865451934ab67e7730 Author: Jiang Liu <jiang....@linux.intel.com> AuthorDate: Mon, 27 Oct 2014 13:21:33 +0800 Committer: Thomas Gleixner <t...@linutronix.de> CommitDate: Tue, 28 Oct 2014 19:50:50 +0100
ACPI, irq, x86: Return IRQ instead of GSI in mp_register_gsi() Function mp_register_gsi() returns blindly the GSI number for the ACPI SCI interrupt. That causes a regression when the GSI for ACPI SCI is shared with other devices. The regression was caused by commit 84245af7297ced9e8fe "x86, irq, ACPI: Change __acpi_register_gsi to return IRQ number instead of GSI" and exposed on a SuperMicro system, which shares one GSI between ACPI SCI and PCI device, with following failure: http://sourceforge.net/p/linux1394/mailman/linux1394-user/?viewmonth=201410 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 20 low level) [ 2.699224] firewire_ohci 0000:06:00.0: failed to allocate interrupt 20 Return mp_map_gsi_to_irq(gsi, 0) instead of the GSI number. Reported-and-Tested-by: Daniel Robbins <drobb...@funtoo.org> Signed-off-by: Jiang Liu <jiang....@linux.intel.com> Cc: Konrad Rzeszutek Wilk <konrad.w...@oracle.com> Cc: Tony Luck <tony.l...@intel.com> Cc: Joerg Roedel <j...@8bytes.org> Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org> Cc: Benjamin Herrenschmidt <b...@kernel.crashing.org> Cc: Rafael J. Wysocki <r...@rjwysocki.net> Cc: Bjorn Helgaas <bhelg...@google.com> Cc: Randy Dunlap <rdun...@infradead.org> Cc: Yinghai Lu <ying...@kernel.org> Cc: Borislav Petkov <b...@alien8.de> Cc: Len Brown <len.br...@intel.com> Cc: Pavel Machek <pa...@ucw.cz> Cc: <sta...@vger.kernel.org> # 3.17 Link: http://lkml.kernel.org/r/1414387308-27148-4-git-send-email-jiang....@linux.intel.com Signed-off-by: Thomas Gleixner <t...@linutronix.de> --- arch/x86/kernel/acpi/boot.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index d5c8872..a142e77 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c @@ -397,7 +397,7 @@ static int mp_register_gsi(struct device *dev, u32 gsi, int trigger, /* Don't set up the ACPI SCI because it's already set up */ if (acpi_gbl_FADT.sci_interrupt == gsi) - return gsi; + return mp_map_gsi_to_irq(gsi, IOAPIC_MAP_ALLOC); trigger = trigger == ACPI_EDGE_SENSITIVE ? 0 : 1; polarity = polarity == ACPI_ACTIVE_HIGH ? 0 : 1; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/