[PATCH 0/2][Bionic][SRU Artful] Updates to Cavium ACS quirk

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

[PATCH 0/2][Bionic][SRU Artful] Updates to Cavium ACS quirk

dann frazier-4
These are clean cherry-picks that update the ACS quirk for ThunderX nodes in
ACPI mode. This fixes boot failure (SATA controller init) and console spew
issues described in the bug.

BugLink: https://bugs.launchpad.net/bugs/1736774

Vadim Lomovtsev (2):
  PCI: Set Cavium ACS capability quirk flags to assert RR/CR/SV/UF
  PCI: Apply Cavium ThunderX ACS quirk to more Root Ports

 drivers/pci/quirks.c | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

--
2.15.1


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

[PATCH 1/2][Bionic][SRU Artful] PCI: Set Cavium ACS capability quirk flags to assert RR/CR/SV/UF

dann frazier-4
From: Vadim Lomovtsev <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1736774

The Cavium ThunderX (CN8XXX) family of PCIe Root Ports does not advertise
an ACS capability.  However, the RTL internally implements similar
protection as if ACS had Request Redirection, Completion Redirection,
Source Validation, and Upstream Forwarding features enabled.

Change Cavium ACS capabilities quirk flags accordingly.

Fixes: b404bcfbf035 ("PCI: Add ACS quirk for all Cavium devices")
Signed-off-by: Vadim Lomovtsev <[hidden email]>
[bhelgaas: tidy changelog, comment, stable tag]
Signed-off-by: Bjorn Helgaas <[hidden email]>
Cc: [hidden email] # v4.6+: b77d537d00d0: PCI: Apply Cavium ACS quirk only to CN81xx/CN83xx/CN88xx devices
(cherry picked from commit 7f342678634f16795892677204366e835e450dda)
Signed-off-by: dann frazier <[hidden email]>
---
 drivers/pci/quirks.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 02b009426670..fcf734231c4d 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4253,12 +4253,14 @@ static int pci_quirk_amd_sb_acs(struct pci_dev *dev, u16 acs_flags)
 static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags)
 {
  /*
- * Cavium devices matching this quirk do not perform peer-to-peer
- * with other functions, allowing masking out these bits as if they
- * were unimplemented in the ACS capability.
+ * Cavium root ports don't advertise an ACS capability.  However,
+ * the RTL internally implements similar protection as if ACS had
+ * Request Redirection, Completion Redirection, Source Validation,
+ * and Upstream Forwarding features enabled.  Assert that the
+ * hardware implements and enables equivalent ACS functionality for
+ * these flags.
  */
- acs_flags &= ~(PCI_ACS_SV | PCI_ACS_TB | PCI_ACS_RR |
-       PCI_ACS_CR | PCI_ACS_UF | PCI_ACS_DT);
+ acs_flags &= ~(PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_SV | PCI_ACS_UF);
 
  if (!((dev->device >= 0xa000) && (dev->device <= 0xa0ff)))
  return -ENOTTY;
--
2.15.1


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

[PATCH 2/2][Bionic][SRU Artful] PCI: Apply Cavium ThunderX ACS quirk to more Root Ports

dann frazier-4
In reply to this post by dann frazier-4
From: Vadim Lomovtsev <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1736774

Extend the Cavium ThunderX ACS quirk to cover more device IDs and restrict
it to only Root Ports.

Signed-off-by: Vadim Lomovtsev <[hidden email]>
[bhelgaas: changelog, stable tag]
Signed-off-by: Bjorn Helgaas <[hidden email]>
Cc: [hidden email] # v4.12+
(cherry picked from commit f2ddaf8dfd4a5071ad09074d2f95ab85d35c8a1e)
Signed-off-by: dann frazier <[hidden email]>
---
 drivers/pci/quirks.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index fcf734231c4d..99eec22d99b7 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4250,6 +4250,19 @@ static int pci_quirk_amd_sb_acs(struct pci_dev *dev, u16 acs_flags)
 #endif
 }
 
+static bool pci_quirk_cavium_acs_match(struct pci_dev *dev)
+{
+ /*
+ * Effectively selects all downstream ports for whole ThunderX 1
+ * family by 0xf800 mask (which represents 8 SoCs), while the lower
+ * bits of device ID are used to indicate which subdevice is used
+ * within the SoC.
+ */
+ return (pci_is_pcie(dev) &&
+ (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) &&
+ ((dev->device & 0xf800) == 0xa000));
+}
+
 static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags)
 {
  /*
@@ -4262,7 +4275,7 @@ static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags)
  */
  acs_flags &= ~(PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_SV | PCI_ACS_UF);
 
- if (!((dev->device >= 0xa000) && (dev->device <= 0xa0ff)))
+ if (!pci_quirk_cavium_acs_match(dev))
  return -ENOTTY;
 
  return acs_flags ? 0 : 1;
--
2.15.1


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

Re: [PATCH 0/2][Bionic][SRU Artful] Updates to Cavium ACS quirk

Seth Forshee
In reply to this post by dann frazier-4
On Wed, Dec 06, 2017 at 01:19:45PM -0700, dann frazier wrote:
> These are clean cherry-picks that update the ACS quirk for ThunderX nodes in
> ACPI mode. This fixes boot failure (SATA controller init) and console spew
> issues described in the bug.
>
> BugLink: https://bugs.launchpad.net/bugs/1736774

Bionic has already gotten both of these patches via stable updates, so
I've marked the bug Fix Committed.

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

[RESEND][PATCH 1/2][SRU Artful] PCI: Set Cavium ACS capability quirk flags to assert RR/CR/SV/UF

dann frazier-4
In reply to this post by dann frazier-4
From: Vadim Lomovtsev <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1736774

The Cavium ThunderX (CN8XXX) family of PCIe Root Ports does not advertise
an ACS capability.  However, the RTL internally implements similar
protection as if ACS had Request Redirection, Completion Redirection,
Source Validation, and Upstream Forwarding features enabled.

Change Cavium ACS capabilities quirk flags accordingly.

Fixes: b404bcfbf035 ("PCI: Add ACS quirk for all Cavium devices")
Signed-off-by: Vadim Lomovtsev <[hidden email]>
[bhelgaas: tidy changelog, comment, stable tag]
Signed-off-by: Bjorn Helgaas <[hidden email]>
Cc: [hidden email] # v4.6+: b77d537d00d0: PCI: Apply Cavium ACS quirk only to CN81xx/CN83xx/CN88xx devices
(cherry picked from commit 7f342678634f16795892677204366e835e450dda)
Signed-off-by: dann frazier <[hidden email]>
---
 drivers/pci/quirks.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 02b009426670..fcf734231c4d 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4253,12 +4253,14 @@ static int pci_quirk_amd_sb_acs(struct pci_dev *dev, u16 acs_flags)
 static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags)
 {
  /*
- * Cavium devices matching this quirk do not perform peer-to-peer
- * with other functions, allowing masking out these bits as if they
- * were unimplemented in the ACS capability.
+ * Cavium root ports don't advertise an ACS capability.  However,
+ * the RTL internally implements similar protection as if ACS had
+ * Request Redirection, Completion Redirection, Source Validation,
+ * and Upstream Forwarding features enabled.  Assert that the
+ * hardware implements and enables equivalent ACS functionality for
+ * these flags.
  */
- acs_flags &= ~(PCI_ACS_SV | PCI_ACS_TB | PCI_ACS_RR |
-       PCI_ACS_CR | PCI_ACS_UF | PCI_ACS_DT);
+ acs_flags &= ~(PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_SV | PCI_ACS_UF);
 
  if (!((dev->device >= 0xa000) && (dev->device <= 0xa0ff)))
  return -ENOTTY;
--
2.15.1


--
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
Reply | Threaded
Open this post in threaded view
|

[RESEND][PATCH 2/2][Bionic][SRU Artful] PCI: Apply Cavium ThunderX ACS quirk to more Root Ports

dann frazier-4
In reply to this post by dann frazier-4
From: Vadim Lomovtsev <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1736774

Extend the Cavium ThunderX ACS quirk to cover more device IDs and restrict
it to only Root Ports.

Signed-off-by: Vadim Lomovtsev <[hidden email]>
[bhelgaas: changelog, stable tag]
Signed-off-by: Bjorn Helgaas <[hidden email]>
Cc: [hidden email] # v4.12+
(cherry picked from commit f2ddaf8dfd4a5071ad09074d2f95ab85d35c8a1e)
Signed-off-by: dann frazier <[hidden email]>
---
 drivers/pci/quirks.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index fcf734231c4d..99eec22d99b7 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4250,6 +4250,19 @@ static int pci_quirk_amd_sb_acs(struct pci_dev *dev, u16 acs_flags)
 #endif
 }
 
+static bool pci_quirk_cavium_acs_match(struct pci_dev *dev)
+{
+ /*
+ * Effectively selects all downstream ports for whole ThunderX 1
+ * family by 0xf800 mask (which represents 8 SoCs), while the lower
+ * bits of device ID are used to indicate which subdevice is used
+ * within the SoC.
+ */
+ return (pci_is_pcie(dev) &&
+ (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) &&
+ ((dev->device & 0xf800) == 0xa000));
+}
+
 static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags)
 {
  /*
@@ -4262,7 +4275,7 @@ static int pci_quirk_cavium_acs(struct pci_dev *dev, u16 acs_flags)
  */
  acs_flags &= ~(PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_SV | PCI_ACS_UF);
 
- if (!((dev->device >= 0xa000) && (dev->device <= 0xa0ff)))
+ if (!pci_quirk_cavium_acs_match(dev))
  return -ENOTTY;
 
  return acs_flags ? 0 : 1;
--
2.15.1


--
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
Reply | Threaded
Open this post in threaded view
|

ACK: [PATCH 0/2][Bionic][SRU Artful] Updates to Cavium ACS quirk

Marcelo Henrique Cerri
In reply to this post by dann frazier-4
Very reasonable change, with restricted scope and clean cherry-picks.

Acked-by: Marcelo Henrique Cerri <[hidden email]>

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

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

ACK: [PATCH 0/2][Bionic][SRU Artful] Updates to Cavium ACS quirk

Stefan Bader-2
In reply to this post by dann frazier-4
On 06.12.2017 21:19, dann frazier wrote:

> These are clean cherry-picks that update the ACS quirk for ThunderX nodes in
> ACPI mode. This fixes boot failure (SATA controller init) and console spew
> issues described in the bug.
>
> BugLink: https://bugs.launchpad.net/bugs/1736774
>
> Vadim Lomovtsev (2):
>   PCI: Set Cavium ACS capability quirk flags to assert RR/CR/SV/UF
>   PCI: Apply Cavium ThunderX ACS quirk to more Root Ports
>
>  drivers/pci/quirks.c | 27 +++++++++++++++++++++------
>  1 file changed, 21 insertions(+), 6 deletions(-)
>
Acked-by: Stefan Bader <[hidden email]>



--
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
|

APPLIED[Artful]: [PATCH 0/2][Bionic][SRU Artful] Updates to Cavium ACS quirk

Kleber Souza
In reply to this post by dann frazier-4
On 12/06/17 21:19, dann frazier wrote:

> These are clean cherry-picks that update the ACS quirk for ThunderX nodes in
> ACPI mode. This fixes boot failure (SATA controller init) and console spew
> issues described in the bug.
>
> BugLink: https://bugs.launchpad.net/bugs/1736774
>
> Vadim Lomovtsev (2):
>   PCI: Set Cavium ACS capability quirk flags to assert RR/CR/SV/UF
>   PCI: Apply Cavium ThunderX ACS quirk to more Root Ports
>
>  drivers/pci/quirks.c | 27 +++++++++++++++++++++------
>  1 file changed, 21 insertions(+), 6 deletions(-)
>


Applied to artful/master-next branch.

Thanks,
Kleber

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