Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754940AbbG3HuN (ORCPT ); Thu, 30 Jul 2015 03:50:13 -0400 Received: from mga14.intel.com ([192.55.52.115]:34161 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754854AbbG3HuK (ORCPT ); Thu, 30 Jul 2015 03:50:10 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,576,1432623600"; d="scan'208";a="773058089" From: Jiang Liu To: Thomas Gleixner , Ingo Molnar , Matt Fleming , Chen Yu , "H. Peter Anvin" , x86@kernel.org, Jiang Liu , Yinghai Lu Cc: Tony Luck , linux-kernel@vger.kernel.org Subject: [Bugfix] x86, irq: Fix regression caused by commit d32932d02e18 Date: Thu, 30 Jul 2015 15:51:32 +0800 Message-Id: <1438242695-23531-1-git-send-email-jiang.liu@linux.intel.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1730 Lines: 42 Commit d32932d02e18 ("x86/irq: Convert IOAPIC to use hierarchical irqdomain interfaces") introduced a regression when converting IOAPIC to hierarchy irqdomain, which sets wrong irq flow handler for IOAPIC pins on Surface Pro 3 and causes failure when detecting I2C controllers. It's caused by using stale attribute value when setting up IOAPIC pins. With this patch applied, all IOAPIC IRQ configuration are identical to v4.1 on Surface Pro 3. Fixes: d32932d02e18 ("x86/irq: Convert IOAPIC to use hierarchical irqdomain interfaces") Reported-by: Matt Fleming Tested-and-reported-by: Chen Yu Signed-off-by: Jiang Liu --- Hi Matt, Could you please help to test this patch? Thanks! Gerry --- arch/x86/kernel/apic/io_apic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index 845dc0df2002..206052e55517 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -943,7 +943,7 @@ static bool mp_check_pin_attr(int irq, struct irq_alloc_info *info) */ if (irq < nr_legacy_irqs() && data->count == 1) { if (info->ioapic_trigger != data->trigger) - mp_register_handler(irq, data->trigger); + mp_register_handler(irq, info->ioapic_trigger); data->entry.trigger = data->trigger = info->ioapic_trigger; data->entry.polarity = data->polarity = info->ioapic_polarity; } -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/