lkml.org 
[lkml]   [2014]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[Patch v7 03/18] ACPI, irq, x86: Return IRQ instead of GSI in mp_register_gsi()
    Date
    The GSI for ACPI SCI may be shared with other devices. For example,

    Function mp_register_gsi() should return IRQ number, so fix a regression
    by returning mp_map_gsi_to_irq(gsi, 0) instead of gsi.

    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

    Reported-and-Tested-by: Daniel Robbins <drobbins@funtoo.org>
    Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
    Cc: <stable@vger.kernel.org> # 3.17
    ---
    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 eceba9d9e116..e077c080a519 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;
    --
    1.7.10.4


    \
     
     \ /
      Last update: 2014-10-27 07:01    [W:4.130 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site