Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754966AbbG3Iz6 (ORCPT ); Thu, 30 Jul 2015 04:55:58 -0400 Received: from mga02.intel.com ([134.134.136.20]:62853 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754562AbbG3Izz (ORCPT ); Thu, 30 Jul 2015 04:55:55 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,576,1432623600"; d="scan'208";a="738658751" Subject: Re: [Bugfix] x86, irq: Fix regression caused by commit d32932d02e18 To: Thomas Gleixner References: <1438242695-23531-1-git-send-email-jiang.liu@linux.intel.com> Cc: Ingo Molnar , Matt Fleming , Chen Yu , "H. Peter Anvin" , x86@kernel.org, Yinghai Lu , Tony Luck , linux-kernel@vger.kernel.org From: Jiang Liu Organization: Intel Message-ID: <55B9E686.3090209@linux.intel.com> Date: Thu, 30 Jul 2015 16:55:34 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2081 Lines: 46 On 2015/7/30 16:33, Thomas Gleixner wrote: > On Thu, 30 Jul 2015, Jiang Liu wrote: > >> 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; > > Pretty obvious, but I was staring at this very piece of code for hours > without spotting it. You have given me the most valuable hints about the difference in irq flow handler:) -- 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/