From patchwork Wed Dec 14 22:10:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Agustin Vega-Frias X-Patchwork-Id: 9474763 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 58FB460571 for ; Wed, 14 Dec 2016 22:13:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4AF71286D7 for ; Wed, 14 Dec 2016 22:13:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3F4C0286EB; Wed, 14 Dec 2016 22:13:16 +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=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 05AEC286D7 for ; Wed, 14 Dec 2016 22:13:15 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1cHHm4-0004L8-RE; Wed, 14 Dec 2016 22:11:44 +0000 Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1cHHlk-00043n-Qj for linux-arm-kernel@lists.infradead.org; Wed, 14 Dec 2016 22:11:28 +0000 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 4F6FC615DD; Wed, 14 Dec 2016 22:11:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1481753465; bh=DvpQ6zdAD1d5AW+P0OL6nabGmT6aq0LVk54zR57pXZ0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aThOIjWHRTrI4EjVt0RGMkEzeJRAud4bG3IWaBf4qVQIvh6+WGkQ08csXF5oQ4zzl YxIR31e9O+01m408BswWT8JDbUKSvt0yhP5ZWC5+Srts23KGPmwEfyjZBZwfRJH/T6 JaQgiCFSI3Er7dHrpU0e8ziJFX9/OERD600cKGV4= 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 6D5AA615DD; Wed, 14 Dec 2016 22:11:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1481753464; bh=DvpQ6zdAD1d5AW+P0OL6nabGmT6aq0LVk54zR57pXZ0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=APRvpXsmW+n3PmcDiNqaftjhaKEewO/zz+TDtk4o+ZyhEf5HHgPIhodi1MTDbTRVO XLVizNOdl62saGlwkudY95VvOW0I4shETDegxDzz88AMMgkFF2vuUAyPGJYlsCxc8x KEcqrTt96JMMEC0Oub53Wmyzx9OhAu1sH7FqESaE= DMARC-Filter: OpenDMARC Filter v1.3.1 smtp.codeaurora.org 6D5AA615DD 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=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 V9 1/3] ACPI: Generic GSI: Do not attempt to map non-GSI IRQs during bus scan Date: Wed, 14 Dec 2016 17:10:36 -0500 Message-Id: <1481753438-3905-2-git-send-email-agustinv@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1481753438-3905-1-git-send-email-agustinv@codeaurora.org> References: <1481753438-3905-1-git-send-email-agustinv@codeaurora.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20161214_141125_011258_2690006D X-CRM114-Status: GOOD ( 11.40 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 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 | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c index 56241eb..76ca4e9 100644 --- a/drivers/acpi/resource.c +++ b/drivers/acpi/resource.c @@ -43,6 +43,18 @@ 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; +} +#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 +482,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;