[SRU][Artful][Bionic][Cosmic][PATCH 0/1] powerpc/eeh: Fix enabling bridge MMIO windows

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

[SRU][Artful][Bionic][Cosmic][PATCH 0/1] powerpc/eeh: Fix enabling bridge MMIO windows

Joseph Salisbury-3
BugLink: http://bugs.launchpad.net/bugs/1771344

== SRU Justification ==
IBM is requesting this patch in Ubuntu kernels to fix a regression.  The
regression was introduced in v3.11-rc1.  The patch fixes enabling bridge
MMIO windows.  Commit 13a83eac373c was also cc'd to upstream stable, and
has already landed in Xenial via upstream stable updates.

== Fix ==
13a83eac373c ("powerpc/eeh: Fix enabling bridge MMIO windows")

== Regression Potential ==
Low.  Limited to powerpc and fixes a current regression.

== Test Case ==
A test kernel was built with this patch and tested by the original bug reporter.
The bug reporter states the test kernel resolved the bug.

Michael Neuling (1):
  powerpc/eeh: Fix enabling bridge MMIO windows

 arch/powerpc/kernel/eeh_pe.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[SRU][Artful][Bionic][Cosmic][PATCH 1/1] powerpc/eeh: Fix enabling bridge MMIO windows

Joseph Salisbury-3
From: Michael Neuling <[hidden email]>

BugLink: http://bugs.launchpad.net/bugs/1771344

On boot we save the configuration space of PCIe bridges. We do this so
when we get an EEH event and everything gets reset that we can restore
them.

Unfortunately we save this state before we've enabled the MMIO space
on the bridges. Hence if we have to reset the bridge when we come back
MMIO is not enabled and we end up taking an PE freeze when the driver
starts accessing again.

This patch forces the memory/MMIO and bus mastering on when restoring
bridges on EEH. Ideally we'd do this correctly by saving the
configuration space writes later, but that will have to come later in
a larger EEH rewrite. For now we have this simple fix.

The original bug can be triggered on a boston machine by doing:
  echo 0x8000000000000000 > /sys/kernel/debug/powerpc/PCI0001/err_injct_outbound
On boston, this PHB has a PCIe switch on it.  Without this patch,
you'll see two EEH events, 1 expected and 1 the failure we are fixing
here. The second EEH event causes the anything under the PHB to
disappear (i.e. the i40e eth).

With this patch, only 1 EEH event occurs and devices properly recover.

Fixes: 652defed4875 ("powerpc/eeh: Check PCIe link after reset")
Cc: [hidden email] # v3.11+
Reported-by: Pridhiviraj Paidipeddi <[hidden email]>
Signed-off-by: Michael Neuling <[hidden email]>
Acked-by: Russell Currey <[hidden email]>
Signed-off-by: Michael Ellerman <[hidden email]>
(cherry picked from commit 13a83eac373c49c0a081cbcd137e79210fe78acd)
Signed-off-by: Joseph Salisbury <[hidden email]>
---
 arch/powerpc/kernel/eeh_pe.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/eeh_pe.c b/arch/powerpc/kernel/eeh_pe.c
index 2d4956e..ee5a67d 100644
--- a/arch/powerpc/kernel/eeh_pe.c
+++ b/arch/powerpc/kernel/eeh_pe.c
@@ -807,7 +807,8 @@ static void eeh_restore_bridge_bars(struct eeh_dev *edev)
  eeh_ops->write_config(pdn, 15*4, 4, edev->config_space[15]);
 
  /* PCI Command: 0x4 */
- eeh_ops->write_config(pdn, PCI_COMMAND, 4, edev->config_space[1]);
+ eeh_ops->write_config(pdn, PCI_COMMAND, 4, edev->config_space[1] |
+      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
 
  /* Check the PCIe link is ready */
  eeh_bridge_check_link(edev);
--
2.7.4


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [SRU][Artful][Bionic][Cosmic][PATCH 1/1] powerpc/eeh: Fix enabling bridge MMIO windows

Stefan Bader-2
On 23.05.2018 09:18, Joseph Salisbury wrote:

> From: Michael Neuling <[hidden email]>
>
> BugLink: http://bugs.launchpad.net/bugs/1771344
>
> On boot we save the configuration space of PCIe bridges. We do this so
> when we get an EEH event and everything gets reset that we can restore
> them.
>
> Unfortunately we save this state before we've enabled the MMIO space
> on the bridges. Hence if we have to reset the bridge when we come back
> MMIO is not enabled and we end up taking an PE freeze when the driver
> starts accessing again.
>
> This patch forces the memory/MMIO and bus mastering on when restoring
> bridges on EEH. Ideally we'd do this correctly by saving the
> configuration space writes later, but that will have to come later in
> a larger EEH rewrite. For now we have this simple fix.
>
> The original bug can be triggered on a boston machine by doing:
>   echo 0x8000000000000000 > /sys/kernel/debug/powerpc/PCI0001/err_injct_outbound
> On boston, this PHB has a PCIe switch on it.  Without this patch,
> you'll see two EEH events, 1 expected and 1 the failure we are fixing
> here. The second EEH event causes the anything under the PHB to
> disappear (i.e. the i40e eth).
>
> With this patch, only 1 EEH event occurs and devices properly recover.
>
> Fixes: 652defed4875 ("powerpc/eeh: Check PCIe link after reset")
> Cc: [hidden email] # v3.11+
> Reported-by: Pridhiviraj Paidipeddi <[hidden email]>
> Signed-off-by: Michael Neuling <[hidden email]>
> Acked-by: Russell Currey <[hidden email]>
> Signed-off-by: Michael Ellerman <[hidden email]>
> (cherry picked from commit 13a83eac373c49c0a081cbcd137e79210fe78acd)
> Signed-off-by: Joseph Salisbury <[hidden email]>
Acked-by: Stefan Bader <[hidden email]>

> ---
>  arch/powerpc/kernel/eeh_pe.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/kernel/eeh_pe.c b/arch/powerpc/kernel/eeh_pe.c
> index 2d4956e..ee5a67d 100644
> --- a/arch/powerpc/kernel/eeh_pe.c
> +++ b/arch/powerpc/kernel/eeh_pe.c
> @@ -807,7 +807,8 @@ static void eeh_restore_bridge_bars(struct eeh_dev *edev)
>   eeh_ops->write_config(pdn, 15*4, 4, edev->config_space[15]);
>  
>   /* PCI Command: 0x4 */
> - eeh_ops->write_config(pdn, PCI_COMMAND, 4, edev->config_space[1]);
> + eeh_ops->write_config(pdn, PCI_COMMAND, 4, edev->config_space[1] |
> +      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
>  
>   /* Check the PCIe link is ready */
>   eeh_bridge_check_link(edev);
>


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team

signature.asc (836 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

ACK: [SRU][Artful][Bionic][Cosmic][PATCH 1/1] powerpc/eeh: Fix enabling bridge MMIO windows

Kleber Souza
In reply to this post by Joseph Salisbury-3
On 05/23/18 09:18, Joseph Salisbury wrote:

> From: Michael Neuling <[hidden email]>
>
> BugLink: http://bugs.launchpad.net/bugs/1771344
>
> On boot we save the configuration space of PCIe bridges. We do this so
> when we get an EEH event and everything gets reset that we can restore
> them.
>
> Unfortunately we save this state before we've enabled the MMIO space
> on the bridges. Hence if we have to reset the bridge when we come back
> MMIO is not enabled and we end up taking an PE freeze when the driver
> starts accessing again.
>
> This patch forces the memory/MMIO and bus mastering on when restoring
> bridges on EEH. Ideally we'd do this correctly by saving the
> configuration space writes later, but that will have to come later in
> a larger EEH rewrite. For now we have this simple fix.
>
> The original bug can be triggered on a boston machine by doing:
>   echo 0x8000000000000000 > /sys/kernel/debug/powerpc/PCI0001/err_injct_outbound
> On boston, this PHB has a PCIe switch on it.  Without this patch,
> you'll see two EEH events, 1 expected and 1 the failure we are fixing
> here. The second EEH event causes the anything under the PHB to
> disappear (i.e. the i40e eth).
>
> With this patch, only 1 EEH event occurs and devices properly recover.
>
> Fixes: 652defed4875 ("powerpc/eeh: Check PCIe link after reset")
> Cc: [hidden email] # v3.11+
> Reported-by: Pridhiviraj Paidipeddi <[hidden email]>
> Signed-off-by: Michael Neuling <[hidden email]>
> Acked-by: Russell Currey <[hidden email]>
> Signed-off-by: Michael Ellerman <[hidden email]>
> (cherry picked from commit 13a83eac373c49c0a081cbcd137e79210fe78acd)
> Signed-off-by: Joseph Salisbury <[hidden email]>

Acked-by: Kleber Sacilotto de Souza <[hidden email]>

> ---
>  arch/powerpc/kernel/eeh_pe.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/kernel/eeh_pe.c b/arch/powerpc/kernel/eeh_pe.c
> index 2d4956e..ee5a67d 100644
> --- a/arch/powerpc/kernel/eeh_pe.c
> +++ b/arch/powerpc/kernel/eeh_pe.c
> @@ -807,7 +807,8 @@ static void eeh_restore_bridge_bars(struct eeh_dev *edev)
>   eeh_ops->write_config(pdn, 15*4, 4, edev->config_space[15]);
>  
>   /* PCI Command: 0x4 */
> - eeh_ops->write_config(pdn, PCI_COMMAND, 4, edev->config_space[1]);
> + eeh_ops->write_config(pdn, PCI_COMMAND, 4, edev->config_space[1] |
> +      PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
>  
>   /* Check the PCIe link is ready */
>   eeh_bridge_check_link(edev);
>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED: [SRU][Artful][Bionic][Cosmic][PATCH 0/1] powerpc/eeh: Fix enabling bridge MMIO windows

Khaled Elmously
In reply to this post by Joseph Salisbury-3
Applied to Artful -- was already applied to Bionic



On 2018-05-23 12:18:10 , Joseph Salisbury wrote:

> BugLink: http://bugs.launchpad.net/bugs/1771344
>
> == SRU Justification ==
> IBM is requesting this patch in Ubuntu kernels to fix a regression.  The
> regression was introduced in v3.11-rc1.  The patch fixes enabling bridge
> MMIO windows.  Commit 13a83eac373c was also cc'd to upstream stable, and
> has already landed in Xenial via upstream stable updates.
>
> == Fix ==
> 13a83eac373c ("powerpc/eeh: Fix enabling bridge MMIO windows")
>
> == Regression Potential ==
> Low.  Limited to powerpc and fixes a current regression.
>
> == Test Case ==
> A test kernel was built with this patch and tested by the original bug reporter.
> The bug reporter states the test kernel resolved the bug.
>
> Michael Neuling (1):
>   powerpc/eeh: Fix enabling bridge MMIO windows
>
>  arch/powerpc/kernel/eeh_pe.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> --
> 2.7.4
>
>
> --
> kernel-team mailing list
> [hidden email]
> https://lists.ubuntu.com/mailman/listinfo/kernel-team

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team