From patchwork Wed Sep 28 18:22:40 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sinan Kaya X-Patchwork-Id: 9354547 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C3D5160757 for ; Wed, 28 Sep 2016 18:26:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B6BB1297A3 for ; Wed, 28 Sep 2016 18:26:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AB1C7297A5; Wed, 28 Sep 2016 18:26:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, T_TVD_MIME_EPI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2E75F297A3 for ; Wed, 28 Sep 2016 18:26:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754082AbcI1S0U (ORCPT ); Wed, 28 Sep 2016 14:26:20 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:45114 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754075AbcI1SWo (ORCPT ); Wed, 28 Sep 2016 14:22:44 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 3B1936165F; Wed, 28 Sep 2016 18:22:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1475086963; bh=wKWkV6FuAd+jZahDpO2JEQA/MHNH5b8CYxyC+eLWt6Y=; h=Subject:To:References:Cc:From:Date:In-Reply-To:From; b=k0KcOCm3aWdIirxSFvzLfDh5zC7zkUmYnqWXJIGGkYvXLhP/m3VoEHnMB9Qq3PWdz wS1umVe4qd/ctKN53P1y/OKt4W7FP2JMNytDijM3Y1qOZTD+yrWmaU1Ocudt8Nrmfs jF5AVyMDsgeVXVyY7VYwKBozJeqa55YJWN1nY3Rw= Received: from [10.228.68.92] (global_nat1_iad_fw.qualcomm.com [129.46.232.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: okaya@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id A576F61568; Wed, 28 Sep 2016 18:22:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1475086962; bh=wKWkV6FuAd+jZahDpO2JEQA/MHNH5b8CYxyC+eLWt6Y=; h=Subject:To:References:Cc:From:Date:In-Reply-To:From; b=a5+EQ4yGrmwHKtLGDAJtGe6t93mOipKW7BhZssqm+OU1q9xkfsxqwxwzZZb1YxoYW VFadx4tl+3AolKIbSpbYf2wXlR8XMK21o6Q/zREI7OepxyYDm/YkAhJyV8QfcrEX2v y7W7oN5gKalsDxQjCYo/E29kAPjmqdTzbA6MplRk= DMARC-Filter: OpenDMARC Filter v1.3.1 smtp.codeaurora.org A576F61568 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=pass smtp.mailfrom=okaya@codeaurora.org Subject: Re: 4.7 regression: ACPI: No IRQ available for PCI Interrupt Link [LNKD]. Try pci=noacpi or acpi=off To: Ondrej Zary References: <201609251512.05657.linux@rainbow-software.org> <201609281032.35190.linux@rainbow-software.org> <201609281902.31500.linux@rainbow-software.org> Cc: "Rafael J. Wysocki" , linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-pci@vger.kernel.org, Bjorn Helgaas From: Sinan Kaya Message-ID: <76303bb8-7ae2-9a6b-8e5d-a144ae7c6009@codeaurora.org> Date: Wed, 28 Sep 2016 14:22:40 -0400 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 MIME-Version: 1.0 In-Reply-To: <201609281902.31500.linux@rainbow-software.org> Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On 9/28/2016 1:02 PM, Ondrej Zary wrote: >> Thanks, It sounds like you have more than one machine with similar >> > problems. Can you collect the log from the other machines with 4.8-rc8? >> > >> > and also a boot log with 4.6 kernel where things are working? > The attached logs are from another machine: > > dmesg-bad-debug.txt: 4.8-rc8 with your debug patch - bad > > dmesg-reverted.txt: 4.8-rc8 with patches (as per Rafael's suggestion) > reverted - good > > dmesg-3.6.txt: 4.6 (Debian kernel) - good I think I see a race condition for the SCI interrupt. I need another dump from 4.8-rc8 with the attached patch to confirm. Let's remove the previous one and apply this one. diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c index c983bf7..92a6506 100644 --- a/drivers/acpi/pci_link.c +++ b/drivers/acpi/pci_link.c @@ -508,6 +508,8 @@ static int acpi_irq_get_penalty(int irq) penalty += PIRQ_PENALTY_ISA_ALWAYS; else penalty += PIRQ_PENALTY_PCI_USING; + + pr_info("%s:%d adding SCI penalty: 0x%x \n", __func__, __LINE__, penalty); } if (irq < ACPI_MAX_ISA_IRQS) @@ -592,6 +594,10 @@ static int acpi_pci_link_allocate(struct acpi_pci_link *link) else irq = link->irq.possible[link->irq.possible_count - 1]; + pr_info("irq : %d\n", irq); + pr_info("acpi_irq_balance : %d\n", acpi_irq_balance); + pr_info("link->irq.active : %d\n", link->irq.active); + pr_info("acpi_gbl_FADT.sci_interrupt : %d\n", acpi_gbl_FADT.sci_interrupt); if (acpi_irq_balance || !link->irq.active) { /* * Select the best IRQ. This is done in reverse to promote @@ -599,11 +605,22 @@ static int acpi_pci_link_allocate(struct acpi_pci_link *link) */ for (i = (link->irq.possible_count - 1); i >= 0; i--) { if (acpi_irq_get_penalty(irq) > - acpi_irq_get_penalty(link->irq.possible[i])) + acpi_irq_get_penalty(link->irq.possible[i])) { + pr_info("acpi_irq_get_penalty(%d) : 0x%x\n", link->irq.possible[i], acpi_irq_get_penalty(link->irq.possible[i])); + pr_info("acpi_irq_get_penalty(%d) : 0x%x\n", irq, acpi_irq_get_penalty(irq)); irq = link->irq.possible[i]; + } } } if (acpi_irq_get_penalty(irq) >= PIRQ_PENALTY_ISA_ALWAYS) { + for (i = (link->irq.possible_count - 1); i >= 0; i--) { + pr_info("penalty[%d] = 0x%x\n", + link->irq.possible[i], + acpi_irq_get_penalty(link->irq.possible[i])); + } + pr_info("irq : %d\n", irq); + pr_info("acpi_gbl_FADT.sci_interrupt : %d\n", acpi_gbl_FADT.sci_interrupt); + printk(KERN_ERR PREFIX "No IRQ available for %s [%s]. " "Try pci=noacpi or acpi=off\n", acpi_device_name(link->device), @@ -870,9 +887,12 @@ static int __init acpi_irq_penalty_update(char *str, int used) */ void acpi_penalize_isa_irq(int irq, int active) { - if ((irq >= 0) && (irq < ARRAY_SIZE(acpi_isa_irq_penalty))) + if ((irq >= 0) && (irq < ARRAY_SIZE(acpi_isa_irq_penalty))) { acpi_isa_irq_penalty[irq] = acpi_irq_get_penalty(irq) + (active ? PIRQ_PENALTY_ISA_USED : PIRQ_PENALTY_PCI_USING); + pr_info("%s:%d acpi_isa_irq_penalty[%d]=0x%x active = %d\n", __func__, + __LINE__, irq, acpi_irq_get_penalty(irq), active); + } } bool acpi_isa_irq_available(int irq)