All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] PCI/AER, CXL: Fix appropriate _OSC check for CXL RAS Cap
@ 2023-07-21 21:47 Smita Koralahalli
  2023-07-21 21:47 ` [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers Smita Koralahalli
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Smita Koralahalli @ 2023-07-21 21:47 UTC (permalink / raw)
  To: linux-pci, linux-kernel, linux-cxl
  Cc: Bjorn Helgaas, oohall, Lukas Wunner, Kuppuswamy Sathyanarayanan,
	Mahesh J Salgaonkar, Alison Schofield, Vishal Verma, Ira Weiny,
	Ben Widawsky, Dan Williams, Jonathan Cameron, Yazen Ghannam,
	Terry Bowman, Robert Richter, Smita Koralahalli

This series of patches fixes the appropriate _OSC check for CXL RAS
registers.

First patch addresses the _OSC check.

Second patch moves around pcie_aer_is_native() function declaration to a
common location to be used by cxl/pci module and third patch reuses
pcie_aer_is_native() in cxl/pci module.

Link to v1:
https://lore.kernel.org/all/20230719192313.38591-1-Smita.KoralahalliChannabasappa@amd.com

Smita Koralahalli (3):
  cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS
    registers
  PCI/AER: Export pcie_aer_is_native()
  cxl/pci: Replace host_bridge->native_aer with pcie_aer_is_native()

 drivers/cxl/pci.c          | 7 +++----
 drivers/pci/pcie/aer.c     | 1 +
 drivers/pci/pcie/portdrv.h | 2 --
 include/linux/aer.h        | 2 ++
 4 files changed, 6 insertions(+), 6 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers
  2023-07-21 21:47 [PATCH v2 0/3] PCI/AER, CXL: Fix appropriate _OSC check for CXL RAS Cap Smita Koralahalli
@ 2023-07-21 21:47 ` Smita Koralahalli
  2023-07-22  0:18   ` Sathyanarayanan Kuppuswamy
                     ` (2 more replies)
  2023-07-21 21:47 ` [PATCH v2 2/3] PCI/AER: Export pcie_aer_is_native() Smita Koralahalli
  2023-07-21 21:47 ` [PATCH v2 3/3] cxl/pci: Replace host_bridge->native_aer with pcie_aer_is_native() Smita Koralahalli
  2 siblings, 3 replies; 15+ messages in thread
From: Smita Koralahalli @ 2023-07-21 21:47 UTC (permalink / raw)
  To: linux-pci, linux-kernel, linux-cxl
  Cc: Bjorn Helgaas, oohall, Lukas Wunner, Kuppuswamy Sathyanarayanan,
	Mahesh J Salgaonkar, Alison Schofield, Vishal Verma, Ira Weiny,
	Ben Widawsky, Dan Williams, Jonathan Cameron, Yazen Ghannam,
	Terry Bowman, Robert Richter, Smita Koralahalli

According to Section 9.17.2, Table 9-26 of CXL Specification [1], owner
of AER should also own CXL Protocol Error Management as there is no
explicit control of CXL Protocol error. And the CXL RAS Cap registers
reported on Protocol errors should check for AER _OSC rather than CXL
Memory Error Reporting Control _OSC.

The CXL Memory Error Reporting Control _OSC specifically highlights
handling Memory Error Logging and Signaling Enhancements. These kinds of
errors are reported through a device's mailbox and can be managed
independently from CXL Protocol Errors.

This change fixes handling and reporting CXL Protocol Errors and RAS
registers natively with native AER and FW-First CXL Memory Error Reporting
Control.

[1] Compute Express Link (CXL) Specification, Revision 3.1, Aug 1 2022.

Fixes: 248529edc86f ("cxl: add RAS status unmasking for CXL")
Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
---
v2:
	Added fixes tag.
	Included what the patch fixes in commit message.
---
 drivers/cxl/pci.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
index 1cb1494c28fe..2323169b6e5f 100644
--- a/drivers/cxl/pci.c
+++ b/drivers/cxl/pci.c
@@ -541,9 +541,9 @@ static int cxl_pci_ras_unmask(struct pci_dev *pdev)
 		return 0;
 	}
 
-	/* BIOS has CXL error control */
-	if (!host_bridge->native_cxl_error)
-		return -ENXIO;
+	/* BIOS has PCIe AER error control */
+	if (!host_bridge->native_aer)
+		return 0;
 
 	rc = pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &cap);
 	if (rc)
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 2/3] PCI/AER: Export pcie_aer_is_native()
  2023-07-21 21:47 [PATCH v2 0/3] PCI/AER, CXL: Fix appropriate _OSC check for CXL RAS Cap Smita Koralahalli
  2023-07-21 21:47 ` [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers Smita Koralahalli
@ 2023-07-21 21:47 ` Smita Koralahalli
  2023-07-24 12:42   ` Robert Richter
  2023-08-08  3:20   ` Dan Williams
  2023-07-21 21:47 ` [PATCH v2 3/3] cxl/pci: Replace host_bridge->native_aer with pcie_aer_is_native() Smita Koralahalli
  2 siblings, 2 replies; 15+ messages in thread
From: Smita Koralahalli @ 2023-07-21 21:47 UTC (permalink / raw)
  To: linux-pci, linux-kernel, linux-cxl
  Cc: Bjorn Helgaas, oohall, Lukas Wunner, Kuppuswamy Sathyanarayanan,
	Mahesh J Salgaonkar, Alison Schofield, Vishal Verma, Ira Weiny,
	Ben Widawsky, Dan Williams, Jonathan Cameron, Yazen Ghannam,
	Terry Bowman, Robert Richter, Smita Koralahalli

Export and move the declaration of pcie_aer_is_native() to a common header
file to be reused by cxl/pci module.

Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
---
v2:
	Fixed $SUBJECT
---
 drivers/pci/pcie/aer.c     | 1 +
 drivers/pci/pcie/portdrv.h | 2 --
 include/linux/aer.h        | 2 ++
 3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
index f6c24ded134c..87d90dbda023 100644
--- a/drivers/pci/pcie/aer.c
+++ b/drivers/pci/pcie/aer.c
@@ -229,6 +229,7 @@ int pcie_aer_is_native(struct pci_dev *dev)
 
 	return pcie_ports_native || host->native_aer;
 }
+EXPORT_SYMBOL_GPL(pcie_aer_is_native);
 
 int pci_enable_pcie_error_reporting(struct pci_dev *dev)
 {
diff --git a/drivers/pci/pcie/portdrv.h b/drivers/pci/pcie/portdrv.h
index 58a2b1a1cae4..1f3803bde7ee 100644
--- a/drivers/pci/pcie/portdrv.h
+++ b/drivers/pci/pcie/portdrv.h
@@ -29,10 +29,8 @@ extern bool pcie_ports_dpc_native;
 
 #ifdef CONFIG_PCIEAER
 int pcie_aer_init(void);
-int pcie_aer_is_native(struct pci_dev *dev);
 #else
 static inline int pcie_aer_init(void) { return 0; }
-static inline int pcie_aer_is_native(struct pci_dev *dev) { return 0; }
 #endif
 
 #ifdef CONFIG_HOTPLUG_PCI_PCIE
diff --git a/include/linux/aer.h b/include/linux/aer.h
index 3a3ab05e13fd..94ce49a5f8d5 100644
--- a/include/linux/aer.h
+++ b/include/linux/aer.h
@@ -45,6 +45,7 @@ struct aer_capability_regs {
 int pci_enable_pcie_error_reporting(struct pci_dev *dev);
 int pci_disable_pcie_error_reporting(struct pci_dev *dev);
 int pci_aer_clear_nonfatal_status(struct pci_dev *dev);
+int pcie_aer_is_native(struct pci_dev *dev);
 #else
 static inline int pci_enable_pcie_error_reporting(struct pci_dev *dev)
 {
@@ -58,6 +59,7 @@ static inline int pci_aer_clear_nonfatal_status(struct pci_dev *dev)
 {
 	return -EINVAL;
 }
+static inline int pcie_aer_is_native(struct pci_dev *dev) { return 0; }
 #endif
 
 void cper_print_aer(struct pci_dev *dev, int aer_severity,
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 3/3] cxl/pci: Replace host_bridge->native_aer with pcie_aer_is_native()
  2023-07-21 21:47 [PATCH v2 0/3] PCI/AER, CXL: Fix appropriate _OSC check for CXL RAS Cap Smita Koralahalli
  2023-07-21 21:47 ` [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers Smita Koralahalli
  2023-07-21 21:47 ` [PATCH v2 2/3] PCI/AER: Export pcie_aer_is_native() Smita Koralahalli
@ 2023-07-21 21:47 ` Smita Koralahalli
  2023-07-22  0:17   ` Sathyanarayanan Kuppuswamy
                     ` (2 more replies)
  2 siblings, 3 replies; 15+ messages in thread
From: Smita Koralahalli @ 2023-07-21 21:47 UTC (permalink / raw)
  To: linux-pci, linux-kernel, linux-cxl
  Cc: Bjorn Helgaas, oohall, Lukas Wunner, Kuppuswamy Sathyanarayanan,
	Mahesh J Salgaonkar, Alison Schofield, Vishal Verma, Ira Weiny,
	Ben Widawsky, Dan Williams, Jonathan Cameron, Yazen Ghannam,
	Terry Bowman, Robert Richter, Smita Koralahalli

Reuse pcie_aer_is_native() to determine the native AER ownership.

Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
---
v2:
	Replaced pcie_aer_is_native() at a later stage for automated
	backports.
---
 drivers/cxl/pci.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
index 2323169b6e5f..44a21ab7add5 100644
--- a/drivers/cxl/pci.c
+++ b/drivers/cxl/pci.c
@@ -529,7 +529,6 @@ static int cxl_pci_setup_regs(struct pci_dev *pdev, enum cxl_regloc_type type,
 
 static int cxl_pci_ras_unmask(struct pci_dev *pdev)
 {
-	struct pci_host_bridge *host_bridge = pci_find_host_bridge(pdev->bus);
 	struct cxl_dev_state *cxlds = pci_get_drvdata(pdev);
 	void __iomem *addr;
 	u32 orig_val, val, mask;
@@ -542,7 +541,7 @@ static int cxl_pci_ras_unmask(struct pci_dev *pdev)
 	}
 
 	/* BIOS has PCIe AER error control */
-	if (!host_bridge->native_aer)
+	if (!pcie_aer_is_native(pdev))
 		return 0;
 
 	rc = pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &cap);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 3/3] cxl/pci: Replace host_bridge->native_aer with pcie_aer_is_native()
  2023-07-21 21:47 ` [PATCH v2 3/3] cxl/pci: Replace host_bridge->native_aer with pcie_aer_is_native() Smita Koralahalli
@ 2023-07-22  0:17   ` Sathyanarayanan Kuppuswamy
  2023-07-24 12:44   ` Robert Richter
  2023-08-08  3:21   ` Dan Williams
  2 siblings, 0 replies; 15+ messages in thread
From: Sathyanarayanan Kuppuswamy @ 2023-07-22  0:17 UTC (permalink / raw)
  To: Smita Koralahalli, linux-pci, linux-kernel, linux-cxl
  Cc: Bjorn Helgaas, oohall, Lukas Wunner, Mahesh J Salgaonkar,
	Alison Schofield, Vishal Verma, Ira Weiny, Ben Widawsky,
	Dan Williams, Jonathan Cameron, Yazen Ghannam, Terry Bowman,
	Robert Richter



On 7/21/23 2:47 PM, Smita Koralahalli wrote:
> Reuse pcie_aer_is_native() to determine the native AER ownership.

Although it is straightforward, IMO, the commit log should include
few words about *why* you are making this change.

For example, usage of host_bride->native_aer does not cover command
line override of AER ownership. So use pcie_aer_is_native() to
determine the ownership.

With that fixed,

Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>

> 
> Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
> ---
> v2:
> 	Replaced pcie_aer_is_native() at a later stage for automated
> 	backports.
> ---
>  drivers/cxl/pci.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
> index 2323169b6e5f..44a21ab7add5 100644
> --- a/drivers/cxl/pci.c
> +++ b/drivers/cxl/pci.c
> @@ -529,7 +529,6 @@ static int cxl_pci_setup_regs(struct pci_dev *pdev, enum cxl_regloc_type type,
>  
>  static int cxl_pci_ras_unmask(struct pci_dev *pdev)
>  {
> -	struct pci_host_bridge *host_bridge = pci_find_host_bridge(pdev->bus);
>  	struct cxl_dev_state *cxlds = pci_get_drvdata(pdev);
>  	void __iomem *addr;
>  	u32 orig_val, val, mask;
> @@ -542,7 +541,7 @@ static int cxl_pci_ras_unmask(struct pci_dev *pdev)
>  	}
>  
>  	/* BIOS has PCIe AER error control */
> -	if (!host_bridge->native_aer)
> +	if (!pcie_aer_is_native(pdev))
>  		return 0;
>  
>  	rc = pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &cap);

-- 
Sathyanarayanan Kuppuswamy
Linux Kernel Developer

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers
  2023-07-21 21:47 ` [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers Smita Koralahalli
@ 2023-07-22  0:18   ` Sathyanarayanan Kuppuswamy
  2023-07-24 21:59     ` Smita Koralahalli
  2023-07-24 12:02   ` Robert Richter
  2023-08-08  3:17   ` Dan Williams
  2 siblings, 1 reply; 15+ messages in thread
From: Sathyanarayanan Kuppuswamy @ 2023-07-22  0:18 UTC (permalink / raw)
  To: Smita Koralahalli, linux-pci, linux-kernel, linux-cxl
  Cc: Bjorn Helgaas, oohall, Lukas Wunner, Mahesh J Salgaonkar,
	Alison Schofield, Vishal Verma, Ira Weiny, Ben Widawsky,
	Dan Williams, Jonathan Cameron, Yazen Ghannam, Terry Bowman,
	Robert Richter



On 7/21/23 2:47 PM, Smita Koralahalli wrote:
> According to Section 9.17.2, Table 9-26 of CXL Specification [1], owner
> of AER should also own CXL Protocol Error Management as there is no
> explicit control of CXL Protocol error. And the CXL RAS Cap registers
> reported on Protocol errors should check for AER _OSC rather than CXL
> Memory Error Reporting Control _OSC.
> 
> The CXL Memory Error Reporting Control _OSC specifically highlights
> handling Memory Error Logging and Signaling Enhancements. These kinds of
> errors are reported through a device's mailbox and can be managed
> independently from CXL Protocol Errors.
> 
> This change fixes handling and reporting CXL Protocol Errors and RAS
> registers natively with native AER and FW-First CXL Memory Error Reporting
> Control.
> 
> [1] Compute Express Link (CXL) Specification, Revision 3.1, Aug 1 2022.
> 
> Fixes: 248529edc86f ("cxl: add RAS status unmasking for CXL")
> Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
> ---
> v2:
> 	Added fixes tag.
> 	Included what the patch fixes in commit message.
> ---
>  drivers/cxl/pci.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
> index 1cb1494c28fe..2323169b6e5f 100644
> --- a/drivers/cxl/pci.c
> +++ b/drivers/cxl/pci.c
> @@ -541,9 +541,9 @@ static int cxl_pci_ras_unmask(struct pci_dev *pdev)
>  		return 0;
>  	}
>  
> -	/* BIOS has CXL error control */
> -	if (!host_bridge->native_cxl_error)
> -		return -ENXIO;
> +	/* BIOS has PCIe AER error control */
> +	if (!host_bridge->native_aer)
> +		return 0;

Why not directly use pcie_aer_is_native() here?

>  
>  	rc = pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &cap);
>  	if (rc)

-- 
Sathyanarayanan Kuppuswamy
Linux Kernel Developer

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers
  2023-07-21 21:47 ` [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers Smita Koralahalli
  2023-07-22  0:18   ` Sathyanarayanan Kuppuswamy
@ 2023-07-24 12:02   ` Robert Richter
  2023-08-08  3:17   ` Dan Williams
  2 siblings, 0 replies; 15+ messages in thread
From: Robert Richter @ 2023-07-24 12:02 UTC (permalink / raw)
  To: Smita Koralahalli
  Cc: linux-pci, linux-kernel, linux-cxl, Bjorn Helgaas, oohall,
	Lukas Wunner, Kuppuswamy Sathyanarayanan, Mahesh J Salgaonkar,
	Alison Schofield, Vishal Verma, Ira Weiny, Ben Widawsky,
	Dan Williams, Jonathan Cameron, Yazen Ghannam, Terry Bowman

On 21.07.23 21:47:38, Smita Koralahalli wrote:
> According to Section 9.17.2, Table 9-26 of CXL Specification [1], owner
> of AER should also own CXL Protocol Error Management as there is no
> explicit control of CXL Protocol error. And the CXL RAS Cap registers
> reported on Protocol errors should check for AER _OSC rather than CXL
> Memory Error Reporting Control _OSC.
> 
> The CXL Memory Error Reporting Control _OSC specifically highlights
> handling Memory Error Logging and Signaling Enhancements. These kinds of
> errors are reported through a device's mailbox and can be managed
> independently from CXL Protocol Errors.
> 
> This change fixes handling and reporting CXL Protocol Errors and RAS
> registers natively with native AER and FW-First CXL Memory Error Reporting
> Control.
> 
> [1] Compute Express Link (CXL) Specification, Revision 3.1, Aug 1 2022.
> 
> Fixes: 248529edc86f ("cxl: add RAS status unmasking for CXL")
> Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>

Reviewed-by: Robert Richter <rrichter@amd.com>

> ---
> v2:
> 	Added fixes tag.
> 	Included what the patch fixes in commit message.
> ---
>  drivers/cxl/pci.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
> index 1cb1494c28fe..2323169b6e5f 100644
> --- a/drivers/cxl/pci.c
> +++ b/drivers/cxl/pci.c
> @@ -541,9 +541,9 @@ static int cxl_pci_ras_unmask(struct pci_dev *pdev)
>  		return 0;
>  	}
>  
> -	/* BIOS has CXL error control */
> -	if (!host_bridge->native_cxl_error)
> -		return -ENXIO;
> +	/* BIOS has PCIe AER error control */
> +	if (!host_bridge->native_aer)
> +		return 0;
>  
>  	rc = pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &cap);
>  	if (rc)
> -- 
> 2.17.1
> 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 2/3] PCI/AER: Export pcie_aer_is_native()
  2023-07-21 21:47 ` [PATCH v2 2/3] PCI/AER: Export pcie_aer_is_native() Smita Koralahalli
@ 2023-07-24 12:42   ` Robert Richter
  2023-08-08  3:20   ` Dan Williams
  1 sibling, 0 replies; 15+ messages in thread
From: Robert Richter @ 2023-07-24 12:42 UTC (permalink / raw)
  To: Smita Koralahalli
  Cc: linux-pci, linux-kernel, linux-cxl, Bjorn Helgaas, oohall,
	Lukas Wunner, Kuppuswamy Sathyanarayanan, Mahesh J Salgaonkar,
	Alison Schofield, Vishal Verma, Ira Weiny, Ben Widawsky,
	Dan Williams, Jonathan Cameron, Yazen Ghannam, Terry Bowman

On 21.07.23 21:47:39, Smita Koralahalli wrote:
> Export and move the declaration of pcie_aer_is_native() to a common header
> file to be reused by cxl/pci module.
> 
> Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>

Reviewed-by: Robert Richter <rrichter@amd.com>

> ---
> v2:
> 	Fixed $SUBJECT
> ---
>  drivers/pci/pcie/aer.c     | 1 +
>  drivers/pci/pcie/portdrv.h | 2 --
>  include/linux/aer.h        | 2 ++
>  3 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
> index f6c24ded134c..87d90dbda023 100644
> --- a/drivers/pci/pcie/aer.c
> +++ b/drivers/pci/pcie/aer.c
> @@ -229,6 +229,7 @@ int pcie_aer_is_native(struct pci_dev *dev)
>  
>  	return pcie_ports_native || host->native_aer;
>  }
> +EXPORT_SYMBOL_GPL(pcie_aer_is_native);
>  
>  int pci_enable_pcie_error_reporting(struct pci_dev *dev)
>  {
> diff --git a/drivers/pci/pcie/portdrv.h b/drivers/pci/pcie/portdrv.h
> index 58a2b1a1cae4..1f3803bde7ee 100644
> --- a/drivers/pci/pcie/portdrv.h
> +++ b/drivers/pci/pcie/portdrv.h
> @@ -29,10 +29,8 @@ extern bool pcie_ports_dpc_native;
>  
>  #ifdef CONFIG_PCIEAER
>  int pcie_aer_init(void);
> -int pcie_aer_is_native(struct pci_dev *dev);
>  #else
>  static inline int pcie_aer_init(void) { return 0; }
> -static inline int pcie_aer_is_native(struct pci_dev *dev) { return 0; }
>  #endif
>  
>  #ifdef CONFIG_HOTPLUG_PCI_PCIE
> diff --git a/include/linux/aer.h b/include/linux/aer.h
> index 3a3ab05e13fd..94ce49a5f8d5 100644
> --- a/include/linux/aer.h
> +++ b/include/linux/aer.h
> @@ -45,6 +45,7 @@ struct aer_capability_regs {
>  int pci_enable_pcie_error_reporting(struct pci_dev *dev);
>  int pci_disable_pcie_error_reporting(struct pci_dev *dev);
>  int pci_aer_clear_nonfatal_status(struct pci_dev *dev);
> +int pcie_aer_is_native(struct pci_dev *dev);
>  #else
>  static inline int pci_enable_pcie_error_reporting(struct pci_dev *dev)
>  {
> @@ -58,6 +59,7 @@ static inline int pci_aer_clear_nonfatal_status(struct pci_dev *dev)
>  {
>  	return -EINVAL;
>  }
> +static inline int pcie_aer_is_native(struct pci_dev *dev) { return 0; }
>  #endif
>  
>  void cper_print_aer(struct pci_dev *dev, int aer_severity,
> -- 
> 2.17.1
> 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 3/3] cxl/pci: Replace host_bridge->native_aer with pcie_aer_is_native()
  2023-07-21 21:47 ` [PATCH v2 3/3] cxl/pci: Replace host_bridge->native_aer with pcie_aer_is_native() Smita Koralahalli
  2023-07-22  0:17   ` Sathyanarayanan Kuppuswamy
@ 2023-07-24 12:44   ` Robert Richter
  2023-08-08  3:21   ` Dan Williams
  2 siblings, 0 replies; 15+ messages in thread
From: Robert Richter @ 2023-07-24 12:44 UTC (permalink / raw)
  To: Smita Koralahalli
  Cc: linux-pci, linux-kernel, linux-cxl, Bjorn Helgaas, oohall,
	Lukas Wunner, Kuppuswamy Sathyanarayanan, Mahesh J Salgaonkar,
	Alison Schofield, Vishal Verma, Ira Weiny, Ben Widawsky,
	Dan Williams, Jonathan Cameron, Yazen Ghannam, Terry Bowman

On 21.07.23 21:47:40, Smita Koralahalli wrote:
> Reuse pcie_aer_is_native() to determine the native AER ownership.
> 
> Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>

With Sathyanarayanan comments addressed:

Reviewed-by: Robert Richter <rrichter@amd.com>

> ---
> v2:
> 	Replaced pcie_aer_is_native() at a later stage for automated
> 	backports.
> ---
>  drivers/cxl/pci.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
> index 2323169b6e5f..44a21ab7add5 100644
> --- a/drivers/cxl/pci.c
> +++ b/drivers/cxl/pci.c
> @@ -529,7 +529,6 @@ static int cxl_pci_setup_regs(struct pci_dev *pdev, enum cxl_regloc_type type,
>  
>  static int cxl_pci_ras_unmask(struct pci_dev *pdev)
>  {
> -	struct pci_host_bridge *host_bridge = pci_find_host_bridge(pdev->bus);
>  	struct cxl_dev_state *cxlds = pci_get_drvdata(pdev);
>  	void __iomem *addr;
>  	u32 orig_val, val, mask;
> @@ -542,7 +541,7 @@ static int cxl_pci_ras_unmask(struct pci_dev *pdev)
>  	}
>  
>  	/* BIOS has PCIe AER error control */
> -	if (!host_bridge->native_aer)
> +	if (!pcie_aer_is_native(pdev))
>  		return 0;
>  
>  	rc = pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &cap);
> -- 
> 2.17.1
> 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers
  2023-07-22  0:18   ` Sathyanarayanan Kuppuswamy
@ 2023-07-24 21:59     ` Smita Koralahalli
  2023-08-08  3:22       ` Dan Williams
  0 siblings, 1 reply; 15+ messages in thread
From: Smita Koralahalli @ 2023-07-24 21:59 UTC (permalink / raw)
  To: Sathyanarayanan Kuppuswamy, linux-pci, linux-kernel, linux-cxl
  Cc: Bjorn Helgaas, oohall, Lukas Wunner, Mahesh J Salgaonkar,
	Alison Schofield, Vishal Verma, Ira Weiny, Ben Widawsky,
	Dan Williams, Jonathan Cameron, Yazen Ghannam, Terry Bowman,
	Robert Richter


>> -	/* BIOS has CXL error control */
>> -	if (!host_bridge->native_cxl_error)
>> -		return -ENXIO;
>> +	/* BIOS has PCIe AER error control */
>> +	if (!host_bridge->native_aer)
>> +		return 0;
> 
> Why not directly use pcie_aer_is_native() here?
Yeah, this was in my v1. But changed as per Robert's comments, to be 
applicable for automated backports..

https://lore.kernel.org/all/ZLkxiZv3lWfazwVH@rric.localdomain/

Please advice.

Thanks,
Smita
> 
>>   
>>   	rc = pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &cap);
>>   	if (rc)
> 


^ permalink raw reply	[flat|nested] 15+ messages in thread

* RE: [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers
  2023-07-21 21:47 ` [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers Smita Koralahalli
  2023-07-22  0:18   ` Sathyanarayanan Kuppuswamy
  2023-07-24 12:02   ` Robert Richter
@ 2023-08-08  3:17   ` Dan Williams
  2023-08-08 19:37     ` Smita Koralahalli
  2 siblings, 1 reply; 15+ messages in thread
From: Dan Williams @ 2023-08-08  3:17 UTC (permalink / raw)
  To: Smita Koralahalli, linux-pci, linux-kernel, linux-cxl
  Cc: Bjorn Helgaas, oohall, Lukas Wunner, Kuppuswamy Sathyanarayanan,
	Mahesh J Salgaonkar, Alison Schofield, Vishal Verma, Ira Weiny,
	Ben Widawsky, Dan Williams, Jonathan Cameron, Yazen Ghannam,
	Terry Bowman, Robert Richter, Smita Koralahalli

Smita Koralahalli wrote:
> According to Section 9.17.2, Table 9-26 of CXL Specification [1], owner
> of AER should also own CXL Protocol Error Management as there is no
> explicit control of CXL Protocol error. And the CXL RAS Cap registers
> reported on Protocol errors should check for AER _OSC rather than CXL
> Memory Error Reporting Control _OSC.
> 
> The CXL Memory Error Reporting Control _OSC specifically highlights
> handling Memory Error Logging and Signaling Enhancements. These kinds of
> errors are reported through a device's mailbox and can be managed
> independently from CXL Protocol Errors.
> 
> This change fixes handling and reporting CXL Protocol Errors and RAS
> registers natively with native AER and FW-First CXL Memory Error Reporting
> Control.

I feel like this could be said more succinctly and with an indication of
what the end user should expect to see. Something like:

"cxl_pci fails to unmask CXL protocol errors when CXL memory error
reporting is not granted native control. Given that CXL memory error
reporting uses the event interface and protocol errors use AER, unmask
protocol errors based only on the native AER setting. Without this
change end user deployments will fail to report protocol errors in the
case where native memory error handling is not granted to Linux."

> 
> [1] Compute Express Link (CXL) Specification, Revision 3.1, Aug 1 2022.
> 
> Fixes: 248529edc86f ("cxl: add RAS status unmasking for CXL")
> Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
> ---
> v2:
> 	Added fixes tag.
> 	Included what the patch fixes in commit message.
> ---
>  drivers/cxl/pci.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
> index 1cb1494c28fe..2323169b6e5f 100644
> --- a/drivers/cxl/pci.c
> +++ b/drivers/cxl/pci.c
> @@ -541,9 +541,9 @@ static int cxl_pci_ras_unmask(struct pci_dev *pdev)
>  		return 0;
>  	}
>  
> -	/* BIOS has CXL error control */
> -	if (!host_bridge->native_cxl_error)
> -		return -ENXIO;
> +	/* BIOS has PCIe AER error control */
> +	if (!host_bridge->native_aer)
> +		return 0;

The error code does not matter here and changing it makes the patch that
bit much more noisier than it needs to be. So just leave it as:

	return -ENXIO;

>  
>  	rc = pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &cap);
>  	if (rc)
> -- 
> 2.17.1
> 




^ permalink raw reply	[flat|nested] 15+ messages in thread

* RE: [PATCH v2 2/3] PCI/AER: Export pcie_aer_is_native()
  2023-07-21 21:47 ` [PATCH v2 2/3] PCI/AER: Export pcie_aer_is_native() Smita Koralahalli
  2023-07-24 12:42   ` Robert Richter
@ 2023-08-08  3:20   ` Dan Williams
  1 sibling, 0 replies; 15+ messages in thread
From: Dan Williams @ 2023-08-08  3:20 UTC (permalink / raw)
  To: Smita Koralahalli, linux-pci, linux-kernel, linux-cxl
  Cc: Bjorn Helgaas, oohall, Lukas Wunner, Kuppuswamy Sathyanarayanan,
	Mahesh J Salgaonkar, Alison Schofield, Vishal Verma, Ira Weiny,
	Ben Widawsky, Dan Williams, Jonathan Cameron, Yazen Ghannam,
	Terry Bowman, Robert Richter, Smita Koralahalli

Smita Koralahalli wrote:
> Export and move the declaration of pcie_aer_is_native() to a common header
> file to be reused by cxl/pci module.
> 
> Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
> ---
> v2:
> 	Fixed $SUBJECT
> ---
>  drivers/pci/pcie/aer.c     | 1 +
>  drivers/pci/pcie/portdrv.h | 2 --
>  include/linux/aer.h        | 2 ++
>  3 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
> index f6c24ded134c..87d90dbda023 100644
> --- a/drivers/pci/pcie/aer.c
> +++ b/drivers/pci/pcie/aer.c
> @@ -229,6 +229,7 @@ int pcie_aer_is_native(struct pci_dev *dev)
>  
>  	return pcie_ports_native || host->native_aer;
>  }
> +EXPORT_SYMBOL_GPL(pcie_aer_is_native);

I would put this in the CXL symbol namespace since no other driver has
any business using this. Only the CXL subsystem, which is forced by the
specification to take on some PCI core work in its endpoint driver,
needs this export.

Otherwise, looks good to me.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* RE: [PATCH v2 3/3] cxl/pci: Replace host_bridge->native_aer with pcie_aer_is_native()
  2023-07-21 21:47 ` [PATCH v2 3/3] cxl/pci: Replace host_bridge->native_aer with pcie_aer_is_native() Smita Koralahalli
  2023-07-22  0:17   ` Sathyanarayanan Kuppuswamy
  2023-07-24 12:44   ` Robert Richter
@ 2023-08-08  3:21   ` Dan Williams
  2 siblings, 0 replies; 15+ messages in thread
From: Dan Williams @ 2023-08-08  3:21 UTC (permalink / raw)
  To: Smita Koralahalli, linux-pci, linux-kernel, linux-cxl
  Cc: Bjorn Helgaas, oohall, Lukas Wunner, Kuppuswamy Sathyanarayanan,
	Mahesh J Salgaonkar, Alison Schofield, Vishal Verma, Ira Weiny,
	Ben Widawsky, Dan Williams, Jonathan Cameron, Yazen Ghannam,
	Terry Bowman, Robert Richter, Smita Koralahalli

Smita Koralahalli wrote:
> Reuse pcie_aer_is_native() to determine the native AER ownership.

Looks good.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers
  2023-07-24 21:59     ` Smita Koralahalli
@ 2023-08-08  3:22       ` Dan Williams
  0 siblings, 0 replies; 15+ messages in thread
From: Dan Williams @ 2023-08-08  3:22 UTC (permalink / raw)
  To: Smita Koralahalli, Sathyanarayanan Kuppuswamy, linux-pci,
	linux-kernel, linux-cxl
  Cc: Bjorn Helgaas, oohall, Lukas Wunner, Mahesh J Salgaonkar,
	Alison Schofield, Vishal Verma, Ira Weiny, Ben Widawsky,
	Dan Williams, Jonathan Cameron, Yazen Ghannam, Terry Bowman,
	Robert Richter

Smita Koralahalli wrote:
> 
> >> -	/* BIOS has CXL error control */
> >> -	if (!host_bridge->native_cxl_error)
> >> -		return -ENXIO;
> >> +	/* BIOS has PCIe AER error control */
> >> +	if (!host_bridge->native_aer)
> >> +		return 0;
> > 
> > Why not directly use pcie_aer_is_native() here?
> Yeah, this was in my v1. But changed as per Robert's comments, to be 
> applicable for automated backports..
> 
> https://lore.kernel.org/all/ZLkxiZv3lWfazwVH@rric.localdomain/
> 
> Please advice.

Keep it the way you have it. Minimizing the backport is the right call.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers
  2023-08-08  3:17   ` Dan Williams
@ 2023-08-08 19:37     ` Smita Koralahalli
  0 siblings, 0 replies; 15+ messages in thread
From: Smita Koralahalli @ 2023-08-08 19:37 UTC (permalink / raw)
  To: Dan Williams, linux-pci, linux-kernel, linux-cxl
  Cc: Bjorn Helgaas, oohall, Lukas Wunner, Kuppuswamy Sathyanarayanan,
	Mahesh J Salgaonkar, Alison Schofield, Vishal Verma, Ira Weiny,
	Ben Widawsky, Jonathan Cameron, Yazen Ghannam, Terry Bowman,
	Robert Richter

On 8/7/2023 8:17 PM, Dan Williams wrote:
> Smita Koralahalli wrote:
>> According to Section 9.17.2, Table 9-26 of CXL Specification [1], owner
>> of AER should also own CXL Protocol Error Management as there is no
>> explicit control of CXL Protocol error. And the CXL RAS Cap registers
>> reported on Protocol errors should check for AER _OSC rather than CXL
>> Memory Error Reporting Control _OSC.
>>
>> The CXL Memory Error Reporting Control _OSC specifically highlights
>> handling Memory Error Logging and Signaling Enhancements. These kinds of
>> errors are reported through a device's mailbox and can be managed
>> independently from CXL Protocol Errors.
>>
>> This change fixes handling and reporting CXL Protocol Errors and RAS
>> registers natively with native AER and FW-First CXL Memory Error Reporting
>> Control.
> 
> I feel like this could be said more succinctly and with an indication of
> what the end user should expect to see. Something like:
> 
> "cxl_pci fails to unmask CXL protocol errors when CXL memory error
> reporting is not granted native control. Given that CXL memory error
> reporting uses the event interface and protocol errors use AER, unmask
> protocol errors based only on the native AER setting. Without this
> change end user deployments will fail to report protocol errors in the
> case where native memory error handling is not granted to Linux."

Sure, will make the change for a more clearer description. Thanks!
> 
>>
>> [1] Compute Express Link (CXL) Specification, Revision 3.1, Aug 1 2022.
>>
>> Fixes: 248529edc86f ("cxl: add RAS status unmasking for CXL")
>> Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
>> ---
>> v2:
>> 	Added fixes tag.
>> 	Included what the patch fixes in commit message.
>> ---
>>   drivers/cxl/pci.c | 6 +++---
>>   1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
>> index 1cb1494c28fe..2323169b6e5f 100644
>> --- a/drivers/cxl/pci.c
>> +++ b/drivers/cxl/pci.c
>> @@ -541,9 +541,9 @@ static int cxl_pci_ras_unmask(struct pci_dev *pdev)
>>   		return 0;
>>   	}
>>   
>> -	/* BIOS has CXL error control */
>> -	if (!host_bridge->native_cxl_error)
>> -		return -ENXIO;
>> +	/* BIOS has PCIe AER error control */
>> +	if (!host_bridge->native_aer)
>> +		return 0;
> 
> The error code does not matter here and changing it makes the patch that
> bit much more noisier than it needs to be. So just leave it as:

Doing this will return an error from cxl_pci probe thereby failing the 
device node creation in FW-First AER/DPC. I cannot think of other places 
where we reference the device node in FW-First mode but I have a place 
where this could potentially be a roadblock.

I'm trying to add trace events support for FW-First Protocol Errors. 
https://lore.kernel.org/linux-cxl/D9381C12-A585-4089-873B-3707C17823D3@fb.com/T/#mcaf8a78c1295372ab811be7e1ccb6a8a4d99f3e9

And we already have an existing trace_cxl_aer_correctable_error() and 
similarly for uncorrectable error for native protocol error reporting. I 
was trying to reuse the same function for fw-first as well. This 
function references cxl memory device node which will be NULL in 
FW-First if this returns an error.

I don't mind having a separate trace event function for FW-First mode as 
it would simplify things especially when dealing with RCH DP.. But there 
may be other potential places where we might reference this device node 
in FW-First. Please advice.

Thanks,
Smita

> 
> 	return -ENXIO;
> 
>>   
>>   	rc = pcie_capability_read_word(pdev, PCI_EXP_DEVCTL, &cap);
>>   	if (rc)
>> -- 
>> 2.17.1
>>
> 
> 
> 


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2023-08-08 21:20 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-21 21:47 [PATCH v2 0/3] PCI/AER, CXL: Fix appropriate _OSC check for CXL RAS Cap Smita Koralahalli
2023-07-21 21:47 ` [PATCH v2 1/3] cxl/pci: Fix appropriate checking for _OSC while handling CXL RAS registers Smita Koralahalli
2023-07-22  0:18   ` Sathyanarayanan Kuppuswamy
2023-07-24 21:59     ` Smita Koralahalli
2023-08-08  3:22       ` Dan Williams
2023-07-24 12:02   ` Robert Richter
2023-08-08  3:17   ` Dan Williams
2023-08-08 19:37     ` Smita Koralahalli
2023-07-21 21:47 ` [PATCH v2 2/3] PCI/AER: Export pcie_aer_is_native() Smita Koralahalli
2023-07-24 12:42   ` Robert Richter
2023-08-08  3:20   ` Dan Williams
2023-07-21 21:47 ` [PATCH v2 3/3] cxl/pci: Replace host_bridge->native_aer with pcie_aer_is_native() Smita Koralahalli
2023-07-22  0:17   ` Sathyanarayanan Kuppuswamy
2023-07-24 12:44   ` Robert Richter
2023-08-08  3:21   ` Dan Williams

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.