From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752393AbcGAI4t (ORCPT ); Fri, 1 Jul 2016 04:56:49 -0400 Received: from mail-db5eur01on0065.outbound.protection.outlook.com ([104.47.2.65]:43008 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752245AbcGAI4m (ORCPT ); Fri, 1 Jul 2016 04:56:42 -0400 From: Po Liu To: Dongdong Liu , "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" CC: Bjorn Helgaas , Shawn Guo , Marc Zyngier , Rob Herring , "Roy Zang" , Mingkai Hu , Stuart Yoder , Yang-Leo Li , Arnd Bergmann , Minghuan Lian , Murali Karicheri Subject: RE: [PATCH v3 2/2] pci/aer: interrupt fixup in the quirk Thread-Topic: [PATCH v3 2/2] pci/aer: interrupt fixup in the quirk Thread-Index: AQHRxheZVDdmrKa9D0uquNOaIWgAJp/2mDIAgAzDZ8A= Date: Fri, 1 Jul 2016 08:40:19 +0000 Message-ID: References: <1464242406-20203-1-git-send-email-po.liu@nxp.com> <1465892645-32381-1-git-send-email-po.liu@nxp.com> <1465892645-32381-2-git-send-email-po.liu@nxp.com> <576B770A.6060508@huawei.com> In-Reply-To: <576B770A.6060508@huawei.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=po.liu@nxp.com; x-originating-ip: [199.59.231.64] x-ms-office365-filtering-correlation-id: 575c5de0-e51f-4afb-8f06-08d3a18b55df x-microsoft-exchange-diagnostics: 1;VI1PR0401MB1712;6:iIh2NiVYxdJ0+05/e0FW4hOWO2By12/es7cfTDVqvo6Gpoh4m987D4+5s7Ma6Hv+2dxsqkCzrz4X+wn4s2Oz8T2kxNQ/K45/TOm0erWnYPBff2rrO6JwZiOlKy0IW2TA1+pEpv53s5yBd3Y3863z8WgykZ9/NotFnysRHw/L3+BvREr6s2N29iO3mUm0OB92RFnhXrLuAxnAecPOW7je9lGMEMMSmHQC3nzXqRfQ4gNNTwgHNOKUvGtNRCwJvaebQ5Jp2+B1Eju5F73yQVb135BI8plBFDl0xMoLSAAP33WXxXGJaFualcm5RD9cCwHYGKIwN/rifZstciiRKjD8aA==;5:hPcQrIrm3sZ1bi9JeBqrrtGx650XI+tlj8AbXoUXmB9tW+yGnDso3ogdBMzbF01gmnZ6QLNj1nDH9NFruKp8vZG2nTZ7QZawqf57dHMGE1BYYrAGPb36w8q9TiGmDNP1fzAQukxsml8k+VsFztD9og==;24:ZdTV7FY4JXNRMHYzGOKN9rkRs3S7ZgCdAOrrw32fzn7a+5ctaJFazNmXbolqmoHVB8sYfjmRFARWs84+Z1lj/c1zw4PJXNO1JeqYa6G7QkQ=;7:pnyrwHdWv6/ZScQIJv/WI4gKCpQX3tm5YRonmORFYvVTbJd/W/f6txN4B5Yk+zmWQj8Gu+tDrCxNRZA1u0UUrryrhdd9FhxrNVM6b3uaYRficrbqmthbxKZV/33uh/YIQLQun5bT8BbWWNF8ZlqKEGnB5AHKHm1QD77EU/9gOwzdlCu1x5UMNmi1FQcCh8VgXkBL5vvCBBuqLNwIXda6RvbT3BYxA7FJM01RinZKOIM4iD28sW563iXpcZmWLEZ2 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0401MB1712; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(9452136761055)(50582790962513)(258649278758335)(185117386973197); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026);SRVR:VI1PR0401MB1712;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0401MB1712; x-forefront-prvs: 0990C54589 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(7916002)(13464003)(189002)(377454003)(199003)(2501003)(586003)(10400500002)(3846002)(5002640100001)(6116002)(102836003)(101416001)(54356999)(106116001)(81156014)(8676002)(81166006)(50986999)(76176999)(68736007)(77096005)(2900100001)(2950100001)(7736002)(7696003)(5003600100003)(305945005)(7846002)(92566002)(122556002)(2201001)(97736004)(105586002)(5001770100001)(19580395003)(19580405001)(106356001)(189998001)(66066001)(33656002)(76576001)(9686002)(4326007)(2906002)(87936001)(3660700001)(8936002)(93886004)(86362001)(3280700002)(74316002);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0401MB1712;H:VI1PR0401MB1709.eurprd04.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jul 2016 08:40:20.0350 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB1712 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 base64 to 8bit by mail.home.local id u618uu7D032583 Hi Dongdong, > -----Original Message----- > From: Dongdong Liu [mailto:liudongdong3@huawei.com] > Sent: Thursday, June 23, 2016 1:44 PM > To: Po Liu; linux-pci@vger.kernel.org; linux-arm- > kernel@lists.infradead.org; linux-kernel@vger.kernel.org; > devicetree@vger.kernel.org > Cc: Bjorn Helgaas; Shawn Guo; Marc Zyngier; Rob Herring; Roy Zang; > Mingkai Hu; Stuart Yoder; Yang-Leo Li; Arnd Bergmann; Minghuan Lian; > Murali Karicheri > Subject: Re: [PATCH v3 2/2] pci/aer: interrupt fixup in the quirk > > > > 在 2016/6/14 16:24, Po Liu 写道: > > 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 V3: > > - Move to quirk; > > - Only correct the irq in RC mode; > > > > drivers/pci/quirks.c | 29 +++++++++++++++++++++++++++++ > > 1 file changed, 29 insertions(+) > > > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index > > ee72ebe..8b39cce 100644 > > --- a/drivers/pci/quirks.c > > +++ b/drivers/pci/quirks.c > > @@ -25,6 +25,7 @@ > > #include > > #include > > #include > > +#include > > #include /* isa_dma_bridge_buggy */ > > #include "pci.h" > > > > @@ -4419,3 +4420,31 @@ static void quirk_intel_qat_vf_cap(struct > pci_dev *pdev) > > } > > } > > DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x443, > > quirk_intel_qat_vf_cap); > > + > > +/* If root port doesn't support MSI/MSI-X/INTx in RC mode, > > + * but use standalone irq. Read the device tree for the aer > > + * interrupt number. > > + */ > > +static void quirk_aer_interrupt(struct pci_dev *dev) { > > + int ret; > > + u8 header_type; > > + struct device_node *np = NULL; > > + > > + /* Only for the RC mode device */ > > + pci_read_config_byte(dev, PCI_HEADER_TYPE, &header_type); > > + if ((header_type & 0x7F) != PCI_HEADER_TYPE_BRIDGE) > > + return; > > How about that it is changed as below. > > /* Only for the RC mode device */ > if (pci_pcie_type(dev) != PCI_EXP_TYPE_ROOT_PORT) > return; > > Dongdong > Thanks Yes, it is also ok to read the capability register. We see it is common used to read the header type register that is why we use in this way. > > + > > + if (dev->bus->dev.of_node) > > + np = dev->bus->dev.of_node; > > + > > + if (IS_ENABLED(CONFIG_OF_IRQ) && np) { > > + ret = of_irq_get_byname(np, "aer"); > > + if (ret > 0) { > > + dev->no_msi = 1; > > + dev->irq = ret; > > + } > > + } > > +} > > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_FREESCALE, PCI_ANY_ID, > > +quirk_aer_interrupt); > >