From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754032AbcINFec (ORCPT ); Wed, 14 Sep 2016 01:34:32 -0400 Received: from mail-bn3nam01on0076.outbound.protection.outlook.com ([104.47.33.76]:18080 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750810AbcINFe2 (ORCPT ); Wed, 14 Sep 2016 01:34:28 -0400 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; ti.com; dkim=none (message not signed) header.d=none;ti.com; dmarc=bestguesspass action=none header.from=xilinx.com; From: Bharat Kumar Gogada To: Bjorn Helgaas , Marc Zyngier CC: "robh@kernel.org" , "bhelgaas@google.com" , "colin.king@canonical.com" , Soren Brinkmann , Michal Simek , "arnd@arndb.de" , "linux-arm-kernel@lists.infradead.org" , "linux-pci@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Ravikiran Gummaluri , "Ley Foon Tan" , Thomas Petazzoni , Kishon Vijay Abraham I , Murali Karicheri Subject: RE: [PATCH 3/3] PCI: Xilinx NWL PCIe: Fix Error for multi function device for legacy interrupts. Thread-Topic: [PATCH 3/3] PCI: Xilinx NWL PCIe: Fix Error for multi function device for legacy interrupts. Thread-Index: AQHSAqrdY8Zj+O9d0E2xRiMSs6E3q6Bg5aOAgACfgzD//45TAIABrX2A//+gVoCAAbOx0IAR4lSAgAChtgCAAHv5gIAACA8AgAFvzEA= Date: Wed, 14 Sep 2016 05:34:19 +0000 Message-ID: <8520D5D51A55D047800579B094147198258D6182@XAP-PVEXMBX01.xlnx.xilinx.com> References: <1472553558-27215-3-git-send-email-bharatku@xilinx.com> <57C57975.7040306@arm.com> <8520D5D51A55D047800579B094147198258D239D@XAP-PVEXMBX01.xlnx.xilinx.com> <57C59FE8.30307@arm.com> <8520D5D51A55D047800579B094147198258D28AF@XAP-PVEXMBX01.xlnx.xilinx.com> <57C6B7F1.5000001@arm.com> <8520D5D51A55D047800579B094147198258D2C99@XAP-PVEXMBX01.xlnx.xilinx.com> <20160912220241.GG23532@localhost> <57D7ADA8.5060201@arm.com> <20160913150511.GC27748@localhost> <20160913153402.GA4138@localhost> In-Reply-To: <20160913153402.GA4138@localhost> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.23.95.185] Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.0.0.1202-22572.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.100;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(55674003)(199003)(189002)(24454002)(8676002)(7696004)(6116002)(11100500001)(93886004)(189998001)(33656002)(626004)(47776003)(55846006)(8746002)(5660300001)(7846002)(81156014)(356003)(8936002)(8666005)(7416002)(81166006)(87936001)(63266004)(305945005)(5001770100001)(7736002)(586003)(102836003)(4326007)(97756001)(50986999)(3846002)(2906002)(76176999)(23726003)(5250100002)(54356999)(2950100001)(19580395003)(19580405001)(2900100001)(106116001)(86362001)(50466002)(92566002)(106466001)(46406003)(2920100001)(7059030)(107986001)(5001870100001);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR02MB1694;H:xsj-pvapsmtpgw02;FPR:;SPF:Pass;PTR:unknown-60-100.xilinx.com,xapps1.xilinx.com;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;SN1NAM02FT013;1:y6X8V5d+7A4uDeGEoal+PMmZqt5+ezdVhQ6Cwg8QmSZiEbGqTS7oVGTLJnOYvNhBtav83YHK3q4Se0PIsKtLeXg4SZVxSFFyee7foA57dCUs9lCTbJO5Fi2TGJCGcAupm6aGBTKvXzvg8sjT8DJ4OndeV1P3VH0dXeZxwsBj+CzC8J7KrZ/RAXUPNX5fELMSJUqbMt/AVhfnZWzwOi2dhECg5gssL0IbTElCDYjCUbsQIk0+qgSIyiEumQJKmm39dqOeRnNkXF7UtzIz4zpkdgDlnNezuCTzMP7jljwr+l/9FH63LxboEh/rlyU7J42sBe7ee3I0hCBPkwj1DbReBPU/jriwwG1aJEOI+A1JoncCKhatUVp+kZNCRedBdRcPW3gl7qHoB7nqQibo+8NPOrmakUHLsNRfPjOYLGepAqyTrjKbCCiVHqt1Gl/5PQOGkC2ZrBwJxZXCSlmxQKF9NpyW4vAjpWHmrJMhqLcdu4peCpwOkGHQOzNRJy2H4T/khV5//olLY1sRTFqMxU/E6cdAi3biAAPm4He0wMVh3uCGHgo0DJEF0Q3aQAvoxWwW9mh/5Xic9Os59FyTzU0vjo7cdsmPJqyGQG7tgqcH8sClZVUEw9YZeo1d1pw2WaXnp8KUsgrm2EXFyQcn5OgkUQ== X-MS-Office365-Filtering-Correlation-Id: 5b00a994-7dbc-44d2-21ab-08d3dc60ca25 X-Microsoft-Exchange-Diagnostics: 1;SN1PR02MB1694;2:tu0Cgj1xDi4kclh4kaaICALC/erHiOM3ln9+37U7nLPQxU1nTgTeobXJLswobiHWjW/pdFRdeQvgPubGEcitKojSIx1rqkWzEVOmmfhes5rlOwhdqGautwXoJAwQ3cht9L2a+vtq7oYv6mhd8O9BX8V2Pcy95GGAwm1RZRAJPImRxv1cvrqjuvsNFwq5D6gA;3:VZRIvp9k+lTiv8QP/zIp8AXIwio0RvP2T2dXhxN0KVmViYyOPi4y5i6FFqPEFLEr/x881h6r5hXT9dXGnEkV33hJm8zWn30CY0n/WZ9Kb9A8oLzb+EvCAfi/fjob5l0gljeIqijoxQD+Se2Ab2he0AbL6/WqtJaSgAiyt3+GRXIC0IuwaGunswqrSc3bNHqxcN94m7TqbtCpW2fHPkP4qI4JUtDtCAtVEGrC6pVnBy5bv0FW0et/vp+wEkRuf8RLJC3pcrxsYGGUwuv8EzQf4g== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501002);SRVR:SN1PR02MB1694; X-Microsoft-Exchange-Diagnostics: 1;SN1PR02MB1694;25:+gQYGJy3GUy/xxpMc9QN28gok1howUGzJ4f4Rlpv89Wmx5ApoRkXvJ/88iKtC3EHOuDcstlVO/y+Pq/2B+ZEQ5MhT/Uq3DRzEutVjh7GIUapv/8EwTldgaDbuKbcXYcfpzwTNilH5e0y2T0ibXoiLr5KgEDIVGJwnQkdlmm3n4x+7scpaNrY2ZsqcLo1lJ0q0voCksePxaiTX49EZwjPvjxiqUizjA7pA3Fnibk8VgaTXh98EoCBzOY/WcVV2HUlOdRQB+h7JhGlfFnkadCRbqqDgNjLcL24w3pg+//oLzS54X0/Zzwfne4lFbOBixwS29UK8nIzs27p0UGk2yIgiM1MhJP+fbqrohiDG79MsJP3ih0WtE9otWvBVSoM2e3cp0VEI/5F8B4HP3/etVUFjx9+5c9QkbySOsmRTqrYtDtRhmNbQBWM9aUO0XiZiHTNRftq0I69g4hj4hmikvsPFup2oNvZ5ORFerntEZlLF/Osa7+4I4eGFuet2Nonz3vH2oGaJtrxviJ7oE1JG2Ss4cppG0BMHHEVDpru4xOuVBB+Lv6R5WYnDmPRnpDxwr02e+Nnp30xY0W0Q4dZIPIuNIHw+SMyYKmWTxJJLjy8e+WjgpPoBnQ4JlLM7RYwb0b8JQmXJ0cKzcYJShciqCuuWAkDr2/F+bmb1V3pN44COnQsSPMithelqPXu2fOQi7K5IuqWU+zkKoALJwMYbyvvZlHfGLamcGWVmJOO4BJ6D4mhhlLl/soziIw/L+322vNLebLLZ51Eh/FN4ccUVENqMpts/sGy5RkQHW3tc/U5nZo= X-Microsoft-Exchange-Diagnostics: 1;SN1PR02MB1694;31:SzgHmMLEGhAE7AUbUIoycM30qtMgHbnQBwKZ8F4r4CqPAPQHrPczbgqTFX2FXJaU2M6wtK6VJREwcCN1f0vGL3pwZ6Gl6kzMRPNI/gqsIAwB5PRj+rMERhBmFLK5Rd4JuoKKNwDuGMyl4CBhqMk1ECRnnuIV0JHIp0uZqkUgCsUJUn8HBjZeCJ3N9unv9jDQ6e0Wv6Ek4Kea7QJcbODDaE/oWZCdY7aagIOVx0pz5rQ=;20:Kc0P4FPCnumDUHagBozMDeyH6DNB1FfjhsmGMEnbe9wGpQ0zZ474dKVRUdJ3g6shx6BWYJnOnS+5bNk+K4knlaVXUf25qCDsF63qMt18ZppH2TRKIO/++zuDGi/GxIbBVnALhhnyz49eZkv5HJyLxoabIg+Na8bo+w7f/kne1102g57SlmFcSO7kcMWyGvVN7iNmfkvDeWZzb+IiAOS/7OBL3iqheyWrVP6zXvBisXsetQ7EMJlCeZId0rC1RSgnSdqITDVkGouY7xa2S9IHE8bMXY+8uxiWRJzxF6fpVcnq6lNgrMA5E5JT3XWP8W659j3ym/HHd6cTqh/ojfnTMI/3m8xamJ2pY9UTw9GT7j4XMmn4aZKfs1MSsXPav1ZuwFnSgs43HMdF9zulQMR5FeIUZWLs/0aTgvRy8u01Ed+CGW/SfkB/cHPBlz5c3utkRJBWxPpy8LHm075176RxYJqSFOn5U3ADq2K2s67/u149NBJhat56ZRIwWn4hcBC7 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(13015025)(13017025)(13023025)(13018025)(13024025)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:SN1PR02MB1694;BCL:0;PCL:0;RULEID:;SRVR:SN1PR02MB1694; X-Microsoft-Exchange-Diagnostics: 1;SN1PR02MB1694;4:51Ygcj9xK54eM56SKOB6eSz5iqYiagk+F47hT6krCeS7PhG/BdRkDfha3KNm+uEhkSIg3FCHf0ni7FAIRN3B+V1qifbMTOUZWgwQ96MnytImYyew2X9b0O3mbfqJMnspUGqe+2E4SuLgN3cBy/Mx7v3C/TWGeMO2aQLEpFEC0ExhtMp8wPS0ps7ih9I0/TPAW3gM1lySC5/9kkl2HVrCF5hLC+pddoEwc6ZZMxZNOMyzcVeQuN09rhhN2TL6Nu2MKFOXtJSCchSuTCXUIUnP02ZieyZyZqK5m5g/5yPxoI+nBAhlBKLNWxzTYG59E4n5yMvcmb2xZv0C3gtvqync+McZRXH3crg8JSU7k3Y9IKtBzr/1zFUCDVmFNQds0NboZ/1F0dDesRTi6rCLyP+r9459MAf6iuNPX97VFETQEwDplKO7yMPFvP7B0qK1NSvWUkIp3o4RCl/XAuEjqkyAL2zUitmFUvOF3rb3ddymWocbqX1ln/buAZaQYo+cwuGZXmRcMvcI9KXSV5uOQoGarzkXqOcZhxNYjMjxpwxPpf0= X-Forefront-PRVS: 006546F32A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR02MB1694;23:4KDysZJhp6tyD1yVV19hMa3LBPv1Jow/8OYHF6crn?= =?us-ascii?Q?ZUho3gR1A27M9kcAnChlyTU482RkZqIS0t8aVH8/BTXc8SEdur3y16mOv+z4?= =?us-ascii?Q?es7e0G5peW3CgYGC1W4NHZuWdnd7tTMRBb5ybjVEtULiu8/bZ8z/ShxKRzAh?= =?us-ascii?Q?D8vCTWDqJSQGnanb5M7ehnWnOUyGKB7qXiWfany8G3a6NPojjMWJsxiiWngt?= =?us-ascii?Q?XXsQM0ggHW3onrW1cIzkq7TN+5zFwQcWBxm1anYAJ1KbEHRWwThiVk960Bnv?= =?us-ascii?Q?LfsU6XdUi84fEasCTVOKLcHDgFtpM0czIjYpyqFYdMTAMJZADo590WuwDiHe?= =?us-ascii?Q?BvbDp7Z7yipcoWEOt/iHhsjFnViJflplIybwUjbbPf732yTHY6OyO66xKmME?= =?us-ascii?Q?BvBD6JV/kxT7dzZY9iKqzcpz2i/znBPmG/JMFxCSB0uXjXLM2oRx4Va1vSgq?= =?us-ascii?Q?QYJe+Ro221RoWsNm92q8k3FIwaEL28IJRDSNB5B4wScwqHuUPuiJipoAeAnA?= =?us-ascii?Q?E4QQU80IlHkQkRB1a/mnK4sI2eh8f/VVGwnq/+JgrpD3CxsO+S0i34rMtA8O?= =?us-ascii?Q?RM7jmF1/qjtRgokIZ7jq5w3E/UhnvPDc8/0nrw1jTNHwd0dhTheqxQWVBcNq?= =?us-ascii?Q?50kPv2qYhab63Nl9dS3MRz7JS2HsP8tNd8F6kY1TgUeTJg52WjOkzyt4b4lG?= =?us-ascii?Q?MhJeuWtkejRwSBrnnSJSPsNbNrHmxi7irQubWIIpHDfHWLTkMdO+60YRv24W?= =?us-ascii?Q?5j+bjhFlQLmmVZPsgSqQ8S6i4OZc0GMF7JnIX3JviWK5UkId6uAEMFjy7712?= =?us-ascii?Q?HM7URC0ktEcEQANX1XOay86Ye17zZkdNBF+h+1xzhYE0ah5ZQ1J8zXrLRZxY?= =?us-ascii?Q?6yhO1Ltruph0ddz/vL6w8P4S2BNrgC9ECC3kaOu3V25QUkp4YBbUEB9Zw8+g?= =?us-ascii?Q?IQi0sXdtJiVnqq0iAMOhMu0PVNhccD0XgaXVVolceD3WrnpSX1epxkddHdO5?= =?us-ascii?Q?b5bHO+wlv0/RlneVO5xfNCdWNon8AL6V5o77qsyu5h3vygYoxsbn0BXYTQ29?= =?us-ascii?Q?Pbxsp2kbejFFju0mUVrQeBrtfBStWqnGWEp7NYOev2FL+lX7JcTlvDeffYpg?= =?us-ascii?Q?lBCu0bXrVzLjVfNJytNHP+EN0BlgMOBChEHZaQeLBCr8P4K0ajBrw/BczvXF?= =?us-ascii?Q?R4ifP4SYrw/7OYNIKwjiG3IffRM8LX0juc/ONGoFxw4J2xzn1Y0OFDp9dY+T?= =?us-ascii?Q?H2L4FUjNKI+EGHYGIZngT8IDi1PBDOjAh92pXAiUT+CVeMEIyjUuOMGLLL+S?= =?us-ascii?Q?K8/wOCYu1jsIoFi9h2je/kelWJeOpmZ6Atut4g2oYUYjhP6ek6chRu5hriRE?= =?us-ascii?Q?AUokw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR02MB1694;6:0EZO5g/PwFpqDUMseVOJhEu1RG/Fcv+1ZFWNdlZNA9CTORH4LoPe14xExGEKpH7HHerhq1+ExuD5bHzb5goZuqfP698KnEMKUXtwQBMF7iVtuMi/8IuGO89uRL2jNxSQ0xvrm6EdaNN08u0IDDdw1Ti4nS1kLljW35hzYGWQDowSBKbXR0BvH5cefkIsrCYIo0IdtZUQvUrv111p2Pb4aRcaiOBK0poc/IIV5oDYqYYWEz84bMLM5FhulzJgHWy1912jlHxQcpIe+UO8rdwAGTt2iP8rgFDyrrAArkN2+LSG4QQGph/Igcqxb4BOwAeeX1aoI+enzBRBm+JifZqP8Q==;5:ic4ocB9gBc1AMpcUhcstoch3R2+FdBDVr0aqlUcozLiQbWNeHRXpGjzdsfZt7XiamPr97lf3wcgDQNUCrHCDK2kiTRm5TzN1OzMsttcsAns1c87h2SQ3W5ldKvqjkpQC7C+CkRUVbmkee9cq2pHqMA==;24:e6wlXPdJIE3rFfizZqNxTMwH71rnLLl0u6VcfDAJh0H0fIwdb/xOGutJbKrRdGmYrwLMr9/cndO5jCD/18LQHZ8co4HWD2VS/5MejvozZqM=;7:/TpC8hYONCsGf6/24l9+eBCOxr72W9asJDeoRuZLFRQiAavvoYQxbVzyZe3IdABAAxyPSffFqvpQUjW0bBl6RXIAtq53u7ZY+xtXLDKOE5vqS1bdfJLzuzwKNar+RrP8ylxnLVme938Xk1G2KJC7IBBjnaA/55DLeoCnnMHQCAkiCOUkNKUaKk7ObDxSljY0hA2h+lmLJeNMbFyFuaBnp8iX/2pjVkdnOaqj3+84qjD7BWbuXjlTDSpIx8gYErdv SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2016 05:34:25.0305 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.100];Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR02MB1694 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by mail.home.local id u8E5YeTc027484 > [+cc Ley Foon (altera), Thomas (aardvark), Kishon (dra7xx), Murali (keystone)] > > On Tue, Sep 13, 2016 at 10:05:11AM -0500, Bjorn Helgaas wrote: > > On Tue, Sep 13, 2016 at 08:41:28AM +0100, Marc Zyngier wrote: > > > On 12/09/16 23:02, Bjorn Helgaas wrote: > > > > On Thu, Sep 01, 2016 at 05:19:55AM +0000, Bharat Kumar Gogada wrote: > > > >>>>>>> Hi Bharat, > > > >>>>>>>> @@ -561,7 +561,7 @@ static int > > > >>>>>>>> nwl_pcie_init_irq_domain(struct nwl_pcie > > > >>>>>>> *pcie) > > > >>>>>>>> } > > > >>>>>>>> > > > >>>>>>>> pcie->legacy_irq_domain = > irq_domain_add_linear(legacy_intc_node, > > > >>>>>>>> - INTX_NUM, > > > >>>>>>>> + > > > >>>>>>>> + INTX_NUM + 1, > > > >>>>>>>> &legacy_domain_ops, > > > >>>>>>>> pcie); > > > >>>>>>> > > > >>>>>>> This feels like the wrong thing to do. You have INTX_NUM > > > >>>>>>> irqs, so the domain allocation should reflect this. On the > > > >>>>>>> other hand, the way the driver currently deals with mappings > > > >>>>>>> is quite broken (consistently adding 1 to > > > >>>>> the HW interrupt). > > > >>>>>>> > > > >>>>>> Hi Marc, > > > >>>>>> > > > >>>>>> Without above change I get following crash in kernel while booting. > > > >>>>>> > > > >>>>>> [ 2.441684] error: hwirq 0x4 is too large for dummy > > > >>>>>> > > > >>>>>> [ 2.441694] ------------[ cut here ]------------ > > > >>>>>> > > > >>>>>> [ 2.441698] WARNING: at kernel/irq/irqdomain.c:344 > > > >>>>>> > > > >>>>>> [ 2.441702] Modules linked in: > > > >>>>>> > > > >>>>>> [ 2.441706] > > > >>>>>> > > > >>>>>> [ 2.441714] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.4.0 #8 > > > >>>>>> > > > >>>>>> [ 2.441718] Hardware name: xlnx,zynqmp (DT) > > > >>>>>> > > > >>>>>> [ 2.441723] task: ffffffc071886b80 ti: ffffffc071888000 task.ti: > > > >>>>> ffffffc071888000 > > > >>>>>> > > > >>>>>> [ 2.441732] PC is at irq_domain_associate+0x138/0x1c0 > > > >>>>>> > > > >>>>>> [ 2.441738] LR is at irq_domain_associate+0x138/0x1c0 > > > >>>>>> > > > >>>>>> In kernel/irq/irqdomain.c function irq_domain_associate > > > >>>>>> > > > >>>>>> if (WARN(hwirq >= domain->hwirq_max, > > > >>>>>> "error: hwirq 0x%x is too large for %s\n", > > > >>>>>> (int)hwirq, domain- > > > >>>> name)) > > > >>>>>> return -EINVAL; > > > >>>>>> > > > >>>>>> Here the hwirq and hwirq_max are equal to 4 without the above > > > >>>>>> condition > > > >>>>> (INTX_NUM + 1) due to which crash is coming. > > > >>>>>> This is happening as the legacy interrupts are starting from 1 (INTA). > > > >>>>> > > > >>>>> I understood that. I'm still persisting in saying that you have the wrong > fix. > > > >>>>> > > > >>>>> Your domain should always allocate many interrupts as you have > > > >>>>> interrupt sources. These interrupts (hwirq) should be numbered > > > >>>>> from 0 to (n- > > > >>> 1). > > > >>>> > > > >>>> Agreed, but here comes the problem the hwirq for legacy > > > >>>> interrupts will start at 0x1 to 0x4 (INTA to INTD) and these > > > >>>> values are as per PCIe specification for legacy interrupts. So > > > >>>> these cannot be numbered from 0. So when 0x4 (INTD) for a > > > >>>> multi-function device comes the crash occurs. > > > >>> > > > >>> So who provides this hwirq? Who calls irq_domain_associate() > > > >>> with hwirq set to 4? > > > >>> > > > >> PCIe subsystem invokes pcibios_add_device function in > arch/arm64/kernel/pci.c for every pci device. > > > >> The purpose of this function is to assign dev->irq using > of_irq_parse_and_map_pci. > > > >> of_irq_parse_and_map_pci invokes of_irq_parse_pci where it reads > > > >> PCI_INTERRUPT_PIN from configuration space and saves it in parameter > of struct of_phandle_args. > > > >> This structure is passed to irq_create_of_mapping where it invokes > irq_create_fwspec_mapping. > > > >> irq_create_fwspec_mapping invokes irq_domain_translate and gets > > > >> hwirq, here the above saved PCI_INTERRUPT_PIN value is assigned to > hwirq (*hwirq = fwspec->param[0]). > > > >> And then using this hwirq irq_create_mapping -> irq_domain_associate > were invoked and mapping is created for virtual irq with this hwirq. > > > >> So for any end point PCI_INTERRUPT_PIN value starts from 0x1 to 0x4 > and so hwirq starts from 0x1 to 0x4. > > > >> > > > >> So the values are more generic w.r.t to protocol, that's why hwirq will > range from 0x1 to 0x4. > > > >> And then if you check pcie-altera.c they are doing this adding one in their > handler and while creating legacy domain. > > > > > > > > Is this resolved yet? Marc, are you happy, or should we iterate > > > > on this again? > > > > > > Ah, sorry to have dropped the ball on this patch. > > > > No problem, I wasn't making forward progress anyway. > > > > > I guess that given that the infrastructure imposes the hwirq range > > > on the host drivers, Bharat's approach is the only way (and a number > > > of other host drivers are already slightly broken). I'll try and > > > have a look at solving this at the generic level. In the meantime: > > > > > > Acked-by: Marc Zyngier > > > > After looking at this myself, I'm not happy with this either. It > > feels like there are bugs lurking here and we're just hiding one of them. > > > > Here are the callers of irq_domain_add_linear() for legacy INTx in > > drivers/pci/host: > > > > advk_pcie_init_irq_domain LEGACY_IRQ_NUM (4) > > dra7xx_pcie_init_irq_domain 4 > > ks_dw_pcie_host_init MAX_LEGACY_IRQS (4) > > altera_pcie_init_irq_domain INTX_NUM + 1 (5) > > nwl_pcie_init_irq_domain INTX_NUM + 1 (5) > > xilinx_pcie_init_irq_domain 4 > > The altera change corresponding to this was 99496bd2971f ("PCI: altera: Fix > error when INTx is 4"). I should have noticed this inconsistency back then. > > Are aardvark, dra7xx, keystone, and xilinx (non-NWL) broken because they only > request 4 IRQs and only INTA, INTB, and INTC work? > Hi Bjorn, xilinx (non-NWL) will also work with all 4 INTA, INTB, INTc and INTD, but I haven't sent patches for this yet, because by that time marc has already raised issue regarding the fix w.r.t this. So once a proper fix was agreed upon for Xilinx-nwl, I will send fix for this also. Thanks & Regards, Bharat