From patchwork Wed Aug 31 06:37:22 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Po Liu X-Patchwork-Id: 664369 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3sPGHj5nxzz9s9c for ; Wed, 31 Aug 2016 16:50:57 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752245AbcHaGu4 (ORCPT ); Wed, 31 Aug 2016 02:50:56 -0400 Received: from mail-bl2nam02on0041.outbound.protection.outlook.com ([104.47.38.41]:6512 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751128AbcHaGuz (ORCPT ); Wed, 31 Aug 2016 02:50:55 -0400 X-Greylist: delayed 167972 seconds by postgrey-1.27 at vger.kernel.org; Wed, 31 Aug 2016 02:50:54 EDT Received: from BN6PR03CA0052.namprd03.prod.outlook.com (10.173.137.14) by BN6PR03MB2434.namprd03.prod.outlook.com (10.168.223.12) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.587.13; Wed, 31 Aug 2016 06:50:51 +0000 Received: from BN1BFFO11FD032.protection.gbl (2a01:111:f400:7c10::1:124) by BN6PR03CA0052.outlook.office365.com (2603:10b6:404:4c::14) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.599.9 via Frontend Transport; Wed, 31 Aug 2016 06:50:51 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; nxp.com; dmarc=fail action=none header.from=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD032.mail.protection.outlook.com (10.58.144.95) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.587.6 via Frontend Transport; Wed, 31 Aug 2016 06:50:52 +0000 Received: from titan.ap.freescale.net ([10.192.208.233]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u7V6n43v013549; Tue, 30 Aug 2016 23:50:47 -0700 From: Po Liu To: , , , CC: Bjorn Helgaas , Shawn Guo , "Marc Zyngier" , Rob Herring , Roy Zang , Mingkai Hu , Stuart Yoder , Yang-Leo Li , Arnd Bergmann , Minghuan Lian , Murali Karicheri , Po Liu Subject: [PATCH v4 2/2] pci:aer: add support aer interrupt with none MSI/MSI-X/INTx mode Date: Wed, 31 Aug 2016 14:37:22 +0800 Message-ID: <1472625442-23309-2-git-send-email-po.liu@nxp.com> X-Mailer: git-send-email 2.1.0.27.g96db324 In-Reply-To: <1472625442-23309-1-git-send-email-po.liu@nxp.com> References: <1465892645-32381-2-git-send-email-po.liu@nxp.com> <1472625442-23309-1-git-send-email-po.liu@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131170998524445653; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(2201001)(86362001)(85426001)(36756003)(50226002)(104016004)(8936002)(87936001)(19580395003)(81156014)(11100500001)(586003)(5003940100001)(4326007)(76176999)(7416002)(356003)(8666005)(50986999)(105606002)(5001770100001)(97736004)(68736007)(2906002)(305945005)(7846002)(5660300001)(47776003)(81166006)(48376002)(92566002)(8676002)(77096005)(626004)(229853001)(106466001)(50466002)(19580405001)(2950100001)(189998001)(33646002)(7059030)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR03MB2434; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD032; 1:6C6paIKx93PSM0XzJbY0ToIVAnrLojBi0j8zyMiQNL3V6SuIx6863xAHJtHMIq9xntdIzD+JGuVYpL5ktzIYRb60n/N32gQeGFKr2FATKnNV4IBWwDfl7j8aIm6Fpdq7FNCFpHm2FqYaO8q1yYanMZpdlno1BpSJLTXkbxkzT51wEpRSj6J73C8m78TjmbzRmaF//+k7kWxIIaYKJzz8suFYiN6/25jmq15LcURJYP8O+BNOm2J0+qO7g62VTBryAbD4m25LUFTw0hqSQs2HbYMxIYmIkCGlm4woTDl3IbbgEGOsWKZglS+9gCB4tfCW7a3GGz5YDfcBXX2q9qk0iukY3mwQie6PzxXP5mN2X16X4INpxRiptfXnWFrf2vClyg9i2TRYGTJvrxQgGZHxUziqqVyHBiY0lHY24barJkyZ3SpcrMidYZUxZ6m9DPkgRpxiMDWuNlWAIqBZBkQyDfJeMdfh0T+kD5gh0TnfoRR6YfrR+k6Kk1mv52Ow6prM2cwR9Pdhzv3qTWMortQGr+Oy6GZL03Pf9swRVAvooEOB44+slN9TVdwORAgyp2ifoAF9vMTkF7+A3h1+59M8HZ34pJJeSqQKjVL+MGYDVkLxJm/mH50V+HMud6o2myOm91ln863bM14YGpilVNC1XG6pP3kckOPyHTc/t2LnnKjYg3riEUmUF3WuKkYojaBNblzPKr/0uKrCGPbNQ8GIzQgGNln997/q4VV6fQz16jx+S7V5ZGsHP479eZiMspu/ MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 0c6bf26f-5994-4154-a274-08d3d16b2656 X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2434; 2:xLrx6DoF7JKOCuVApx1AJiYvEUdr153ga8O0soqAK+g1Cf5Hw/20S+WvrcHMlTPEMkd9nqs4E5QMYK+HQDJuRB2PAteA4vOOvBH4NBYAMMZ9Sg6vqgift/vhFK+K3e/aBLPG93hJux84X8nWP1e/9oiP942oCvDotg3reHONCKZ2H7w1v9J1Lr6cZXGt5Z8h; 3:XpgfiSfITsnT8YivD0NRiTxjjz7yJQVlaXIi+T2+jh2ys9m3ZVaKi/v+gc32rFb3144qmyxoKynoV0rbF7O7nIcQsMjVF+lWm9nmqMEHIMILEwYCoexAkxgqtZx+SuLy/s3Ve09uxK4v+UxO2DmMgDZ19aVxOb4Tzz4dpAMVqA8MPJE5qjJi9yz4LBNZbDL0D2l7SzdEvC8iNffUgPtoSPeetp3ODExYJZD0OnpfKMw=; 25:0EH5INtw25DfTcjgjQT5tNIgRr4YgKVQe6uFF9HAbxqhgcrcWkzlRN8Dh9sCWS6mzx8josY+00igDDVJ3tuYfVdfGAwW8p/Dk27zTMNn2bepVIKrcArqgBNxrnPjmsi3W/OGZRHxCDs01lueO/JDqumpk8Yfd0zPHD88zXWj1L3bTsz+oVvyQDaGLGbekBlNixbY5NLITnKcbrC0vdw4fOik2wctpf0kM25BKL0BI0ZybYZdCUMMDBStVm9cGa3TewZRUTIRBw62pzfZf8ESnqDDHmy87cYv37SqNh1QDon7N1wJ3Awkg90sEs1a046JIE6cGgxtToJBMgwNeS1TTj/IJvKuBXmCdRR3QMs802k0Lr1mF4iluOaX5TZIl10rRXP4RaL4LIUoXUMjSX8PYfVOpdIXvdQ7oJ+NqTKVX4g= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN6PR03MB2434; X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2434; 31:HW/YDCkeNImk7TtP+dgA+T5woWSYvioiuAlg0k/fz2bX7c2hRdpww8QtjdXBpHj33MYjwzLoCSR/rV7JfQyvUdPnnMZbpY4GYQnGi9oCcFwCN1bcOISOuOEvg04Mb1DmTZrE7azC54LfDEGNhegfX5oucr5TgwMISbqtYsdtyels18FeEp0iJWydxYRiu58NqvBqIOPt2KTB4lyKuzd91QUROW99d96QoOwaWi0yCUQ=; 4:Bf7Y1dhkhw5CJ7O8AGyBr/Cly52iMLb0WX4cm5o+g3Y7Bmy5TO9j0ZjbbQWJCTVXF045lF4SdVcT/BUcId2XN76VB7tKR/lrjg1nV9ni7w5qmMoBFBz4kQzb8LzHj/x4fLBizq8THZWp3neJYtloybrc22eQlKbBhREGN+RJlR9b8J9V0vSbGXjwSDlF/vTqmhKAUNCsJwNPzG7UljhenRVhhLLUZz8jmEDviuRdmyli+h96vs1eUeuAXVwAO9GSg4nGv8rNjfa4et1NDetLfU1mbwVqNuoGRCUU0/JtqaoFPo634P5MekK2bFPHufAk7HV/CHY8RAwURL4uRgQvwcX5rMdFzB+MQGSFj9x7C1UT1JMS+C1G8oY39nR6PWBfnJ9sqz0W0kKPmAuGFIpfk4O3xFhCfJdbCTSLO31m/Fe1PQWbGW120pgy0oclUaAm0baOPW0qw0WHvk6CKkmUETOBii4LmRQKGPAdH97DfUy2EI0HoqHhmpdIAggYDcpLRajkwXEao9CHOYGo0LE2Q5x4MzZVvCTu8+FIx4EMTg4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(13015025)(13023025)(13024025)(13018025)(13017025)(8121501046)(5005006)(3002001)(10201501046)(6055026); SRVR:BN6PR03MB2434; BCL:0; PCL:0; RULEID:(400006); SRVR:BN6PR03MB2434; X-Forefront-PRVS: 00514A2FE6 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR03MB2434; 23:R2AA1f/YCvzloJo3hTKP6QDskID8prbdMdZhMH6Uo?= =?us-ascii?Q?TbnLr3Jq1sJHW0Xix6bpjer4RdkYcUmZ5IAmSUlaHxWzFz4nki6bDqPPms9Z?= =?us-ascii?Q?JlXkh8jA5ysmAisyVV7bRxdcr9GPka1QW4Bi4Dwm8jCqbAG4wOSvbv8wIVLb?= =?us-ascii?Q?IgIC40SfrGkwUIY+ZS5dNLtLML7PLrNC3jXGS6j5DJV4yHZsUhKBJTGjXKSf?= =?us-ascii?Q?38X4fXDLxDZGCJBsmnU0C7/9EBWdiPAvN+XOlOz/A/YLb1rz3nLXVvfj97Ot?= =?us-ascii?Q?bqdW74uzFiAPkKbd0eZqhtNZsNu6jxe/mQPr+O2mpZyIcgai42CtSW3zyLzH?= =?us-ascii?Q?E5WTzY8OOXjMtSLJ9UreX+JfE/ZgcnUMU17OsYuSxGPuYYXPMr3oNu9zPtTD?= =?us-ascii?Q?7EDUrf5BRWdy9LHyXK5rnLkoJVoCucn+5RZBambgLVvIKbOht192ylJcLloo?= =?us-ascii?Q?GqlZWWKpqCJu0wzvqMa650beAQj/6AaQZBe4KP/55p1LwMuaZ/c7FwLZdNi1?= =?us-ascii?Q?BI5CDNoAeH++IEkEdzk25J1wzWg+oB8i5UlaD9FX5LFIW8J6U90LAxIbb9FI?= =?us-ascii?Q?KbzBQLqxd5rq2GiOZfwUjup8uszIFdeJweMNudB7G1JEM04ENzOFCPjbNz/D?= =?us-ascii?Q?nwOPRI8lqKM5EBCWeDJCFfNK+dnLFr8xU5lu5gMWnBmAZiBoazf5U2ihv92l?= =?us-ascii?Q?XQPFLi5g8pI0jE/oKfXFhSNUCsjd2a1XdTspAfMDZsnJ9KGDAxug7Y6hdwxY?= =?us-ascii?Q?cAi2CSl4kehWaoJDoESRjFLEO9wqMKhFVc2bFcXE3zuu29h8mXugKOHwk3wt?= =?us-ascii?Q?tRGJYjqqVyJKvrjxcMfbnir092B4dVo+f5YkUw2jfL6NCwS7jsTzaYvv9bim?= =?us-ascii?Q?51fetWLo+ug5yq93g+1dGP7wow91dtrPgKjTsKo60j1qzxArOclROSWYa6Yl?= =?us-ascii?Q?0/q83Fw/4KZeBFh79ldrfdcE2kGbpLKjksZmbGrHws2be7NSrF3cGS9ky78D?= =?us-ascii?Q?X7v7p5r51cr2nM91NEO5P++bYIWmapknwUcTQhUdjNmKDaxOyAHgtkOTLCOu?= =?us-ascii?Q?LXocrXy+SRrDphZGzlE43IERpGtiIglqi5lvvrFX98fAIfMyI3p2vExv220f?= =?us-ascii?Q?dR5LDTjW0+1ppDe9O8hxTfeddPRFWbrVCryLuQGrE/NPpJWS1Lw3moGVmmLk?= =?us-ascii?Q?DmbZ9Jn2AN437FuRA9FUW2EGE34u21lC+n13yfIIsYS/RrfPLrYhEZk/Q=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR03MB2434; 6:ANSYcZe4xM0VyvDJkh3DWiefgl3ZN7GfjhPJFogPKkSTTe2/n9deH3y0430iMWew3Uj3JWlBg/4SJ+zQjTNUbb1qtXTmUd1B/LB3wk9lrF0hCzhLBKbn3PuzkiSSzAAhmIJaO48a+0AKSxjZcNvC5Te9R2NwaCPXg10g2wr7l67o/6l3IR1IJ/jsPiZBwZQgaEdeeX215p+VhDYI0DY706mI9xX/F2Tbp5aTXfky/SypAyX2+Uq9d12C6Figz0MReeQnlUeVbgZNZJJnxfNm4swj1jntVWypZzPdKtdckvo=; 5:E72LxCsymbjcyi4A7nvxKEt684mO1QqTEDg5+/cENFDzO/lufAFBQhQKRl0bmz5jickzmjZRbi9T1iHo8SM58fyJFpUS9LKbgdeI246riSqB8NpnrxvZYuDfR6myKm6EyXqN77aeolkAvUaN5uKBVd4qMH8P1e5WzBknTPr0pqM=; 24:zPEBKDLEth3AbdGYEyV/nrvLmHf2PIaVrF2BhGwd5FUXF5j+gOIRaFcaMuWQd4nECv7ixRk3cTt0nkEOFH9E/j0ebdMomzu3q/n+TIVw8lM=; 7:/Zfe4V9NhvEM7IsKs2kkg/J0i72ZDBkdz9rd5O6yr+1dmOOXQqx3Ce47cSXoIImcyngCcYJhQiVDkSr1u8CP2LDKC4nE0uEv/Myfwmpb0lSGGYdmT7uEVmEqjh3J/xYhXRJ1UtxfzhshgGPuNZW/jv+wbN50ExuM5J4J1a9CYkg4mY8vSeK585lAbhu0zlQtOyCXyrt7fkODxVf50230Y9a1DXQ3qqA3OrIViC04JD3WA0YzwDM1r+DkbEES4SJd SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2016 06:50:52.1481 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR03MB2434 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org On some platforms, root port doesn't support MSI/MSI-X/INTx in RC mode. When chip support the aer interrupt with none MSI/MSI-X/INTx mode, maybe there is interrupt line for aer pme etc. Search the interrupt number in the fdt file. Then fixup the dev->irq with it. Signed-off-by: Po Liu --- Changes for v4: - re-use the patch changes in the root port driver; - add binding information; .../devicetree/bindings/pci/layerscape-pci.txt | 4 +-- drivers/pci/pcie/portdrv_core.c | 31 +++++++++++++++++++--- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/Documentation/devicetree/bindings/pci/layerscape-pci.txt b/Documentation/devicetree/bindings/pci/layerscape-pci.txt index 41e9f55..1dfb1da 100644 --- a/Documentation/devicetree/bindings/pci/layerscape-pci.txt +++ b/Documentation/devicetree/bindings/pci/layerscape-pci.txt @@ -19,7 +19,7 @@ Required properties: - interrupts: A list of interrupt outputs of the controller. Must contain an entry for each entry in the interrupt-names property. - interrupt-names: Must include the following entries: - "intr": The interrupt that is asserted for controller interrupts + "aer": The interrupt that is asserted for aer interrupts - fsl,pcie-scfg: Must include two entries. The first entry must be a link to the SCFG device node The second entry must be '0' or '1' based on physical PCIe controller index. @@ -36,7 +36,7 @@ Example: 0x40 0x00000000 0x0 0x00002000>; /* configuration space */ reg-names = "regs", "config"; interrupts = ; /* controller interrupt */ - interrupt-names = "intr"; + interrupt-names = "aer"; fsl,pcie-scfg = <&scfg 0>; #address-cells = <3>; #size-cells = <2>; diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c index e9270b4..7c4943d 100644 --- a/drivers/pci/pcie/portdrv_core.c +++ b/drivers/pci/pcie/portdrv_core.c @@ -16,6 +16,7 @@ #include #include #include +#include #include "../pci.h" #include "portdrv.h" @@ -200,6 +201,28 @@ static int pcie_port_enable_msix(struct pci_dev *dev, int *vectors, int mask) static int init_service_irqs(struct pci_dev *dev, int *irqs, int mask) { int i, irq = -1; + int ret; + struct device_node *np = NULL; + + for (i = 0; i < PCIE_PORT_DEVICE_MAXSERVICES; i++) + irqs[i] = 0; + + if (dev->bus->dev.of_node) + np = dev->bus->dev.of_node; + + /* If root port doesn't support MSI/MSI-X/INTx in RC mode, + * request irq for aer + */ + if (IS_ENABLED(CONFIG_OF_IRQ) && np && + (mask & PCIE_PORT_SERVICE_PME)) { + ret = of_irq_get_byname(np, "aer"); + if (ret > 0) { + irqs[PCIE_PORT_SERVICE_AER_SHIFT] = ret; + if (dev->irq) + irq = dev->irq; + goto no_msi; + } + } /* * If MSI cannot be used for PCIe PME or hotplug, we have to use @@ -225,11 +248,13 @@ static int init_service_irqs(struct pci_dev *dev, int *irqs, int mask) irq = dev->irq; no_msi: - for (i = 0; i < PCIE_PORT_DEVICE_MAXSERVICES; i++) - irqs[i] = irq; + for (i = 0; i < PCIE_PORT_DEVICE_MAXSERVICES; i++) { + if (!irqs[i]) + irqs[i] = irq; + } irqs[PCIE_PORT_SERVICE_VC_SHIFT] = -1; - if (irq < 0) + if (irq < 0 && irqs[PCIE_PORT_SERVICE_AER_SHIFT] < 0) return -ENODEV; return 0; }