Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1472123 > unrolled thread

[PATCH] PCI: rockchip: Correct the register value for clearing client interrupts

Started byBrian Norris <briannorris@chromium.org>
First post2016-08-29 23:20 +0200
Last post2016-08-31 15:10 +0200
Articles 4 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] PCI: rockchip: Correct the register value for clearing client interrupts Brian Norris <briannorris@chromium.org> - 2016-08-29 23:20 +0200
    Re: [PATCH] PCI: rockchip: Correct the register value for clearing  client interrupts Bjorn Helgaas <helgaas@kernel.org> - 2016-08-30 02:00 +0200
      Re: [PATCH] PCI: rockchip: Correct the register value for clearing  client interrupts Shawn Lin <shawn.lin@rock-chips.com> - 2016-08-31 03:00 +0200
    Re: [PATCH] PCI: rockchip: Correct the register value for clearing  client interrupts Bjorn Helgaas <helgaas@kernel.org> - 2016-08-31 15:10 +0200

#1472123 — [PATCH] PCI: rockchip: Correct the register value for clearing client interrupts

FromBrian Norris <briannorris@chromium.org>
Date2016-08-29 23:20 +0200
Subject[PATCH] PCI: rockchip: Correct the register value for clearing client interrupts
Message-ID<sbC8i-45Z-5@gated-at.bofh.it>
I'm pretty sure the bitwise 'or' was meant for the value parameter, not
the register parameter.

This resolves an interrupt storm, where if we receive any client IRQs
(e.g., correctable errors), we fail to ever clear them properly, so they
reoccur indefinitely.

Fixes: 199410f6270e ("PCI: rockchip: Add Rockchip PCIe controller support")
Signed-off-by: Brian Norris <briannorris@chromium.org>
Cc: Shawn Lin <shawn.lin@rock-chips.com>
---
Patched against git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git pci/host-rockchip

 drivers/pci/host/pcie-rockchip.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/pci/host/pcie-rockchip.c b/drivers/pci/host/pcie-rockchip.c
index 8fb47ee9eaee..e77aec3cc869 100644
--- a/drivers/pci/host/pcie-rockchip.c
+++ b/drivers/pci/host/pcie-rockchip.c
@@ -689,9 +689,10 @@ static irqreturn_t rockchip_pcie_client_irq_handler(int irq, void *arg)
 			      PCIE_CLIENT_INT_MSG | PCIE_CLIENT_INT_HOT_RST |
 			      PCIE_CLIENT_INT_DPA | PCIE_CLIENT_INT_FATAL_ERR |
 			      PCIE_CLIENT_INT_NFATAL_ERR |
-			      PCIE_CLIENT_INT_CORR_ERR),
-			      PCIE_CLIENT_INT_STATUS |
-			      PCIE_CLIENT_INT_PHY);
+			      PCIE_CLIENT_INT_CORR_ERR |
+			      PCIE_CLIENT_INT_PHY),
+		   PCIE_CLIENT_INT_STATUS);
+
 	return IRQ_HANDLED;
 }
 
-- 
2.8.0.rc3.226.g39d4020

[toc] | [next] | [standalone]


#1472171 — Re: [PATCH] PCI: rockchip: Correct the register value for clearing client interrupts

FromBjorn Helgaas <helgaas@kernel.org>
Date2016-08-30 02:00 +0200
SubjectRe: [PATCH] PCI: rockchip: Correct the register value for clearing client interrupts
Message-ID<sbED7-5tL-9@gated-at.bofh.it>
In reply to#1472123
On Mon, Aug 29, 2016 at 02:14:11PM -0700, Brian Norris wrote:
> I'm pretty sure the bitwise 'or' was meant for the value parameter, not
> the register parameter.
> 
> This resolves an interrupt storm, where if we receive any client IRQs
> (e.g., correctable errors), we fail to ever clear them properly, so they
> reoccur indefinitely.
> 
> Fixes: 199410f6270e ("PCI: rockchip: Add Rockchip PCIe controller support")
> Signed-off-by: Brian Norris <briannorris@chromium.org>
> Cc: Shawn Lin <shawn.lin@rock-chips.com>

Shawn, please confirm.  If this patch is correct, I'll fold it into
the initial commit that adds the driver.

> ---
> Patched against git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git pci/host-rockchip
> 
>  drivers/pci/host/pcie-rockchip.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/pci/host/pcie-rockchip.c b/drivers/pci/host/pcie-rockchip.c
> index 8fb47ee9eaee..e77aec3cc869 100644
> --- a/drivers/pci/host/pcie-rockchip.c
> +++ b/drivers/pci/host/pcie-rockchip.c
> @@ -689,9 +689,10 @@ static irqreturn_t rockchip_pcie_client_irq_handler(int irq, void *arg)
>  			      PCIE_CLIENT_INT_MSG | PCIE_CLIENT_INT_HOT_RST |
>  			      PCIE_CLIENT_INT_DPA | PCIE_CLIENT_INT_FATAL_ERR |
>  			      PCIE_CLIENT_INT_NFATAL_ERR |
> -			      PCIE_CLIENT_INT_CORR_ERR),
> -			      PCIE_CLIENT_INT_STATUS |
> -			      PCIE_CLIENT_INT_PHY);
> +			      PCIE_CLIENT_INT_CORR_ERR |
> +			      PCIE_CLIENT_INT_PHY),
> +		   PCIE_CLIENT_INT_STATUS);
> +
>  	return IRQ_HANDLED;
>  }
>  
> -- 
> 2.8.0.rc3.226.g39d4020
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

[toc] | [prev] | [next] | [standalone]


#1472962 — Re: [PATCH] PCI: rockchip: Correct the register value for clearing client interrupts

FromShawn Lin <shawn.lin@rock-chips.com>
Date2016-08-31 03:00 +0200
SubjectRe: [PATCH] PCI: rockchip: Correct the register value for clearing client interrupts
Message-ID<sc22J-3Mi-1@gated-at.bofh.it>
In reply to#1472171
On 2016/8/30 7:57, Bjorn Helgaas wrote:
> On Mon, Aug 29, 2016 at 02:14:11PM -0700, Brian Norris wrote:
>> I'm pretty sure the bitwise 'or' was meant for the value parameter, not
>> the register parameter.
>>
>> This resolves an interrupt storm, where if we receive any client IRQs
>> (e.g., correctable errors), we fail to ever clear them properly, so they
>> reoccur indefinitely.
>>
>> Fixes: 199410f6270e ("PCI: rockchip: Add Rockchip PCIe controller support")
>> Signed-off-by: Brian Norris <briannorris@chromium.org>
>> Cc: Shawn Lin <shawn.lin@rock-chips.com>
>
> Shawn, please confirm.  If this patch is correct, I'll fold it into
> the initial commit that adds the driver.

yes, Brian's patch is correct. I probably didn't notice this as
the client interrput on EVB-rev1 board which I was using is broken, so
my SSD didn't actually yelled at this irqstorm.


Brain, thanks for fixing this.

>
>> ---
>> Patched against git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git pci/host-rockchip
>>
>>  drivers/pci/host/pcie-rockchip.c | 7 ++++---
>>  1 file changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/pci/host/pcie-rockchip.c b/drivers/pci/host/pcie-rockchip.c
>> index 8fb47ee9eaee..e77aec3cc869 100644
>> --- a/drivers/pci/host/pcie-rockchip.c
>> +++ b/drivers/pci/host/pcie-rockchip.c
>> @@ -689,9 +689,10 @@ static irqreturn_t rockchip_pcie_client_irq_handler(int irq, void *arg)
>>  			      PCIE_CLIENT_INT_MSG | PCIE_CLIENT_INT_HOT_RST |
>>  			      PCIE_CLIENT_INT_DPA | PCIE_CLIENT_INT_FATAL_ERR |
>>  			      PCIE_CLIENT_INT_NFATAL_ERR |
>> -			      PCIE_CLIENT_INT_CORR_ERR),
>> -			      PCIE_CLIENT_INT_STATUS |
>> -			      PCIE_CLIENT_INT_PHY);
>> +			      PCIE_CLIENT_INT_CORR_ERR |
>> +			      PCIE_CLIENT_INT_PHY),
>> +		   PCIE_CLIENT_INT_STATUS);
>> +
>>  	return IRQ_HANDLED;
>>  }
>>
>> --
>> 2.8.0.rc3.226.g39d4020
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>


-- 
Best Regards
Shawn Lin

[toc] | [prev] | [next] | [standalone]


#1473441 — Re: [PATCH] PCI: rockchip: Correct the register value for clearing client interrupts

FromBjorn Helgaas <helgaas@kernel.org>
Date2016-08-31 15:10 +0200
SubjectRe: [PATCH] PCI: rockchip: Correct the register value for clearing client interrupts
Message-ID<scdrb-2O7-23@gated-at.bofh.it>
In reply to#1472123
On Mon, Aug 29, 2016 at 02:14:11PM -0700, Brian Norris wrote:
> I'm pretty sure the bitwise 'or' was meant for the value parameter, not
> the register parameter.
> 
> This resolves an interrupt storm, where if we receive any client IRQs
> (e.g., correctable errors), we fail to ever clear them properly, so they
> reoccur indefinitely.
> 
> Fixes: 199410f6270e ("PCI: rockchip: Add Rockchip PCIe controller support")
> Signed-off-by: Brian Norris <briannorris@chromium.org>
> Cc: Shawn Lin <shawn.lin@rock-chips.com>

I folded this into the initial commit, since Shawn confirmed it is correct.

> ---
> Patched against git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git pci/host-rockchip
> 
>  drivers/pci/host/pcie-rockchip.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/pci/host/pcie-rockchip.c b/drivers/pci/host/pcie-rockchip.c
> index 8fb47ee9eaee..e77aec3cc869 100644
> --- a/drivers/pci/host/pcie-rockchip.c
> +++ b/drivers/pci/host/pcie-rockchip.c
> @@ -689,9 +689,10 @@ static irqreturn_t rockchip_pcie_client_irq_handler(int irq, void *arg)
>  			      PCIE_CLIENT_INT_MSG | PCIE_CLIENT_INT_HOT_RST |
>  			      PCIE_CLIENT_INT_DPA | PCIE_CLIENT_INT_FATAL_ERR |
>  			      PCIE_CLIENT_INT_NFATAL_ERR |
> -			      PCIE_CLIENT_INT_CORR_ERR),
> -			      PCIE_CLIENT_INT_STATUS |
> -			      PCIE_CLIENT_INT_PHY);
> +			      PCIE_CLIENT_INT_CORR_ERR |
> +			      PCIE_CLIENT_INT_PHY),
> +		   PCIE_CLIENT_INT_STATUS);
> +
>  	return IRQ_HANDLED;
>  }
>  
> -- 
> 2.8.0.rc3.226.g39d4020
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web