* [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
* [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
* [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
* [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
* 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
* 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
* 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
* 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,
linux-pci-u79uwXL29TY76Z2rM5mHXA,
devicetree-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
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
* 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, Tony Lindgren, linux-pci, linux-kernel, Rob Herring,
Chris Welch, Bjorn Helgaas, linux-omap, linux-arm-kernel
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
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).