* [PATCH 0/4] pci-dra7xx: Fix legacy IRQ handling and errata handling
@ 2017-12-01 6:13 Vignesh R
[not found] ` <20171201061311.16691-1-vigneshr-l0cyMroinI0@public.gmane.org>
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Vignesh R @ 2017-12-01 6:13 UTC (permalink / raw)
To: Bjorn Helgaas, Rob Herring, Tony Lindgren, Chris Welch
Cc: Kishon Vijay Abraham I, Lorenzo Pieralisi, linux-omap, linux-pci,
devicetree, linux-kernel, linux-arm-kernel, Vignesh R
This series contains two fixes:
1. Make workaround for errata i870 applicable in Host mode as
well(previously it was enabled only for EP mode) as per errata
documentation: http://www.ti.com/lit/er/sprz429k/sprz429k.pdf
2. Fix problem with handling of legacy INTD interrupts.
Tested on 66AK2G EVM and ICE boards
Vignesh R (4):
pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode
dt-bindings: PCI: dra7xx: Add bindings for unaligned access in host
mode
ARM: dts: dra7: Add DT property to allow unaligned mem access to PCIe
RC
PCI: dwc: pci-dra7xx: Fix legacy IRQ handling
Documentation/devicetree/bindings/pci/ti-pci.txt | 5 +++++
arch/arm/boot/dts/dra7.dtsi | 2 ++
drivers/pci/dwc/pci-dra7xx.c | 23 ++++++++++++++---------
3 files changed, 21 insertions(+), 9 deletions(-)
--
2.15.0
^ permalink raw reply [flat|nested] 11+ messages in thread[parent not found: <20171201061311.16691-1-vigneshr-l0cyMroinI0@public.gmane.org>]
* [PATCH 1/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode [not found] ` <20171201061311.16691-1-vigneshr-l0cyMroinI0@public.gmane.org> @ 2017-12-01 6:13 ` Vignesh R [not found] ` <20171201061311.16691-2-vigneshr-l0cyMroinI0@public.gmane.org> 2017-12-01 6:15 ` [PATCH 0/4] pci-dra7xx: Fix legacy IRQ handling and errata handling Vignesh R 1 sibling, 1 reply; 11+ messages in thread From: Vignesh R @ 2017-12-01 6:13 UTC (permalink / raw) To: Bjorn Helgaas, Rob Herring, Tony Lindgren, Chris Welch Cc: Kishon Vijay Abraham I, Lorenzo Pieralisi, linux-omap-u79uwXL29TY76Z2rM5mHXA, linux-pci-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Vignesh R Errata i870 is applicable in both EP and RC mode. Therefore rename function dra7xx_pcie_ep_unaligned_memaccess(), that implements errata workaround, to dra7xx_pcie_unaligned_memaccess() and call it from a common place. So, that errata workaround is applied for both modes of operation. Reported-by: Chris Welch <Chris.Welch-ojoHHoaXhABCkLs28/y7ANBPR1lH4CV8@public.gmane.org> Signed-off-by: Vignesh R <vigneshr-l0cyMroinI0@public.gmane.org> --- drivers/pci/dwc/pci-dra7xx.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/pci/dwc/pci-dra7xx.c b/drivers/pci/dwc/pci-dra7xx.c index e77a4ceed74c..53f721d1cc40 100644 --- a/drivers/pci/dwc/pci-dra7xx.c +++ b/drivers/pci/dwc/pci-dra7xx.c @@ -546,7 +546,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = { }; /* - * dra7xx_pcie_ep_unaligned_memaccess: workaround for AM572x/AM571x Errata i870 + * dra7xx_pcie_unaligned_memaccess: workaround for AM572x/AM571x Errata i870 * @dra7xx: the dra7xx device where the workaround should be applied * * Access to the PCIe slave port that are not 32-bit aligned will result @@ -556,7 +556,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = { * * To avoid this issue set PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE to 1. */ -static int dra7xx_pcie_ep_unaligned_memaccess(struct device *dev) +static int dra7xx_pcie_unaligned_memaccess(struct device *dev) { int ret; struct device_node *np = dev->of_node; @@ -703,6 +703,10 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev) if (dra7xx->link_gen < 0 || dra7xx->link_gen > 2) dra7xx->link_gen = 2; + ret = dra7xx_pcie_unaligned_memaccess(dev); + if (ret) + goto err_gpio; + switch (mode) { case DW_PCIE_RC_TYPE: dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE, @@ -715,10 +719,6 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev) dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE, DEVICE_TYPE_EP); - ret = dra7xx_pcie_ep_unaligned_memaccess(dev); - if (ret) - goto err_gpio; - ret = dra7xx_add_pcie_ep(dra7xx, pdev); if (ret < 0) goto err_gpio; -- 2.15.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 11+ messages in thread
[parent not found: <20171201061311.16691-2-vigneshr-l0cyMroinI0@public.gmane.org>]
* Re: [PATCH 1/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode [not found] ` <20171201061311.16691-2-vigneshr-l0cyMroinI0@public.gmane.org> @ 2017-12-19 16:24 ` Lorenzo Pieralisi 2017-12-20 4:15 ` Vignesh R 0 siblings, 1 reply; 11+ messages in thread From: Lorenzo Pieralisi @ 2017-12-19 16:24 UTC (permalink / raw) To: Vignesh R, Kishon Vijay Abraham I Cc: Bjorn Helgaas, Rob Herring, Tony Lindgren, Chris Welch, linux-omap-u79uwXL29TY76Z2rM5mHXA, linux-pci-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r On Fri, Dec 01, 2017 at 11:43:08AM +0530, Vignesh R wrote: > Errata i870 is applicable in both EP and RC mode. Therefore rename > function dra7xx_pcie_ep_unaligned_memaccess(), that implements errata > workaround, to dra7xx_pcie_unaligned_memaccess() and call it from a > common place. So, that errata workaround is applied for both modes of > operation. > > Reported-by: Chris Welch <Chris.Welch-ojoHHoaXhABCkLs28/y7ANBPR1lH4CV8@public.gmane.org> > Signed-off-by: Vignesh R <vigneshr-l0cyMroinI0@public.gmane.org> > --- > drivers/pci/dwc/pci-dra7xx.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) I need Kishon's ACK to apply it, thanks. Lorenzo > diff --git a/drivers/pci/dwc/pci-dra7xx.c b/drivers/pci/dwc/pci-dra7xx.c > index e77a4ceed74c..53f721d1cc40 100644 > --- a/drivers/pci/dwc/pci-dra7xx.c > +++ b/drivers/pci/dwc/pci-dra7xx.c > @@ -546,7 +546,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = { > }; > > /* > - * dra7xx_pcie_ep_unaligned_memaccess: workaround for AM572x/AM571x Errata i870 > + * dra7xx_pcie_unaligned_memaccess: workaround for AM572x/AM571x Errata i870 > * @dra7xx: the dra7xx device where the workaround should be applied > * > * Access to the PCIe slave port that are not 32-bit aligned will result > @@ -556,7 +556,7 @@ static const struct of_device_id of_dra7xx_pcie_match[] = { > * > * To avoid this issue set PCIE_SS1_AXI2OCP_LEGACY_MODE_ENABLE to 1. > */ > -static int dra7xx_pcie_ep_unaligned_memaccess(struct device *dev) > +static int dra7xx_pcie_unaligned_memaccess(struct device *dev) > { > int ret; > struct device_node *np = dev->of_node; > @@ -703,6 +703,10 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev) > if (dra7xx->link_gen < 0 || dra7xx->link_gen > 2) > dra7xx->link_gen = 2; > > + ret = dra7xx_pcie_unaligned_memaccess(dev); > + if (ret) > + goto err_gpio; > + > switch (mode) { > case DW_PCIE_RC_TYPE: > dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE, > @@ -715,10 +719,6 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev) > dra7xx_pcie_writel(dra7xx, PCIECTRL_TI_CONF_DEVICE_TYPE, > DEVICE_TYPE_EP); > > - ret = dra7xx_pcie_ep_unaligned_memaccess(dev); > - if (ret) > - goto err_gpio; > - > ret = dra7xx_add_pcie_ep(dra7xx, pdev); > if (ret < 0) > goto err_gpio; > -- > 2.15.0 > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode 2017-12-19 16:24 ` Lorenzo Pieralisi @ 2017-12-20 4:15 ` Vignesh R 0 siblings, 0 replies; 11+ messages in thread From: Vignesh R @ 2017-12-20 4:15 UTC (permalink / raw) To: Lorenzo Pieralisi, KISHON VIJAY ABRAHAM Cc: devicetree@vger.kernel.org, Tony Lindgren, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Herring, Chris Welch, Bjorn Helgaas, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org On Tuesday 19 December 2017 09:54 PM, Lorenzo Pieralisi wrote: > On Fri, Dec 01, 2017 at 11:43:08AM +0530, Vignesh R wrote: >> Errata i870 is applicable in both EP and RC mode. Therefore rename >> function dra7xx_pcie_ep_unaligned_memaccess(), that implements errata >> workaround, to dra7xx_pcie_unaligned_memaccess() and call it from a >> common place. So, that errata workaround is applied for both modes of >> operation. >> >> Reported-by: Chris Welch <Chris.Welch@viavisolutions.com> >> Signed-off-by: Vignesh R <vigneshr@ti.com> >> --- >> drivers/pci/dwc/pci-dra7xx.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) > > I need Kishon's ACK to apply it, thanks. There are some enhancements to this patch. Will submit a v2 shortly. Please ignore this version for now. Thanks! -- Regards Vignesh _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] pci-dra7xx: Fix legacy IRQ handling and errata handling [not found] ` <20171201061311.16691-1-vigneshr-l0cyMroinI0@public.gmane.org> 2017-12-01 6:13 ` [PATCH 1/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode Vignesh R @ 2017-12-01 6:15 ` Vignesh R 1 sibling, 0 replies; 11+ messages in thread From: Vignesh R @ 2017-12-01 6:15 UTC (permalink / raw) To: Bjorn Helgaas, Rob Herring, Tony Lindgren, Chris Welch Cc: Kishon Vijay Abraham I, Lorenzo Pieralisi, linux-omap-u79uwXL29TY76Z2rM5mHXA, linux-pci-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r On Friday 01 December 2017 11:43 AM, Vignesh R wrote: > This series contains two fixes: > 1. Make workaround for errata i870 applicable in Host mode as > well(previously it was enabled only for EP mode) as per errata > documentation: http://www.ti.com/lit/er/sprz429k/sprz429k.pdf > 2. Fix problem with handling of legacy INTD interrupts. > > Tested on 66AK2G EVM and ICE boards > Oops, sorry, I meant tested on DRA74 EVM and AM572 GP EVM here. > > Vignesh R (4): > pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode > dt-bindings: PCI: dra7xx: Add bindings for unaligned access in host > mode > ARM: dts: dra7: Add DT property to allow unaligned mem access to PCIe > RC > PCI: dwc: pci-dra7xx: Fix legacy IRQ handling > > Documentation/devicetree/bindings/pci/ti-pci.txt | 5 +++++ > arch/arm/boot/dts/dra7.dtsi | 2 ++ > drivers/pci/dwc/pci-dra7xx.c | 23 ++++++++++++++--------- > 3 files changed, 21 insertions(+), 9 deletions(-) > -- Regards Vignesh -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/4] dt-bindings: PCI: dra7xx: Add bindings for unaligned access in host mode 2017-12-01 6:13 [PATCH 0/4] pci-dra7xx: Fix legacy IRQ handling and errata handling Vignesh R [not found] ` <20171201061311.16691-1-vigneshr-l0cyMroinI0@public.gmane.org> @ 2017-12-01 6:13 ` Vignesh R [not found] ` <20171201061311.16691-3-vigneshr-l0cyMroinI0@public.gmane.org> 2017-12-01 6:13 ` [PATCH 3/4] ARM: dts: dra7: Add DT property to allow unaligned mem access to PCIe RC Vignesh R 2017-12-01 6:13 ` [PATCH 4/4] PCI: dwc: pci-dra7xx: Fix legacy IRQ handling Vignesh R 3 siblings, 1 reply; 11+ messages in thread From: Vignesh R @ 2017-12-01 6:13 UTC (permalink / raw) To: Bjorn Helgaas, Rob Herring, Tony Lindgren, Chris Welch Cc: Kishon Vijay Abraham I, Lorenzo Pieralisi, linux-omap, linux-pci, devicetree, linux-kernel, linux-arm-kernel, Vignesh R Update device tree binding documentation of TI's dra7xx PCI controller for enabling unaligned mem access as applicable not just in EP mode but in host mode as well. Signed-off-by: Vignesh R <vigneshr@ti.com> --- Documentation/devicetree/bindings/pci/ti-pci.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/devicetree/bindings/pci/ti-pci.txt b/Documentation/devicetree/bindings/pci/ti-pci.txt index 7f7af3044016..452fe48c4fdd 100644 --- a/Documentation/devicetree/bindings/pci/ti-pci.txt +++ b/Documentation/devicetree/bindings/pci/ti-pci.txt @@ -26,6 +26,11 @@ HOST MODE ranges, interrupt-map-mask, interrupt-map : as specified in ../designware-pcie.txt + - ti,syscon-unaligned-access: phandle to the syscon DT node. The 1st argument + should contain the register offset within syscon + and the 2nd argument should contain the bit field + for setting the bit to enable unaligned + access. DEVICE MODE =========== -- 2.15.0 ^ permalink raw reply related [flat|nested] 11+ messages in thread
[parent not found: <20171201061311.16691-3-vigneshr-l0cyMroinI0@public.gmane.org>]
* Re: [PATCH 2/4] dt-bindings: PCI: dra7xx: Add bindings for unaligned access in host mode [not found] ` <20171201061311.16691-3-vigneshr-l0cyMroinI0@public.gmane.org> @ 2017-12-04 21:40 ` Rob Herring 0 siblings, 0 replies; 11+ messages in thread From: Rob Herring @ 2017-12-04 21:40 UTC (permalink / raw) To: Vignesh R Cc: Bjorn Helgaas, Tony Lindgren, Chris Welch, Kishon Vijay Abraham I, Lorenzo Pieralisi, linux-omap-u79uwXL29TY76Z2rM5mHXA, linux-pci-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r On Fri, Dec 01, 2017 at 11:43:09AM +0530, Vignesh R wrote: > Update device tree binding documentation of TI's dra7xx PCI controller > for enabling unaligned mem access as applicable not just in EP mode but > in host mode as well. > > Signed-off-by: Vignesh R <vigneshr-l0cyMroinI0@public.gmane.org> > --- > Documentation/devicetree/bindings/pci/ti-pci.txt | 5 +++++ > 1 file changed, 5 insertions(+) Reviewed-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/4] ARM: dts: dra7: Add DT property to allow unaligned mem access to PCIe RC 2017-12-01 6:13 [PATCH 0/4] pci-dra7xx: Fix legacy IRQ handling and errata handling Vignesh R [not found] ` <20171201061311.16691-1-vigneshr-l0cyMroinI0@public.gmane.org> 2017-12-01 6:13 ` [PATCH 2/4] dt-bindings: PCI: dra7xx: Add bindings for unaligned access in host mode Vignesh R @ 2017-12-01 6:13 ` Vignesh R 2017-12-01 6:13 ` [PATCH 4/4] PCI: dwc: pci-dra7xx: Fix legacy IRQ handling Vignesh R 3 siblings, 0 replies; 11+ messages in thread From: Vignesh R @ 2017-12-01 6:13 UTC (permalink / raw) To: Bjorn Helgaas, Rob Herring, Tony Lindgren, Chris Welch Cc: Kishon Vijay Abraham I, Lorenzo Pieralisi, linux-omap, linux-pci, devicetree, linux-kernel, linux-arm-kernel, Vignesh R Add ti,syscon-unaligned-access property to PCIe RC nodes in order to enable workaround for errata i870 in PCIe RC mode as well. Signed-off-by: Vignesh R <vigneshr@ti.com> --- arch/arm/boot/dts/dra7.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi index ac9216293b7c..e4182f4cc36d 100644 --- a/arch/arm/boot/dts/dra7.dtsi +++ b/arch/arm/boot/dts/dra7.dtsi @@ -314,6 +314,7 @@ <0 0 0 2 &pcie1_intc 2>, <0 0 0 3 &pcie1_intc 3>, <0 0 0 4 &pcie1_intc 4>; + ti,syscon-unaligned-access = <&scm_conf1 0x14 2>; status = "disabled"; pcie1_intc: interrupt-controller { interrupt-controller; @@ -367,6 +368,7 @@ <0 0 0 2 &pcie2_intc 2>, <0 0 0 3 &pcie2_intc 3>, <0 0 0 4 &pcie2_intc 4>; + ti,syscon-unaligned-access = <&scm_conf1 0x14 1>; pcie2_intc: interrupt-controller { interrupt-controller; #address-cells = <0>; -- 2.15.0 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/4] PCI: dwc: pci-dra7xx: Fix legacy IRQ handling 2017-12-01 6:13 [PATCH 0/4] pci-dra7xx: Fix legacy IRQ handling and errata handling Vignesh R ` (2 preceding siblings ...) 2017-12-01 6:13 ` [PATCH 3/4] ARM: dts: dra7: Add DT property to allow unaligned mem access to PCIe RC Vignesh R @ 2017-12-01 6:13 ` Vignesh R [not found] ` <20171201061311.16691-5-vigneshr-l0cyMroinI0@public.gmane.org> 3 siblings, 1 reply; 11+ messages in thread From: Vignesh R @ 2017-12-01 6:13 UTC (permalink / raw) To: Bjorn Helgaas, Rob Herring, Tony Lindgren, Chris Welch Cc: Kishon Vijay Abraham I, Lorenzo Pieralisi, linux-omap, linux-pci, devicetree, linux-kernel, linux-arm-kernel, Vignesh R Legacy INTD IRQ handling is broken on dra7xx due to fact that driver uses hwirq in range of 1-4 for INTA, INTD whereas IRQ domain is of size 4 which is numbered 0-3. Therefore when INTD IRQ line is used with pci-dra7xx driver following warning is seen: WARNING: CPU: 0 PID: 1 at kernel/irq/irqdomain.c:342 irq_domain_associate+0x12c/0x1c4 error: hwirq 0x4 is too large for dummy Fix this by using pci_irqd_intx_xlate() helper to translate the INTx 1-4 range into the 0-3 as done in other PCIe drivers. Also, iterate over all the INTx bits and call their respective IRQ handlers before clearing the status register. Suggested-by: Bjorn Helgaas <bhelgaas@google.com> Reported-by: Chris Welch <Chris.Welch@viavisolutions.com> Signed-off-by: Vignesh R <vigneshr@ti.com> --- drivers/pci/dwc/pci-dra7xx.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/pci/dwc/pci-dra7xx.c b/drivers/pci/dwc/pci-dra7xx.c index 53f721d1cc40..59e8de34cec6 100644 --- a/drivers/pci/dwc/pci-dra7xx.c +++ b/drivers/pci/dwc/pci-dra7xx.c @@ -226,6 +226,7 @@ static int dra7xx_pcie_intx_map(struct irq_domain *domain, unsigned int irq, static const struct irq_domain_ops intx_domain_ops = { .map = dra7xx_pcie_intx_map, + .xlate = pci_irqd_intx_xlate, }; static int dra7xx_pcie_init_irq_domain(struct pcie_port *pp) @@ -256,7 +257,8 @@ static irqreturn_t dra7xx_pcie_msi_irq_handler(int irq, void *arg) struct dra7xx_pcie *dra7xx = arg; struct dw_pcie *pci = dra7xx->pci; struct pcie_port *pp = &pci->pp; - u32 reg; + unsigned long reg; + u32 virq, bit; reg = dra7xx_pcie_readl(dra7xx, PCIECTRL_DRA7XX_CONF_IRQSTATUS_MSI); @@ -268,8 +270,11 @@ static irqreturn_t dra7xx_pcie_msi_irq_handler(int irq, void *arg) case INTB: case INTC: case INTD: - generic_handle_irq(irq_find_mapping(dra7xx->irq_domain, - ffs(reg))); + for_each_set_bit(bit, ®, PCI_NUM_INTX) { + virq = irq_find_mapping(dra7xx->irq_domain, bit); + if (virq) + generic_handle_irq(virq); + } break; } -- 2.15.0 ^ permalink raw reply related [flat|nested] 11+ messages in thread
[parent not found: <20171201061311.16691-5-vigneshr-l0cyMroinI0@public.gmane.org>]
* Re: [PATCH 4/4] PCI: dwc: pci-dra7xx: Fix legacy IRQ handling [not found] ` <20171201061311.16691-5-vigneshr-l0cyMroinI0@public.gmane.org> @ 2017-12-08 18:35 ` Lorenzo Pieralisi [not found] ` <20171208183523.GB1885-4tUPXFaYRHv6sAKXYmQ0tx/iLCjYCKR+VpNB7YpNyf8@public.gmane.org> 0 siblings, 1 reply; 11+ messages in thread From: Lorenzo Pieralisi @ 2017-12-08 18:35 UTC (permalink / raw) To: Vignesh R Cc: Bjorn Helgaas, Rob Herring, Tony Lindgren, Chris Welch, Kishon Vijay Abraham I, linux-omap-u79uwXL29TY76Z2rM5mHXA, linux-pci-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r On Fri, Dec 01, 2017 at 11:43:11AM +0530, Vignesh R wrote: > Legacy INTD IRQ handling is broken on dra7xx due to fact that driver > uses hwirq in range of 1-4 for INTA, INTD whereas IRQ domain is of size > 4 which is numbered 0-3. Therefore when INTD IRQ line is used with > pci-dra7xx driver following warning is seen: > > WARNING: CPU: 0 PID: 1 at kernel/irq/irqdomain.c:342 irq_domain_associate+0x12c/0x1c4 > error: hwirq 0x4 is too large for dummy > > Fix this by using pci_irqd_intx_xlate() helper to translate the INTx 1-4 > range into the 0-3 as done in other PCIe drivers. > > Also, iterate over all the INTx bits and call their respective IRQ > handlers before clearing the status register. It seems to me that you are fixing two bugs with one patch and therefore I would ask you to split it in two or explain to me why we should consider lumping them together. Thanks, Lorenzo > Suggested-by: Bjorn Helgaas <bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> > Reported-by: Chris Welch <Chris.Welch-ojoHHoaXhABCkLs28/y7ANBPR1lH4CV8@public.gmane.org> > Signed-off-by: Vignesh R <vigneshr-l0cyMroinI0@public.gmane.org> > --- > drivers/pci/dwc/pci-dra7xx.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/pci/dwc/pci-dra7xx.c b/drivers/pci/dwc/pci-dra7xx.c > index 53f721d1cc40..59e8de34cec6 100644 > --- a/drivers/pci/dwc/pci-dra7xx.c > +++ b/drivers/pci/dwc/pci-dra7xx.c > @@ -226,6 +226,7 @@ static int dra7xx_pcie_intx_map(struct irq_domain *domain, unsigned int irq, > > static const struct irq_domain_ops intx_domain_ops = { > .map = dra7xx_pcie_intx_map, > + .xlate = pci_irqd_intx_xlate, > }; > > static int dra7xx_pcie_init_irq_domain(struct pcie_port *pp) > @@ -256,7 +257,8 @@ static irqreturn_t dra7xx_pcie_msi_irq_handler(int irq, void *arg) > struct dra7xx_pcie *dra7xx = arg; > struct dw_pcie *pci = dra7xx->pci; > struct pcie_port *pp = &pci->pp; > - u32 reg; > + unsigned long reg; > + u32 virq, bit; > > reg = dra7xx_pcie_readl(dra7xx, PCIECTRL_DRA7XX_CONF_IRQSTATUS_MSI); > > @@ -268,8 +270,11 @@ static irqreturn_t dra7xx_pcie_msi_irq_handler(int irq, void *arg) > case INTB: > case INTC: > case INTD: > - generic_handle_irq(irq_find_mapping(dra7xx->irq_domain, > - ffs(reg))); > + for_each_set_bit(bit, ®, PCI_NUM_INTX) { > + virq = irq_find_mapping(dra7xx->irq_domain, bit); > + if (virq) > + generic_handle_irq(virq); > + } > break; > } > > -- > 2.15.0 > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <20171208183523.GB1885-4tUPXFaYRHv6sAKXYmQ0tx/iLCjYCKR+VpNB7YpNyf8@public.gmane.org>]
* Re: [PATCH 4/4] PCI: dwc: pci-dra7xx: Fix legacy IRQ handling [not found] ` <20171208183523.GB1885-4tUPXFaYRHv6sAKXYmQ0tx/iLCjYCKR+VpNB7YpNyf8@public.gmane.org> @ 2017-12-11 4:42 ` Vignesh R 0 siblings, 0 replies; 11+ messages in thread From: Vignesh R @ 2017-12-11 4:42 UTC (permalink / raw) To: Lorenzo Pieralisi Cc: Bjorn Helgaas, Rob Herring, Tony Lindgren, KISHON VIJAY ABRAHAM, linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org On Saturday 09 December 2017 12:05 AM, Lorenzo Pieralisi wrote: > On Fri, Dec 01, 2017 at 11:43:11AM +0530, Vignesh R wrote: >> Legacy INTD IRQ handling is broken on dra7xx due to fact that driver >> uses hwirq in range of 1-4 for INTA, INTD whereas IRQ domain is of size >> 4 which is numbered 0-3. Therefore when INTD IRQ line is used with >> pci-dra7xx driver following warning is seen: >> >> WARNING: CPU: 0 PID: 1 at kernel/irq/irqdomain.c:342 irq_domain_associate+0x12c/0x1c4 >> error: hwirq 0x4 is too large for dummy >> >> Fix this by using pci_irqd_intx_xlate() helper to translate the INTx 1-4 >> range into the 0-3 as done in other PCIe drivers. >> >> Also, iterate over all the INTx bits and call their respective IRQ >> handlers before clearing the status register. > > It seems to me that you are fixing two bugs with one patch and therefore > I would ask you to split it in two or explain to me why we should > consider lumping them together. > Ok, I will split the patch into two in v2. -- Regards Vignesh -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2017-12-20 4:15 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-01 6:13 [PATCH 0/4] pci-dra7xx: Fix legacy IRQ handling and errata handling Vignesh R
[not found] ` <20171201061311.16691-1-vigneshr-l0cyMroinI0@public.gmane.org>
2017-12-01 6:13 ` [PATCH 1/4] pci: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode Vignesh R
[not found] ` <20171201061311.16691-2-vigneshr-l0cyMroinI0@public.gmane.org>
2017-12-19 16:24 ` Lorenzo Pieralisi
2017-12-20 4:15 ` Vignesh R
2017-12-01 6:15 ` [PATCH 0/4] pci-dra7xx: Fix legacy IRQ handling and errata handling Vignesh R
2017-12-01 6:13 ` [PATCH 2/4] dt-bindings: PCI: dra7xx: Add bindings for unaligned access in host mode Vignesh R
[not found] ` <20171201061311.16691-3-vigneshr-l0cyMroinI0@public.gmane.org>
2017-12-04 21:40 ` Rob Herring
2017-12-01 6:13 ` [PATCH 3/4] ARM: dts: dra7: Add DT property to allow unaligned mem access to PCIe RC Vignesh R
2017-12-01 6:13 ` [PATCH 4/4] PCI: dwc: pci-dra7xx: Fix legacy IRQ handling Vignesh R
[not found] ` <20171201061311.16691-5-vigneshr-l0cyMroinI0@public.gmane.org>
2017-12-08 18:35 ` Lorenzo Pieralisi
[not found] ` <20171208183523.GB1885-4tUPXFaYRHv6sAKXYmQ0tx/iLCjYCKR+VpNB7YpNyf8@public.gmane.org>
2017-12-11 4:42 ` Vignesh R
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).