From patchwork Wed Jan 18 16:46:26 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Agustin Vega-Frias X-Patchwork-Id: 9524253 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 C21696020A for ; Wed, 18 Jan 2017 16:47:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B6D6C28539 for ; Wed, 18 Jan 2017 16:47:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A998C285E7; Wed, 18 Jan 2017 16:47:23 +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=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 637F528539 for ; Wed, 18 Jan 2017 16:47:23 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cTtOK-0000NB-Gw; Wed, 18 Jan 2017 16:47:20 +0000 Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cTtO7-00006x-0I for linux-arm-kernel@lists.infradead.org; Wed, 18 Jan 2017 16:47:08 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id BCA846089D; Wed, 18 Jan 2017 16:46:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1484758008; bh=9qAOz5kjFkYtIAcgjp982PdSaE8CdOFvpEellMFgrjY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KQGgQO4SVc6LATLg7/k0G/TMU+I+Pl8/2iMUDnSLKNEL63b+OPlFf+up9lrWL29GF oab7BHDi8eNKyYexXjAClTa5QxcgBZHNwnPW2aS9O8elpcFznH4AsOjpi1OpEHUcOx yEUWts9LBZ/NTfoF6RziH1Uz60Zde5Wsz18cXwK8= Received: from azshara.qualcomm.com (global_nat1_iad_fw.qualcomm.com [129.46.232.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: agustinv@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id DF5E66085C; Wed, 18 Jan 2017 16:46:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1484758007; bh=9qAOz5kjFkYtIAcgjp982PdSaE8CdOFvpEellMFgrjY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eKJuO7LdaxdYl8OGyZY+XPuTFEPx8d9eYXnRl9jfRcw6W0+h7IL0XPu9sIGJgxl+z hxFB5Xd0b0kZV3hBntU8x1ZM4gwcDOgikLQyz55WGTJcl4w+ZWxwxnlIsjdnHZ31hC 4ahReVjgPkrbIHoB1O/J3nX556jQ3Nxsf+ZoNPV4= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org DF5E66085C Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=agustinv@codeaurora.org From: Agustin Vega-Frias To: linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, rjw@rjwysocki.net, lenb@kernel.org, tglx@linutronix.de, jason@lakedaemon.net, marc.zyngier@arm.com Subject: [PATCH V10 1/3] ACPI: Generic GSI: Do not attempt to map non-GSI IRQs during bus scan Date: Wed, 18 Jan 2017 11:46:26 -0500 Message-Id: <1484757988-23739-2-git-send-email-agustinv@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1484757988-23739-1-git-send-email-agustinv@codeaurora.org> References: <1484757988-23739-1-git-send-email-agustinv@codeaurora.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170118_084707_114799_8E69A36A X-CRM114-Status: GOOD ( 12.48 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: harba@codeaurora.org, lorenzo.pieralisi@arm.com, graeme.gregory@linaro.org, jcm@redhat.com, timur@codeaurora.org, msalter@redhat.com, guohanjun@huawei.com, astone@redhat.com, mlangsdo@redhat.com, cov@codeaurora.org, agross@codeaurora.org, Agustin Vega-Frias , ahs3@redhat.com, charles.garcia-tobin@arm.com MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP ACPI extended IRQ resources may contain a Resource Source field to specify an alternate interrupt controller, attempting to map them as GSIs is incorrect, so just disable the platform resource. Since this field is currently ignored, we make this change conditional on CONFIG_ACPI_GENERIC_GSI to keep the current behavior on x86 platforms, in case some existing ACPI tables are using this incorrectly. Signed-off-by: Agustin Vega-Frias --- drivers/acpi/resource.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c index cb57962..69cd430 100644 --- a/drivers/acpi/resource.c +++ b/drivers/acpi/resource.c @@ -43,6 +43,19 @@ static inline bool acpi_iospace_resource_valid(struct resource *res) acpi_iospace_resource_valid(struct resource *res) { return true; } #endif +#ifdef CONFIG_ACPI_GENERIC_GSI +static inline bool is_gsi(struct acpi_resource_extended_irq *ext_irq) +{ + return ext_irq->resource_source.string_length == 0 && + ext_irq->producer_consumer == ACPI_CONSUMER; +} +#else +static inline bool is_gsi(struct acpi_resource_extended_irq *ext_irq) +{ + return true; +} +#endif + static bool acpi_dev_resource_len_valid(u64 start, u64 end, u64 len, bool io) { u64 reslen = end - start + 1; @@ -470,9 +483,12 @@ bool acpi_dev_resource_interrupt(struct acpi_resource *ares, int index, acpi_dev_irqresource_disabled(res, 0); return false; } - acpi_dev_get_irqresource(res, ext_irq->interrupts[index], + if (is_gsi(ext_irq)) + acpi_dev_get_irqresource(res, ext_irq->interrupts[index], ext_irq->triggering, ext_irq->polarity, ext_irq->sharable, false); + else + acpi_dev_irqresource_disabled(res, 0); break; default: res->flags = 0;