All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/2] Add support to register platform service IRQ
@ 2022-01-14  7:58 Stefan Roese
  2022-01-14  7:58 ` [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors Stefan Roese
                   ` (2 more replies)
  0 siblings, 3 replies; 20+ messages in thread
From: Stefan Roese @ 2022-01-14  7:58 UTC (permalink / raw)
  To: linux-pci

Some platforms have dedicated IRQ lines for platform-specific System Errors
like AER/PME etc. The root complex on these platform will use these seperate
IRQ lines to report AER/PME etc., interrupts and will not generate
MSI/MSI-X/INTx interrupts for these services.

These patches will add new method for these kind of platforms to register the
platform IRQ number with respective PCIe services.

Changes in v4 (Stefan):
- Remove 2nd check for PCI_EXP_TYPE_ROOT_PORT
- Change init_platform_service_irqs() from void to return int

Changes in v3 (Stefan):
- Restructure patches from 4 patches in v2 to now 2 patches in v3
- Rename of functions names
- init_platform_service_irqs() now uses "struct pci_dev *" instead of
  "struct pci_host_bridge *"
- pcie_init_platform_service_irqs() is called before pcie_init_service_irqs()
- Use more PCIe spec terminology as suggested by Bjorn (hopefully enough, I
  don't have the spec at hand)

Bharat Kumar Gogada (2):
  PCI/portdrv: Add option to setup IRQs for platform-specific Service
    Errors
  PCI: xilinx-nwl: Add method to init_platform_service_irqs hook

 drivers/pci/controller/pcie-xilinx-nwl.c | 18 +++++++++++
 drivers/pci/pcie/portdrv_core.c          | 39 +++++++++++++++++++++++-
 include/linux/pci.h                      |  2 ++
 3 files changed, 58 insertions(+), 1 deletion(-)

-- 
2.34.1


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

* [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors
  2022-01-14  7:58 [PATCH v4 0/2] Add support to register platform service IRQ Stefan Roese
@ 2022-01-14  7:58 ` Stefan Roese
  2022-01-14 11:46   ` Pali Rohár
  2022-05-28  0:09   ` Bjorn Helgaas
  2022-01-14  7:58 ` [PATCH v4 2/2] PCI: xilinx-nwl: Add method to init_platform_service_irqs hook Stefan Roese
  2022-03-24 16:52 ` [PATCH v4 0/2] Add support to register platform service IRQ Stefan Roese
  2 siblings, 2 replies; 20+ messages in thread
From: Stefan Roese @ 2022-01-14  7:58 UTC (permalink / raw)
  To: linux-pci
  Cc: Bharat Kumar Gogada, Bjorn Helgaas, Pali Rohár, Michal Simek

From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>

As per section 6.2.4.1.2, 6.2.6 in PCIe r4.0 (and later versions),
platform-specific System Errors like AER can be delivered via platform-
specific interrupt lines.

This patch adds the init_platform_service_irqs() hook to struct
pci_host_bridge, making it possible that platforms may implement this
function to hook IRQs for these platform-specific System Errors, like
AER.

If these platform-specific service IRQs have been successfully
installed via pcie_init_platform_service_irqs(),
pcie_init_service_irqs() is skipped.

Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Bjorn Helgaas <helgaas@kernel.org>
Cc: Pali Rohár <pali@kernel.org>
Cc: Michal Simek <michal.simek@xilinx.com>
---
 drivers/pci/pcie/portdrv_core.c | 39 ++++++++++++++++++++++++++++++++-
 include/linux/pci.h             |  2 ++
 2 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
index e7dcb1f23210..27b990cedb4c 100644
--- a/drivers/pci/pcie/portdrv_core.c
+++ b/drivers/pci/pcie/portdrv_core.c
@@ -190,6 +190,31 @@ static int pcie_init_service_irqs(struct pci_dev *dev, int *irqs, int mask)
 	return 0;
 }
 
+/**
+ * pcie_init_platform_service_irqs - initialize platform service irqs for
+ * platform-specific System Errors
+ * @dev: PCI Express port to handle
+ * @irqs: Array of irqs to populate
+ * @mask: Bitmask of capabilities
+ *
+ * Return value: -ENODEV, in case no platform-specific IRQ is available
+ */
+static int pcie_init_platform_service_irqs(struct pci_dev *dev,
+					   int *irqs, int mask)
+{
+	struct pci_host_bridge *bridge;
+
+	if (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) {
+		bridge = pci_find_host_bridge(dev->bus);
+		if (bridge && bridge->init_platform_service_irqs) {
+			return bridge->init_platform_service_irqs(dev, irqs,
+								  mask);
+		}
+	}
+
+	return -ENODEV;
+}
+
 /**
  * get_port_device_capability - discover capabilities of a PCI Express port
  * @dev: PCI Express port to examine
@@ -335,7 +360,19 @@ int pcie_port_device_register(struct pci_dev *dev)
 		irq_services |= PCIE_PORT_SERVICE_DPC;
 	irq_services &= capabilities;
 
-	if (irq_services) {
+	/*
+	 * Some platforms have dedicated interrupts from root complex to
+	 * interrupt controller for PCIe platform-specific System Errors
+	 * like AER/PME etc., check if the platform registered with any such
+	 * IRQ.
+	 */
+	status = pcie_init_platform_service_irqs(dev, irqs, capabilities);
+
+	/*
+	 * Only install service irqs, when the platform-specific hook was
+	 * unsuccessful
+	 */
+	if (irq_services && status) {
 		/*
 		 * Initialize service IRQs. Don't use service devices that
 		 * require interrupts if there is no way to generate them.
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 18a75c8e615c..fb8aad3cb460 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -554,6 +554,8 @@ struct pci_host_bridge {
 	u8 (*swizzle_irq)(struct pci_dev *, u8 *); /* Platform IRQ swizzler */
 	int (*map_irq)(const struct pci_dev *, u8, u8);
 	void (*release_fn)(struct pci_host_bridge *);
+	int (*init_platform_service_irqs)(struct pci_dev *dev, int *irqs,
+					  int plat_mask);
 	void		*release_data;
 	unsigned int	ignore_reset_delay:1;	/* For entire hierarchy */
 	unsigned int	no_ext_tags:1;		/* No Extended Tags */
-- 
2.34.1


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

* [PATCH v4 2/2] PCI: xilinx-nwl: Add method to init_platform_service_irqs hook
  2022-01-14  7:58 [PATCH v4 0/2] Add support to register platform service IRQ Stefan Roese
  2022-01-14  7:58 ` [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors Stefan Roese
@ 2022-01-14  7:58 ` Stefan Roese
  2022-01-14 11:48   ` Pali Rohár
  2022-03-24 16:52 ` [PATCH v4 0/2] Add support to register platform service IRQ Stefan Roese
  2 siblings, 1 reply; 20+ messages in thread
From: Stefan Roese @ 2022-01-14  7:58 UTC (permalink / raw)
  To: linux-pci
  Cc: Bharat Kumar Gogada, Bjorn Helgaas, Pali Rohár, Michal Simek

From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>

Add nwl_init_platform_service_irqs() hook to init_platform_service_irqs
to register the platform-specific Service Errors IRQs for this PCIe
controller to fully support e.g. AER on this platform.

Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Bjorn Helgaas <helgaas@kernel.org>
Cc: Pali Rohár <pali@kernel.org>
Cc: Michal Simek <michal.simek@xilinx.com>
---
 drivers/pci/controller/pcie-xilinx-nwl.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/pci/controller/pcie-xilinx-nwl.c b/drivers/pci/controller/pcie-xilinx-nwl.c
index 414b679175b3..540536bbe3f8 100644
--- a/drivers/pci/controller/pcie-xilinx-nwl.c
+++ b/drivers/pci/controller/pcie-xilinx-nwl.c
@@ -24,6 +24,7 @@
 #include <linux/irqchip/chained_irq.h>
 
 #include "../pci.h"
+#include "../pcie/portdrv.h"
 
 /* Bridge core config registers */
 #define BRCFG_PCIE_RX0			0x00000000
@@ -806,6 +807,22 @@ static int nwl_pcie_parse_dt(struct nwl_pcie *pcie,
 	return 0;
 }
 
+static int nwl_init_platform_service_irqs(struct pci_dev *dev, int *irqs,
+					  int plat_mask)
+{
+	struct pci_host_bridge *bridge;
+	struct nwl_pcie *pcie;
+
+	bridge = pci_find_host_bridge(dev->bus);
+	pcie = pci_host_bridge_priv(bridge);
+	if (plat_mask & PCIE_PORT_SERVICE_AER) {
+		irqs[PCIE_PORT_SERVICE_AER_SHIFT] = pcie->irq_misc;
+		return 0; /* platform-specific service IRQ installed */
+	}
+
+	return -ENODEV; /* platform-specific service IRQ not installed */
+}
+
 static const struct of_device_id nwl_pcie_of_match[] = {
 	{ .compatible = "xlnx,nwl-pcie-2.11", },
 	{}
@@ -857,6 +874,7 @@ static int nwl_pcie_probe(struct platform_device *pdev)
 
 	bridge->sysdata = pcie;
 	bridge->ops = &nwl_pcie_ops;
+	bridge->init_platform_service_irqs = nwl_init_platform_service_irqs;
 
 	if (IS_ENABLED(CONFIG_PCI_MSI)) {
 		err = nwl_pcie_enable_msi(pcie);
-- 
2.34.1


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

* Re: [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors
  2022-01-14  7:58 ` [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors Stefan Roese
@ 2022-01-14 11:46   ` Pali Rohár
  2022-05-28  0:09   ` Bjorn Helgaas
  1 sibling, 0 replies; 20+ messages in thread
From: Pali Rohár @ 2022-01-14 11:46 UTC (permalink / raw)
  To: Stefan Roese; +Cc: linux-pci, Bharat Kumar Gogada, Bjorn Helgaas, Michal Simek

On Friday 14 January 2022 08:58:33 Stefan Roese wrote:
> From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> 
> As per section 6.2.4.1.2, 6.2.6 in PCIe r4.0 (and later versions),
> platform-specific System Errors like AER can be delivered via platform-
> specific interrupt lines.
> 
> This patch adds the init_platform_service_irqs() hook to struct
> pci_host_bridge, making it possible that platforms may implement this
> function to hook IRQs for these platform-specific System Errors, like
> AER.
> 
> If these platform-specific service IRQs have been successfully
> installed via pcie_init_platform_service_irqs(),
> pcie_init_service_irqs() is skipped.
> 
> Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Bjorn Helgaas <helgaas@kernel.org>
> Cc: Pali Rohár <pali@kernel.org>
> Cc: Michal Simek <michal.simek@xilinx.com>

Reviewed-by: Pali Rohár <pali@kernel.org>

> ---
>  drivers/pci/pcie/portdrv_core.c | 39 ++++++++++++++++++++++++++++++++-
>  include/linux/pci.h             |  2 ++
>  2 files changed, 40 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
> index e7dcb1f23210..27b990cedb4c 100644
> --- a/drivers/pci/pcie/portdrv_core.c
> +++ b/drivers/pci/pcie/portdrv_core.c
> @@ -190,6 +190,31 @@ static int pcie_init_service_irqs(struct pci_dev *dev, int *irqs, int mask)
>  	return 0;
>  }
>  
> +/**
> + * pcie_init_platform_service_irqs - initialize platform service irqs for
> + * platform-specific System Errors
> + * @dev: PCI Express port to handle
> + * @irqs: Array of irqs to populate
> + * @mask: Bitmask of capabilities
> + *
> + * Return value: -ENODEV, in case no platform-specific IRQ is available
> + */
> +static int pcie_init_platform_service_irqs(struct pci_dev *dev,
> +					   int *irqs, int mask)
> +{
> +	struct pci_host_bridge *bridge;
> +
> +	if (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) {
> +		bridge = pci_find_host_bridge(dev->bus);
> +		if (bridge && bridge->init_platform_service_irqs) {
> +			return bridge->init_platform_service_irqs(dev, irqs,
> +								  mask);
> +		}
> +	}
> +
> +	return -ENODEV;
> +}
> +
>  /**
>   * get_port_device_capability - discover capabilities of a PCI Express port
>   * @dev: PCI Express port to examine
> @@ -335,7 +360,19 @@ int pcie_port_device_register(struct pci_dev *dev)
>  		irq_services |= PCIE_PORT_SERVICE_DPC;
>  	irq_services &= capabilities;
>  
> -	if (irq_services) {
> +	/*
> +	 * Some platforms have dedicated interrupts from root complex to
> +	 * interrupt controller for PCIe platform-specific System Errors
> +	 * like AER/PME etc., check if the platform registered with any such
> +	 * IRQ.
> +	 */
> +	status = pcie_init_platform_service_irqs(dev, irqs, capabilities);
> +
> +	/*
> +	 * Only install service irqs, when the platform-specific hook was
> +	 * unsuccessful
> +	 */
> +	if (irq_services && status) {
>  		/*
>  		 * Initialize service IRQs. Don't use service devices that
>  		 * require interrupts if there is no way to generate them.
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 18a75c8e615c..fb8aad3cb460 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -554,6 +554,8 @@ struct pci_host_bridge {
>  	u8 (*swizzle_irq)(struct pci_dev *, u8 *); /* Platform IRQ swizzler */
>  	int (*map_irq)(const struct pci_dev *, u8, u8);
>  	void (*release_fn)(struct pci_host_bridge *);
> +	int (*init_platform_service_irqs)(struct pci_dev *dev, int *irqs,
> +					  int plat_mask);
>  	void		*release_data;
>  	unsigned int	ignore_reset_delay:1;	/* For entire hierarchy */
>  	unsigned int	no_ext_tags:1;		/* No Extended Tags */
> -- 
> 2.34.1
> 

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

* Re: [PATCH v4 2/2] PCI: xilinx-nwl: Add method to init_platform_service_irqs hook
  2022-01-14  7:58 ` [PATCH v4 2/2] PCI: xilinx-nwl: Add method to init_platform_service_irqs hook Stefan Roese
@ 2022-01-14 11:48   ` Pali Rohár
  2022-01-14 12:13     ` Stefan Roese
  0 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2022-01-14 11:48 UTC (permalink / raw)
  To: Stefan Roese; +Cc: linux-pci, Bharat Kumar Gogada, Bjorn Helgaas, Michal Simek

On Friday 14 January 2022 08:58:34 Stefan Roese wrote:
> From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> 
> Add nwl_init_platform_service_irqs() hook to init_platform_service_irqs
> to register the platform-specific Service Errors IRQs for this PCIe
> controller to fully support e.g. AER on this platform.
> 
> Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Bjorn Helgaas <helgaas@kernel.org>
> Cc: Pali Rohár <pali@kernel.org>
> Cc: Michal Simek <michal.simek@xilinx.com>

Reviewed-by: Pali Rohár <pali@kernel.org>

> ---
>  drivers/pci/controller/pcie-xilinx-nwl.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/drivers/pci/controller/pcie-xilinx-nwl.c b/drivers/pci/controller/pcie-xilinx-nwl.c
> index 414b679175b3..540536bbe3f8 100644
> --- a/drivers/pci/controller/pcie-xilinx-nwl.c
> +++ b/drivers/pci/controller/pcie-xilinx-nwl.c
> @@ -24,6 +24,7 @@
>  #include <linux/irqchip/chained_irq.h>
>  
>  #include "../pci.h"
> +#include "../pcie/portdrv.h"
>  
>  /* Bridge core config registers */
>  #define BRCFG_PCIE_RX0			0x00000000
> @@ -806,6 +807,22 @@ static int nwl_pcie_parse_dt(struct nwl_pcie *pcie,
>  	return 0;
>  }
>  
> +static int nwl_init_platform_service_irqs(struct pci_dev *dev, int *irqs,
> +					  int plat_mask)
> +{
> +	struct pci_host_bridge *bridge;
> +	struct nwl_pcie *pcie;
> +
> +	bridge = pci_find_host_bridge(dev->bus);
> +	pcie = pci_host_bridge_priv(bridge);
> +	if (plat_mask & PCIE_PORT_SERVICE_AER) {
> +		irqs[PCIE_PORT_SERVICE_AER_SHIFT] = pcie->irq_misc;
> +		return 0; /* platform-specific service IRQ installed */
> +	}

Just I want to be sure, with this change PME and HP interrupts are not
provided even when plat_mask argument contains them.

> +
> +	return -ENODEV; /* platform-specific service IRQ not installed */
> +}
> +
>  static const struct of_device_id nwl_pcie_of_match[] = {
>  	{ .compatible = "xlnx,nwl-pcie-2.11", },
>  	{}
> @@ -857,6 +874,7 @@ static int nwl_pcie_probe(struct platform_device *pdev)
>  
>  	bridge->sysdata = pcie;
>  	bridge->ops = &nwl_pcie_ops;
> +	bridge->init_platform_service_irqs = nwl_init_platform_service_irqs;
>  
>  	if (IS_ENABLED(CONFIG_PCI_MSI)) {
>  		err = nwl_pcie_enable_msi(pcie);
> -- 
> 2.34.1
> 

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

* Re: [PATCH v4 2/2] PCI: xilinx-nwl: Add method to init_platform_service_irqs hook
  2022-01-14 11:48   ` Pali Rohár
@ 2022-01-14 12:13     ` Stefan Roese
  2022-01-14 12:34       ` Pali Rohár
  0 siblings, 1 reply; 20+ messages in thread
From: Stefan Roese @ 2022-01-14 12:13 UTC (permalink / raw)
  To: Pali Rohár
  Cc: linux-pci, Bharat Kumar Gogada, Bjorn Helgaas, Michal Simek

On 1/14/22 12:48, Pali Rohár wrote:
> On Friday 14 January 2022 08:58:34 Stefan Roese wrote:
>> From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
>>
>> Add nwl_init_platform_service_irqs() hook to init_platform_service_irqs
>> to register the platform-specific Service Errors IRQs for this PCIe
>> controller to fully support e.g. AER on this platform.
>>
>> Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
>> Signed-off-by: Stefan Roese <sr@denx.de>
>> Cc: Bjorn Helgaas <helgaas@kernel.org>
>> Cc: Pali Rohár <pali@kernel.org>
>> Cc: Michal Simek <michal.simek@xilinx.com>
> 
> Reviewed-by: Pali Rohár <pali@kernel.org>
> 
>> ---
>>   drivers/pci/controller/pcie-xilinx-nwl.c | 18 ++++++++++++++++++
>>   1 file changed, 18 insertions(+)
>>
>> diff --git a/drivers/pci/controller/pcie-xilinx-nwl.c b/drivers/pci/controller/pcie-xilinx-nwl.c
>> index 414b679175b3..540536bbe3f8 100644
>> --- a/drivers/pci/controller/pcie-xilinx-nwl.c
>> +++ b/drivers/pci/controller/pcie-xilinx-nwl.c
>> @@ -24,6 +24,7 @@
>>   #include <linux/irqchip/chained_irq.h>
>>   
>>   #include "../pci.h"
>> +#include "../pcie/portdrv.h"
>>   
>>   /* Bridge core config registers */
>>   #define BRCFG_PCIE_RX0			0x00000000
>> @@ -806,6 +807,22 @@ static int nwl_pcie_parse_dt(struct nwl_pcie *pcie,
>>   	return 0;
>>   }
>>   
>> +static int nwl_init_platform_service_irqs(struct pci_dev *dev, int *irqs,
>> +					  int plat_mask)
>> +{
>> +	struct pci_host_bridge *bridge;
>> +	struct nwl_pcie *pcie;
>> +
>> +	bridge = pci_find_host_bridge(dev->bus);
>> +	pcie = pci_host_bridge_priv(bridge);
>> +	if (plat_mask & PCIE_PORT_SERVICE_AER) {
>> +		irqs[PCIE_PORT_SERVICE_AER_SHIFT] = pcie->irq_misc;
>> +		return 0; /* platform-specific service IRQ installed */
>> +	}
> 
> Just I want to be sure, with this change PME and HP interrupts are not
> provided even when plat_mask argument contains them.

This function is only used for Root Ports. E.g. HP at the downstream
ports of the PCIe switch still works in our case, as here
pcie_init_service_irqs() still gets called:

# cat /proc/interrupts | grep pci
  44:          0          0          0          0     GICv2 150 Level 
   nwl_pcie:misc, aerdrv
  61:          2          0          0          0  nwl_pcie:msi 1064960 
Edge      pciehp
  63:          0          0          0          0  nwl_pcie:msi 1081344 
Edge      pciehp
  65:          4          0          0          0  nwl_pcie:msi 1097728 
Edge      pciehp

Thanks,
Stefan

>> +
>> +	return -ENODEV; /* platform-specific service IRQ not installed */
>> +}
>> +
>>   static const struct of_device_id nwl_pcie_of_match[] = {
>>   	{ .compatible = "xlnx,nwl-pcie-2.11", },
>>   	{}
>> @@ -857,6 +874,7 @@ static int nwl_pcie_probe(struct platform_device *pdev)
>>   
>>   	bridge->sysdata = pcie;
>>   	bridge->ops = &nwl_pcie_ops;
>> +	bridge->init_platform_service_irqs = nwl_init_platform_service_irqs;
>>   
>>   	if (IS_ENABLED(CONFIG_PCI_MSI)) {
>>   		err = nwl_pcie_enable_msi(pcie);
>> -- 
>> 2.34.1
>>

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

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

* Re: [PATCH v4 2/2] PCI: xilinx-nwl: Add method to init_platform_service_irqs hook
  2022-01-14 12:13     ` Stefan Roese
@ 2022-01-14 12:34       ` Pali Rohár
  2022-01-14 17:03         ` Stefan Roese
  0 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2022-01-14 12:34 UTC (permalink / raw)
  To: Stefan Roese; +Cc: linux-pci, Bharat Kumar Gogada, Bjorn Helgaas, Michal Simek

On Friday 14 January 2022 13:13:16 Stefan Roese wrote:
> On 1/14/22 12:48, Pali Rohár wrote:
> > On Friday 14 January 2022 08:58:34 Stefan Roese wrote:
> > > From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> > > 
> > > Add nwl_init_platform_service_irqs() hook to init_platform_service_irqs
> > > to register the platform-specific Service Errors IRQs for this PCIe
> > > controller to fully support e.g. AER on this platform.
> > > 
> > > Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> > > Signed-off-by: Stefan Roese <sr@denx.de>
> > > Cc: Bjorn Helgaas <helgaas@kernel.org>
> > > Cc: Pali Rohár <pali@kernel.org>
> > > Cc: Michal Simek <michal.simek@xilinx.com>
> > 
> > Reviewed-by: Pali Rohár <pali@kernel.org>
> > 
> > > ---
> > >   drivers/pci/controller/pcie-xilinx-nwl.c | 18 ++++++++++++++++++
> > >   1 file changed, 18 insertions(+)
> > > 
> > > diff --git a/drivers/pci/controller/pcie-xilinx-nwl.c b/drivers/pci/controller/pcie-xilinx-nwl.c
> > > index 414b679175b3..540536bbe3f8 100644
> > > --- a/drivers/pci/controller/pcie-xilinx-nwl.c
> > > +++ b/drivers/pci/controller/pcie-xilinx-nwl.c
> > > @@ -24,6 +24,7 @@
> > >   #include <linux/irqchip/chained_irq.h>
> > >   #include "../pci.h"
> > > +#include "../pcie/portdrv.h"
> > >   /* Bridge core config registers */
> > >   #define BRCFG_PCIE_RX0			0x00000000
> > > @@ -806,6 +807,22 @@ static int nwl_pcie_parse_dt(struct nwl_pcie *pcie,
> > >   	return 0;
> > >   }
> > > +static int nwl_init_platform_service_irqs(struct pci_dev *dev, int *irqs,
> > > +					  int plat_mask)
> > > +{
> > > +	struct pci_host_bridge *bridge;
> > > +	struct nwl_pcie *pcie;
> > > +
> > > +	bridge = pci_find_host_bridge(dev->bus);
> > > +	pcie = pci_host_bridge_priv(bridge);
> > > +	if (plat_mask & PCIE_PORT_SERVICE_AER) {
> > > +		irqs[PCIE_PORT_SERVICE_AER_SHIFT] = pcie->irq_misc;
> > > +		return 0; /* platform-specific service IRQ installed */
> > > +	}
> > 
> > Just I want to be sure, with this change PME and HP interrupts are not
> > provided even when plat_mask argument contains them.
> 
> This function is only used for Root Ports.

Technically, also Root Ports can support hot plugging. But that it
probably not the case of your board if it has PCIe switch connected to
the Root Port which is not removable.

But hot plug interrupt can be optionally used also for signalling change
of Data Link Layer state. And this information can be useful also in
Root Port if to it is connected non-removable device.

So if init_platform_service_irqs callback explicitly do not specify PME
or HP interrupts for the Root Port then kernel would not load pme or
pciehp service for the Root Port.

This is note for me, that when I will go to use this callback in other
drivers, I need to check that I provide interrupts for all supported
services...

> E.g. HP at the downstream
> ports of the PCIe switch still works in our case, as here
> pcie_init_service_irqs() still gets called:
> 
> # cat /proc/interrupts | grep pci
>  44:          0          0          0          0     GICv2 150 Level
> nwl_pcie:misc, aerdrv
>  61:          2          0          0          0  nwl_pcie:msi 1064960 Edge
> pciehp
>  63:          0          0          0          0  nwl_pcie:msi 1081344 Edge
> pciehp
>  65:          4          0          0          0  nwl_pcie:msi 1097728 Edge
> pciehp

Yes, as PCIe switch is different device it should work fine.

> Thanks,
> Stefan
> 
> > > +
> > > +	return -ENODEV; /* platform-specific service IRQ not installed */
> > > +}
> > > +
> > >   static const struct of_device_id nwl_pcie_of_match[] = {
> > >   	{ .compatible = "xlnx,nwl-pcie-2.11", },
> > >   	{}
> > > @@ -857,6 +874,7 @@ static int nwl_pcie_probe(struct platform_device *pdev)
> > >   	bridge->sysdata = pcie;
> > >   	bridge->ops = &nwl_pcie_ops;
> > > +	bridge->init_platform_service_irqs = nwl_init_platform_service_irqs;
> > >   	if (IS_ENABLED(CONFIG_PCI_MSI)) {
> > >   		err = nwl_pcie_enable_msi(pcie);
> > > -- 
> > > 2.34.1
> > > 
> 
> Viele Grüße,
> Stefan Roese
> 
> -- 
> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

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

* Re: [PATCH v4 2/2] PCI: xilinx-nwl: Add method to init_platform_service_irqs hook
  2022-01-14 12:34       ` Pali Rohár
@ 2022-01-14 17:03         ` Stefan Roese
  0 siblings, 0 replies; 20+ messages in thread
From: Stefan Roese @ 2022-01-14 17:03 UTC (permalink / raw)
  To: Pali Rohár
  Cc: linux-pci, Bharat Kumar Gogada, Bjorn Helgaas, Michal Simek

On 1/14/22 13:34, Pali Rohár wrote:
> On Friday 14 January 2022 13:13:16 Stefan Roese wrote:
>> On 1/14/22 12:48, Pali Rohár wrote:
>>> On Friday 14 January 2022 08:58:34 Stefan Roese wrote:
>>>> From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
>>>>
>>>> Add nwl_init_platform_service_irqs() hook to init_platform_service_irqs
>>>> to register the platform-specific Service Errors IRQs for this PCIe
>>>> controller to fully support e.g. AER on this platform.
>>>>
>>>> Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
>>>> Signed-off-by: Stefan Roese <sr@denx.de>
>>>> Cc: Bjorn Helgaas <helgaas@kernel.org>
>>>> Cc: Pali Rohár <pali@kernel.org>
>>>> Cc: Michal Simek <michal.simek@xilinx.com>
>>>
>>> Reviewed-by: Pali Rohár <pali@kernel.org>
>>>
>>>> ---
>>>>    drivers/pci/controller/pcie-xilinx-nwl.c | 18 ++++++++++++++++++
>>>>    1 file changed, 18 insertions(+)
>>>>
>>>> diff --git a/drivers/pci/controller/pcie-xilinx-nwl.c b/drivers/pci/controller/pcie-xilinx-nwl.c
>>>> index 414b679175b3..540536bbe3f8 100644
>>>> --- a/drivers/pci/controller/pcie-xilinx-nwl.c
>>>> +++ b/drivers/pci/controller/pcie-xilinx-nwl.c
>>>> @@ -24,6 +24,7 @@
>>>>    #include <linux/irqchip/chained_irq.h>
>>>>    #include "../pci.h"
>>>> +#include "../pcie/portdrv.h"
>>>>    /* Bridge core config registers */
>>>>    #define BRCFG_PCIE_RX0			0x00000000
>>>> @@ -806,6 +807,22 @@ static int nwl_pcie_parse_dt(struct nwl_pcie *pcie,
>>>>    	return 0;
>>>>    }
>>>> +static int nwl_init_platform_service_irqs(struct pci_dev *dev, int *irqs,
>>>> +					  int plat_mask)
>>>> +{
>>>> +	struct pci_host_bridge *bridge;
>>>> +	struct nwl_pcie *pcie;
>>>> +
>>>> +	bridge = pci_find_host_bridge(dev->bus);
>>>> +	pcie = pci_host_bridge_priv(bridge);
>>>> +	if (plat_mask & PCIE_PORT_SERVICE_AER) {
>>>> +		irqs[PCIE_PORT_SERVICE_AER_SHIFT] = pcie->irq_misc;
>>>> +		return 0; /* platform-specific service IRQ installed */
>>>> +	}
>>>
>>> Just I want to be sure, with this change PME and HP interrupts are not
>>> provided even when plat_mask argument contains them.
>>
>> This function is only used for Root Ports.
> 
> Technically, also Root Ports can support hot plugging. But that it
> probably not the case of your board if it has PCIe switch connected to
> the Root Port which is not removable.
> 
> But hot plug interrupt can be optionally used also for signalling change
> of Data Link Layer state. And this information can be useful also in
> Root Port if to it is connected non-removable device.
> 
> So if init_platform_service_irqs callback explicitly do not specify PME
> or HP interrupts for the Root Port then kernel would not load pme or
> pciehp service for the Root Port.
> 
> This is note for me, that when I will go to use this callback in other
> drivers, I need to check that I provide interrupts for all supported
> services...

It might very well be the case, that this current implementation does
not fully handle all use-cases (controller specific). The code can be
extended and/or fixed, once other users will show up.

Thanks,
Stefan

>> E.g. HP at the downstream
>> ports of the PCIe switch still works in our case, as here
>> pcie_init_service_irqs() still gets called:
>>
>> # cat /proc/interrupts | grep pci
>>   44:          0          0          0          0     GICv2 150 Level
>> nwl_pcie:misc, aerdrv
>>   61:          2          0          0          0  nwl_pcie:msi 1064960 Edge
>> pciehp
>>   63:          0          0          0          0  nwl_pcie:msi 1081344 Edge
>> pciehp
>>   65:          4          0          0          0  nwl_pcie:msi 1097728 Edge
>> pciehp
> 
> Yes, as PCIe switch is different device it should work fine.
> 
>> Thanks,
>> Stefan
>>
>>>> +
>>>> +	return -ENODEV; /* platform-specific service IRQ not installed */
>>>> +}
>>>> +
>>>>    static const struct of_device_id nwl_pcie_of_match[] = {
>>>>    	{ .compatible = "xlnx,nwl-pcie-2.11", },
>>>>    	{}
>>>> @@ -857,6 +874,7 @@ static int nwl_pcie_probe(struct platform_device *pdev)
>>>>    	bridge->sysdata = pcie;
>>>>    	bridge->ops = &nwl_pcie_ops;
>>>> +	bridge->init_platform_service_irqs = nwl_init_platform_service_irqs;
>>>>    	if (IS_ENABLED(CONFIG_PCI_MSI)) {
>>>>    		err = nwl_pcie_enable_msi(pcie);
>>>> -- 
>>>> 2.34.1
>>>>
>>
>> Viele Grüße,
>> Stefan Roese
>>
>> -- 
>> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
>> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
>> Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

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

* Re: [PATCH v4 0/2] Add support to register platform service IRQ
  2022-01-14  7:58 [PATCH v4 0/2] Add support to register platform service IRQ Stefan Roese
  2022-01-14  7:58 ` [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors Stefan Roese
  2022-01-14  7:58 ` [PATCH v4 2/2] PCI: xilinx-nwl: Add method to init_platform_service_irqs hook Stefan Roese
@ 2022-03-24 16:52 ` Stefan Roese
  2022-03-31 15:30   ` Bjorn Helgaas
  2 siblings, 1 reply; 20+ messages in thread
From: Stefan Roese @ 2022-03-24 16:52 UTC (permalink / raw)
  To: linux-pci, Bjorn Helgaas

On 1/14/22 08:58, Stefan Roese wrote:
> Some platforms have dedicated IRQ lines for platform-specific System Errors
> like AER/PME etc. The root complex on these platform will use these seperate
> IRQ lines to report AER/PME etc., interrupts and will not generate
> MSI/MSI-X/INTx interrupts for these services.
> 
> These patches will add new method for these kind of platforms to register the
> platform IRQ number with respective PCIe services.
> 
> Changes in v4 (Stefan):
> - Remove 2nd check for PCI_EXP_TYPE_ROOT_PORT
> - Change init_platform_service_irqs() from void to return int
> 
> Changes in v3 (Stefan):
> - Restructure patches from 4 patches in v2 to now 2 patches in v3
> - Rename of functions names
> - init_platform_service_irqs() now uses "struct pci_dev *" instead of
>    "struct pci_host_bridge *"
> - pcie_init_platform_service_irqs() is called before pcie_init_service_irqs()
> - Use more PCIe spec terminology as suggested by Bjorn (hopefully enough, I
>    don't have the spec at hand)

Bjorn, what's the status of this patchset? I was under the impression,
that it would make it into v5.18. Please let me know if something is
missing.

Thanks,
Stefan

> Bharat Kumar Gogada (2):
>    PCI/portdrv: Add option to setup IRQs for platform-specific Service
>      Errors
>    PCI: xilinx-nwl: Add method to init_platform_service_irqs hook
> 
>   drivers/pci/controller/pcie-xilinx-nwl.c | 18 +++++++++++
>   drivers/pci/pcie/portdrv_core.c          | 39 +++++++++++++++++++++++-
>   include/linux/pci.h                      |  2 ++
>   3 files changed, 58 insertions(+), 1 deletion(-)
> 

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

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

* Re: [PATCH v4 0/2] Add support to register platform service IRQ
  2022-03-24 16:52 ` [PATCH v4 0/2] Add support to register platform service IRQ Stefan Roese
@ 2022-03-31 15:30   ` Bjorn Helgaas
  2022-04-01  6:28     ` Stefan Roese
  0 siblings, 1 reply; 20+ messages in thread
From: Bjorn Helgaas @ 2022-03-31 15:30 UTC (permalink / raw)
  To: Stefan Roese; +Cc: linux-pci

On Thu, Mar 24, 2022 at 05:52:54PM +0100, Stefan Roese wrote:
> On 1/14/22 08:58, Stefan Roese wrote:
> > Some platforms have dedicated IRQ lines for platform-specific System Errors
> > like AER/PME etc. The root complex on these platform will use these seperate
> > IRQ lines to report AER/PME etc., interrupts and will not generate
> > MSI/MSI-X/INTx interrupts for these services.
> > 
> > These patches will add new method for these kind of platforms to register the
> > platform IRQ number with respective PCIe services.
> > 
> > Changes in v4 (Stefan):
> > - Remove 2nd check for PCI_EXP_TYPE_ROOT_PORT
> > - Change init_platform_service_irqs() from void to return int
> > 
> > Changes in v3 (Stefan):
> > - Restructure patches from 4 patches in v2 to now 2 patches in v3
> > - Rename of functions names
> > - init_platform_service_irqs() now uses "struct pci_dev *" instead of
> >    "struct pci_host_bridge *"
> > - pcie_init_platform_service_irqs() is called before pcie_init_service_irqs()
> > - Use more PCIe spec terminology as suggested by Bjorn (hopefully enough, I
> >    don't have the spec at hand)
> 
> Bjorn, what's the status of this patchset? I was under the impression,
> that it would make it into v5.18. Please let me know if something is
> missing.

Sorry, I didn't get to it in time for v5.18, but it's on my list for
v5.19.

I thought maybe it got assigned to Lorenzo because it touches
drivers/pci/controller/, but I can't find it in patchwork
(https://patchwork.kernel.org/project/linux-pci/list/) at all.  

Would you mind posting it again to make sure patchwork picks it up?
If it's not in patchwork, it's very likely to get missed.

Bjorn

> > Bharat Kumar Gogada (2):
> >    PCI/portdrv: Add option to setup IRQs for platform-specific Service
> >      Errors
> >    PCI: xilinx-nwl: Add method to init_platform_service_irqs hook
> > 
> >   drivers/pci/controller/pcie-xilinx-nwl.c | 18 +++++++++++
> >   drivers/pci/pcie/portdrv_core.c          | 39 +++++++++++++++++++++++-
> >   include/linux/pci.h                      |  2 ++
> >   3 files changed, 58 insertions(+), 1 deletion(-)
> > 
> 
> Viele Grüße,
> Stefan Roese
> 
> -- 
> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

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

* Re: [PATCH v4 0/2] Add support to register platform service IRQ
  2022-03-31 15:30   ` Bjorn Helgaas
@ 2022-04-01  6:28     ` Stefan Roese
  2022-04-01 12:35       ` Bjorn Helgaas
  0 siblings, 1 reply; 20+ messages in thread
From: Stefan Roese @ 2022-04-01  6:28 UTC (permalink / raw)
  To: Bjorn Helgaas; +Cc: linux-pci

On 3/31/22 17:30, Bjorn Helgaas wrote:
> On Thu, Mar 24, 2022 at 05:52:54PM +0100, Stefan Roese wrote:
>> On 1/14/22 08:58, Stefan Roese wrote:
>>> Some platforms have dedicated IRQ lines for platform-specific System Errors
>>> like AER/PME etc. The root complex on these platform will use these seperate
>>> IRQ lines to report AER/PME etc., interrupts and will not generate
>>> MSI/MSI-X/INTx interrupts for these services.
>>>
>>> These patches will add new method for these kind of platforms to register the
>>> platform IRQ number with respective PCIe services.
>>>
>>> Changes in v4 (Stefan):
>>> - Remove 2nd check for PCI_EXP_TYPE_ROOT_PORT
>>> - Change init_platform_service_irqs() from void to return int
>>>
>>> Changes in v3 (Stefan):
>>> - Restructure patches from 4 patches in v2 to now 2 patches in v3
>>> - Rename of functions names
>>> - init_platform_service_irqs() now uses "struct pci_dev *" instead of
>>>     "struct pci_host_bridge *"
>>> - pcie_init_platform_service_irqs() is called before pcie_init_service_irqs()
>>> - Use more PCIe spec terminology as suggested by Bjorn (hopefully enough, I
>>>     don't have the spec at hand)
>>
>> Bjorn, what's the status of this patchset? I was under the impression,
>> that it would make it into v5.18. Please let me know if something is
>> missing.
> 
> Sorry, I didn't get to it in time for v5.18, but it's on my list for
> v5.19.
> 
> I thought maybe it got assigned to Lorenzo because it touches
> drivers/pci/controller/, but I can't find it in patchwork
> (https://patchwork.kernel.org/project/linux-pci/list/) at all.

Both patches are in patchwork:

https://patchwork.kernel.org/project/linux-pci/patch/20220114075834.1938409-2-sr@denx.de/
https://patchwork.kernel.org/project/linux-pci/patch/20220114075834.1938409-3-sr@denx.de/

The first one is assigned to you and the 2nd one to Lorenzo.

> Would you mind posting it again to make sure patchwork picks it up?
> If it's not in patchwork, it's very likely to get missed.

Since it's already on patchwork, I did not post the patches again.
Please let me know if I should re-post them nevertheless.

Thanks,
Stefan

> Bjorn
> 
>>> Bharat Kumar Gogada (2):
>>>     PCI/portdrv: Add option to setup IRQs for platform-specific Service
>>>       Errors
>>>     PCI: xilinx-nwl: Add method to init_platform_service_irqs hook
>>>
>>>    drivers/pci/controller/pcie-xilinx-nwl.c | 18 +++++++++++
>>>    drivers/pci/pcie/portdrv_core.c          | 39 +++++++++++++++++++++++-
>>>    include/linux/pci.h                      |  2 ++
>>>    3 files changed, 58 insertions(+), 1 deletion(-)
>>>
>>
>> Viele Grüße,
>> Stefan Roese
>>
>> -- 
>> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
>> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
>> Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

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

* Re: [PATCH v4 0/2] Add support to register platform service IRQ
  2022-04-01  6:28     ` Stefan Roese
@ 2022-04-01 12:35       ` Bjorn Helgaas
  0 siblings, 0 replies; 20+ messages in thread
From: Bjorn Helgaas @ 2022-04-01 12:35 UTC (permalink / raw)
  To: Stefan Roese; +Cc: linux-pci

On Fri, Apr 01, 2022 at 08:28:51AM +0200, Stefan Roese wrote:
> On 3/31/22 17:30, Bjorn Helgaas wrote:
> > On Thu, Mar 24, 2022 at 05:52:54PM +0100, Stefan Roese wrote:
> > > On 1/14/22 08:58, Stefan Roese wrote:
> > > > Some platforms have dedicated IRQ lines for platform-specific System Errors
> > > > like AER/PME etc. The root complex on these platform will use these seperate
> > > > IRQ lines to report AER/PME etc., interrupts and will not generate
> > > > MSI/MSI-X/INTx interrupts for these services.
> > > > 
> > > > These patches will add new method for these kind of platforms to register the
> > > > platform IRQ number with respective PCIe services.
> > > > 
> > > > Changes in v4 (Stefan):
> > > > - Remove 2nd check for PCI_EXP_TYPE_ROOT_PORT
> > > > - Change init_platform_service_irqs() from void to return int
> > > > 
> > > > Changes in v3 (Stefan):
> > > > - Restructure patches from 4 patches in v2 to now 2 patches in v3
> > > > - Rename of functions names
> > > > - init_platform_service_irqs() now uses "struct pci_dev *" instead of
> > > >     "struct pci_host_bridge *"
> > > > - pcie_init_platform_service_irqs() is called before pcie_init_service_irqs()
> > > > - Use more PCIe spec terminology as suggested by Bjorn (hopefully enough, I
> > > >     don't have the spec at hand)
> > > 
> > > Bjorn, what's the status of this patchset? I was under the impression,
> > > that it would make it into v5.18. Please let me know if something is
> > > missing.
> > 
> > Sorry, I didn't get to it in time for v5.18, but it's on my list for
> > v5.19.
> > 
> > I thought maybe it got assigned to Lorenzo because it touches
> > drivers/pci/controller/, but I can't find it in patchwork
> > (https://patchwork.kernel.org/project/linux-pci/list/) at all.
> 
> Both patches are in patchwork:
> 
> https://patchwork.kernel.org/project/linux-pci/patch/20220114075834.1938409-2-sr@denx.de/
> https://patchwork.kernel.org/project/linux-pci/patch/20220114075834.1938409-3-sr@denx.de/
> 
> The first one is assigned to you and the 2nd one to Lorenzo.
> 
> > Would you mind posting it again to make sure patchwork picks it up?
> > If it's not in patchwork, it's very likely to get missed.
> 
> Since it's already on patchwork, I did not post the patches again.
> Please let me know if I should re-post them nevertheless.

No, that should be enough.  I spent 10 minutes searching patchwork
yesterday; don't know why I couldn't find it.

> > > > Bharat Kumar Gogada (2):
> > > >     PCI/portdrv: Add option to setup IRQs for platform-specific Service
> > > >       Errors
> > > >     PCI: xilinx-nwl: Add method to init_platform_service_irqs hook
> > > > 
> > > >    drivers/pci/controller/pcie-xilinx-nwl.c | 18 +++++++++++
> > > >    drivers/pci/pcie/portdrv_core.c          | 39 +++++++++++++++++++++++-
> > > >    include/linux/pci.h                      |  2 ++
> > > >    3 files changed, 58 insertions(+), 1 deletion(-)
> > > > 
> > > 
> > > Viele Grüße,
> > > Stefan Roese
> > > 
> > > -- 
> > > DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> > > HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> > > Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de
> 
> Viele Grüße,
> Stefan Roese
> 
> -- 
> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de

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

* Re: [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors
  2022-01-14  7:58 ` [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors Stefan Roese
  2022-01-14 11:46   ` Pali Rohár
@ 2022-05-28  0:09   ` Bjorn Helgaas
  2022-05-30  8:18     ` Stefan Roese
  1 sibling, 1 reply; 20+ messages in thread
From: Bjorn Helgaas @ 2022-05-28  0:09 UTC (permalink / raw)
  To: Stefan Roese
  Cc: linux-pci, Bharat Kumar Gogada, Pali Rohár, Michal Simek

In subject line, I assume you mean "System Errors" instead of "Service
Errors"?

On Fri, Jan 14, 2022 at 08:58:33AM +0100, Stefan Roese wrote:
> From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> 
> As per section 6.2.4.1.2, 6.2.6 in PCIe r4.0 (and later versions),
> platform-specific System Errors like AER can be delivered via platform-
> specific interrupt lines.

IIUC, this refers to the top left branch in Figure 6-3 of PCIe r6.0,
sec 6.2.6, which shows "System Error (platform specific)" controlled
by "System Error Enables (one per error class) in the Root Control
register," i.e., the PCI_EXP_RTCTL_SECEE, PCI_EXP_RTCTL_SENFEE, and
PCI_EXP_RTCTL_SEFEE bits.

Where are those enable bits set?  The only references I see are to
them being cleared via SYSTEM_ERROR_INTR_ON_MESG_MASK in
aer_enable_rootport().

> This patch adds the init_platform_service_irqs() hook to struct
> pci_host_bridge, making it possible that platforms may implement this
> function to hook IRQs for these platform-specific System Errors, like
> AER.
> 
> If these platform-specific service IRQs have been successfully
> installed via pcie_init_platform_service_irqs(),
> pcie_init_service_irqs() is skipped.
> 
> Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Bjorn Helgaas <helgaas@kernel.org>
> Cc: Pali Rohár <pali@kernel.org>
> Cc: Michal Simek <michal.simek@xilinx.com>
> ---
>  drivers/pci/pcie/portdrv_core.c | 39 ++++++++++++++++++++++++++++++++-
>  include/linux/pci.h             |  2 ++
>  2 files changed, 40 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
> index e7dcb1f23210..27b990cedb4c 100644
> --- a/drivers/pci/pcie/portdrv_core.c
> +++ b/drivers/pci/pcie/portdrv_core.c
> @@ -190,6 +190,31 @@ static int pcie_init_service_irqs(struct pci_dev *dev, int *irqs, int mask)
>  	return 0;
>  }
>  
> +/**
> + * pcie_init_platform_service_irqs - initialize platform service irqs for
> + * platform-specific System Errors
> + * @dev: PCI Express port to handle
> + * @irqs: Array of irqs to populate
> + * @mask: Bitmask of capabilities

s/irqs/IRQs/ above (twice) for consistency.

> + * Return value: -ENODEV, in case no platform-specific IRQ is available
> + */
> +static int pcie_init_platform_service_irqs(struct pci_dev *dev,
> +					   int *irqs, int mask)
> +{
> +	struct pci_host_bridge *bridge;
> +
> +	if (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) {
> +		bridge = pci_find_host_bridge(dev->bus);
> +		if (bridge && bridge->init_platform_service_irqs) {
> +			return bridge->init_platform_service_irqs(dev, irqs,
> +								  mask);
> +		}
> +	}
> +
> +	return -ENODEV;
> +}
> +
>  /**
>   * get_port_device_capability - discover capabilities of a PCI Express port
>   * @dev: PCI Express port to examine
> @@ -335,7 +360,19 @@ int pcie_port_device_register(struct pci_dev *dev)
>  		irq_services |= PCIE_PORT_SERVICE_DPC;
>  	irq_services &= capabilities;
>  
> -	if (irq_services) {
> +	/*
> +	 * Some platforms have dedicated interrupts from root complex to
> +	 * interrupt controller for PCIe platform-specific System Errors
> +	 * like AER/PME etc., check if the platform registered with any such
> +	 * IRQ.

I don't see "PME etc" mentioned in the spec sections you cite.
6.2.4.1.2 and 6.2.6 only cover interrupts in response to error
Messages.  Are there other sections that cover PME and whatever other
interrupts you have in mind?

6.7.3.4 ("Software Notification of Hot-Plug Events") talks about PME
and Hot-Plug Event interrupts, but these aren't errors, and I only see
signaling via INTx, MSI, or MSI-X.  Is there provision for a different
method?

> +	 */
> +	status = pcie_init_platform_service_irqs(dev, irqs, capabilities);
> +
> +	/*
> +	 * Only install service irqs, when the platform-specific hook was
> +	 * unsuccessful

s/irqs/IRQs/ again.

> +	 */
> +	if (irq_services && status) {
>  		/*
>  		 * Initialize service IRQs. Don't use service devices that
>  		 * require interrupts if there is no way to generate them.
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 18a75c8e615c..fb8aad3cb460 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -554,6 +554,8 @@ struct pci_host_bridge {
>  	u8 (*swizzle_irq)(struct pci_dev *, u8 *); /* Platform IRQ swizzler */
>  	int (*map_irq)(const struct pci_dev *, u8, u8);
>  	void (*release_fn)(struct pci_host_bridge *);
> +	int (*init_platform_service_irqs)(struct pci_dev *dev, int *irqs,
> +					  int plat_mask);
>  	void		*release_data;
>  	unsigned int	ignore_reset_delay:1;	/* For entire hierarchy */
>  	unsigned int	no_ext_tags:1;		/* No Extended Tags */
> -- 
> 2.34.1
> 

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

* Re: [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors
  2022-05-28  0:09   ` Bjorn Helgaas
@ 2022-05-30  8:18     ` Stefan Roese
  2022-05-30  8:32       ` Pali Rohár
  0 siblings, 1 reply; 20+ messages in thread
From: Stefan Roese @ 2022-05-30  8:18 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: linux-pci, Bharat Kumar Gogada, Pali Rohár, Michal Simek

On 28.05.22 02:09, Bjorn Helgaas wrote:
> In subject line, I assume you mean "System Errors" instead of "Service
> Errors"?

Background: I took over submitting this patchset from Bharat. Here his
last revision:
https://www.spinics.net/lists/kernel/msg2960164.html

Just to explain, that I didn't choose the naming.

To answer your question I personally think too, that "System Errors" is
more appropriate than "Service Errors". But still this patchset replaces
or better enhances the already present pcie_init_service_irqs() by a
platform-specific version. I can only suspect, that this is the
reasoning for this "Service" naming.

> On Fri, Jan 14, 2022 at 08:58:33AM +0100, Stefan Roese wrote:
>> From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
>>
>> As per section 6.2.4.1.2, 6.2.6 in PCIe r4.0 (and later versions),
>> platform-specific System Errors like AER can be delivered via platform-
>> specific interrupt lines.
> 
> IIUC, this refers to the top left branch in Figure 6-3 of PCIe r6.0,
> sec 6.2.6, which shows "System Error (platform specific)" controlled
> by "System Error Enables (one per error class) in the Root Control
> register," i.e., the PCI_EXP_RTCTL_SECEE, PCI_EXP_RTCTL_SENFEE, and
> PCI_EXP_RTCTL_SEFEE bits.
> 
> Where are those enable bits set?  The only references I see are to
> them being cleared via SYSTEM_ERROR_INTR_ON_MESG_MASK in
> aer_enable_rootport().

Interesting, thanks. Again, I didn't write the original commit text,
so my comments are a bit "limited" here. Perhaps Bharat might have
something add here?

>> This patch adds the init_platform_service_irqs() hook to struct
>> pci_host_bridge, making it possible that platforms may implement this
>> function to hook IRQs for these platform-specific System Errors, like
>> AER.
>>
>> If these platform-specific service IRQs have been successfully
>> installed via pcie_init_platform_service_irqs(),
>> pcie_init_service_irqs() is skipped.
>>
>> Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
>> Signed-off-by: Stefan Roese <sr@denx.de>
>> Cc: Bjorn Helgaas <helgaas@kernel.org>
>> Cc: Pali Rohár <pali@kernel.org>
>> Cc: Michal Simek <michal.simek@xilinx.com>
>> ---
>>   drivers/pci/pcie/portdrv_core.c | 39 ++++++++++++++++++++++++++++++++-
>>   include/linux/pci.h             |  2 ++
>>   2 files changed, 40 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
>> index e7dcb1f23210..27b990cedb4c 100644
>> --- a/drivers/pci/pcie/portdrv_core.c
>> +++ b/drivers/pci/pcie/portdrv_core.c
>> @@ -190,6 +190,31 @@ static int pcie_init_service_irqs(struct pci_dev *dev, int *irqs, int mask)
>>   	return 0;
>>   }
>>   
>> +/**
>> + * pcie_init_platform_service_irqs - initialize platform service irqs for
>> + * platform-specific System Errors
>> + * @dev: PCI Express port to handle
>> + * @irqs: Array of irqs to populate
>> + * @mask: Bitmask of capabilities
> 
> s/irqs/IRQs/ above (twice) for consistency.

Yes.

>> + * Return value: -ENODEV, in case no platform-specific IRQ is available
>> + */
>> +static int pcie_init_platform_service_irqs(struct pci_dev *dev,
>> +					   int *irqs, int mask)
>> +{
>> +	struct pci_host_bridge *bridge;
>> +
>> +	if (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) {
>> +		bridge = pci_find_host_bridge(dev->bus);
>> +		if (bridge && bridge->init_platform_service_irqs) {
>> +			return bridge->init_platform_service_irqs(dev, irqs,
>> +								  mask);
>> +		}
>> +	}
>> +
>> +	return -ENODEV;
>> +}
>> +
>>   /**
>>    * get_port_device_capability - discover capabilities of a PCI Express port
>>    * @dev: PCI Express port to examine
>> @@ -335,7 +360,19 @@ int pcie_port_device_register(struct pci_dev *dev)
>>   		irq_services |= PCIE_PORT_SERVICE_DPC;
>>   	irq_services &= capabilities;
>>   
>> -	if (irq_services) {
>> +	/*
>> +	 * Some platforms have dedicated interrupts from root complex to
>> +	 * interrupt controller for PCIe platform-specific System Errors
>> +	 * like AER/PME etc., check if the platform registered with any such
>> +	 * IRQ.
> 
> I don't see "PME etc" mentioned in the spec sections you cite.
> 6.2.4.1.2 and 6.2.6 only cover interrupts in response to error
> Messages.  Are there other sections that cover PME and whatever other
> interrupts you have in mind?

Bharat?

> 6.7.3.4 ("Software Notification of Hot-Plug Events") talks about PME
> and Hot-Plug Event interrupts, but these aren't errors, and I only see
> signaling via INTx, MSI, or MSI-X.  Is there provision for a different
> method?

Here the quote from Bharat's original cover letter:
"Some platforms have dedicated IRQ lines for PCIe services like AER/PME
etc. The root complex on these platform will use these seperate IRQ
lines to report AER/PME etc., interrupts and will not generate MSI/
MSI-X/INTx interrupts for these services.
These patches will add new method for these kind of platforms to
register the platform IRQ number with respective PCIe services."

To sum it up, on our Xilinx ZynqMP platform this patch series is needed
to deliver AER related interrupts. As this SoC needs this platform
specific IRQ line for signalling of these events.

>> +	 */
>> +	status = pcie_init_platform_service_irqs(dev, irqs, capabilities);
>> +
>> +	/*
>> +	 * Only install service irqs, when the platform-specific hook was
>> +	 * unsuccessful
> 
> s/irqs/IRQs/ again.

Yes.

Thanks,
Stefan

>> +	 */
>> +	if (irq_services && status) {
>>   		/*
>>   		 * Initialize service IRQs. Don't use service devices that
>>   		 * require interrupts if there is no way to generate them.
>> diff --git a/include/linux/pci.h b/include/linux/pci.h
>> index 18a75c8e615c..fb8aad3cb460 100644
>> --- a/include/linux/pci.h
>> +++ b/include/linux/pci.h
>> @@ -554,6 +554,8 @@ struct pci_host_bridge {
>>   	u8 (*swizzle_irq)(struct pci_dev *, u8 *); /* Platform IRQ swizzler */
>>   	int (*map_irq)(const struct pci_dev *, u8, u8);
>>   	void (*release_fn)(struct pci_host_bridge *);
>> +	int (*init_platform_service_irqs)(struct pci_dev *dev, int *irqs,
>> +					  int plat_mask);
>>   	void		*release_data;
>>   	unsigned int	ignore_reset_delay:1;	/* For entire hierarchy */
>>   	unsigned int	no_ext_tags:1;		/* No Extended Tags */
>> -- 
>> 2.34.1
>>

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

* Re: [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors
  2022-05-30  8:18     ` Stefan Roese
@ 2022-05-30  8:32       ` Pali Rohár
  2022-05-31 21:31         ` Bjorn Helgaas
  0 siblings, 1 reply; 20+ messages in thread
From: Pali Rohár @ 2022-05-30  8:32 UTC (permalink / raw)
  To: Stefan Roese; +Cc: Bjorn Helgaas, linux-pci, Bharat Kumar Gogada, Michal Simek

On Monday 30 May 2022 10:18:41 Stefan Roese wrote:
> On 28.05.22 02:09, Bjorn Helgaas wrote:
> > In subject line, I assume you mean "System Errors" instead of "Service
> > Errors"?
> 
> Background: I took over submitting this patchset from Bharat. Here his
> last revision:
> https://www.spinics.net/lists/kernel/msg2960164.html
> 
> Just to explain, that I didn't choose the naming.
> 
> To answer your question I personally think too, that "System Errors" is
> more appropriate than "Service Errors". But still this patchset replaces
> or better enhances the already present pcie_init_service_irqs() by a
> platform-specific version. I can only suspect, that this is the
> reasoning for this "Service" naming.

Hello! Based on the below text "Here the quote from Bharat's original
cover letter:" I think that the better naming should be: "Service
interrupts". Because it adds support for interrupts from PCIe services
like AER, PME or HP. Only AER are errors, other IRQs are just services.

> > On Fri, Jan 14, 2022 at 08:58:33AM +0100, Stefan Roese wrote:
> > > From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> > > 
> > > As per section 6.2.4.1.2, 6.2.6 in PCIe r4.0 (and later versions),
> > > platform-specific System Errors like AER can be delivered via platform-
> > > specific interrupt lines.
> > 
> > IIUC, this refers to the top left branch in Figure 6-3 of PCIe r6.0,
> > sec 6.2.6, which shows "System Error (platform specific)" controlled
> > by "System Error Enables (one per error class) in the Root Control
> > register," i.e., the PCI_EXP_RTCTL_SECEE, PCI_EXP_RTCTL_SENFEE, and
> > PCI_EXP_RTCTL_SEFEE bits.
> > 
> > Where are those enable bits set?  The only references I see are to
> > them being cleared via SYSTEM_ERROR_INTR_ON_MESG_MASK in
> > aer_enable_rootport().
> 
> Interesting, thanks. Again, I didn't write the original commit text,
> so my comments are a bit "limited" here. Perhaps Bharat might have
> something add here?
> 
> > > This patch adds the init_platform_service_irqs() hook to struct
> > > pci_host_bridge, making it possible that platforms may implement this
> > > function to hook IRQs for these platform-specific System Errors, like
> > > AER.
> > > 
> > > If these platform-specific service IRQs have been successfully
> > > installed via pcie_init_platform_service_irqs(),
> > > pcie_init_service_irqs() is skipped.
> > > 
> > > Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> > > Signed-off-by: Stefan Roese <sr@denx.de>
> > > Cc: Bjorn Helgaas <helgaas@kernel.org>
> > > Cc: Pali Rohár <pali@kernel.org>
> > > Cc: Michal Simek <michal.simek@xilinx.com>
> > > ---
> > >   drivers/pci/pcie/portdrv_core.c | 39 ++++++++++++++++++++++++++++++++-
> > >   include/linux/pci.h             |  2 ++
> > >   2 files changed, 40 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
> > > index e7dcb1f23210..27b990cedb4c 100644
> > > --- a/drivers/pci/pcie/portdrv_core.c
> > > +++ b/drivers/pci/pcie/portdrv_core.c
> > > @@ -190,6 +190,31 @@ static int pcie_init_service_irqs(struct pci_dev *dev, int *irqs, int mask)
> > >   	return 0;
> > >   }
> > > +/**
> > > + * pcie_init_platform_service_irqs - initialize platform service irqs for
> > > + * platform-specific System Errors
> > > + * @dev: PCI Express port to handle
> > > + * @irqs: Array of irqs to populate
> > > + * @mask: Bitmask of capabilities
> > 
> > s/irqs/IRQs/ above (twice) for consistency.
> 
> Yes.
> 
> > > + * Return value: -ENODEV, in case no platform-specific IRQ is available
> > > + */
> > > +static int pcie_init_platform_service_irqs(struct pci_dev *dev,
> > > +					   int *irqs, int mask)
> > > +{
> > > +	struct pci_host_bridge *bridge;
> > > +
> > > +	if (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) {
> > > +		bridge = pci_find_host_bridge(dev->bus);
> > > +		if (bridge && bridge->init_platform_service_irqs) {
> > > +			return bridge->init_platform_service_irqs(dev, irqs,
> > > +								  mask);
> > > +		}
> > > +	}
> > > +
> > > +	return -ENODEV;
> > > +}
> > > +
> > >   /**
> > >    * get_port_device_capability - discover capabilities of a PCI Express port
> > >    * @dev: PCI Express port to examine
> > > @@ -335,7 +360,19 @@ int pcie_port_device_register(struct pci_dev *dev)
> > >   		irq_services |= PCIE_PORT_SERVICE_DPC;
> > >   	irq_services &= capabilities;
> > > -	if (irq_services) {
> > > +	/*
> > > +	 * Some platforms have dedicated interrupts from root complex to
> > > +	 * interrupt controller for PCIe platform-specific System Errors
> > > +	 * like AER/PME etc., check if the platform registered with any such
> > > +	 * IRQ.
> > 
> > I don't see "PME etc" mentioned in the spec sections you cite.
> > 6.2.4.1.2 and 6.2.6 only cover interrupts in response to error
> > Messages.  Are there other sections that cover PME and whatever other
> > interrupts you have in mind?
> 
> Bharat?
> 
> > 6.7.3.4 ("Software Notification of Hot-Plug Events") talks about PME
> > and Hot-Plug Event interrupts, but these aren't errors, and I only see
> > signaling via INTx, MSI, or MSI-X.  Is there provision for a different
> > method?
> 
> Here the quote from Bharat's original cover letter:
> "Some platforms have dedicated IRQ lines for PCIe services like AER/PME
> etc. The root complex on these platform will use these seperate IRQ
> lines to report AER/PME etc., interrupts and will not generate MSI/
> MSI-X/INTx interrupts for these services.

This is the best explanation of this change.

> These patches will add new method for these kind of platforms to
> register the platform IRQ number with respective PCIe services."
> 
> To sum it up, on our Xilinx ZynqMP platform this patch series is needed
> to deliver AER related interrupts. As this SoC needs this platform
> specific IRQ line for signalling of these events.
> 
> > > +	 */
> > > +	status = pcie_init_platform_service_irqs(dev, irqs, capabilities);
> > > +
> > > +	/*
> > > +	 * Only install service irqs, when the platform-specific hook was
> > > +	 * unsuccessful
> > 
> > s/irqs/IRQs/ again.
> 
> Yes.
> 
> Thanks,
> Stefan
> 
> > > +	 */
> > > +	if (irq_services && status) {
> > >   		/*
> > >   		 * Initialize service IRQs. Don't use service devices that
> > >   		 * require interrupts if there is no way to generate them.
> > > diff --git a/include/linux/pci.h b/include/linux/pci.h
> > > index 18a75c8e615c..fb8aad3cb460 100644
> > > --- a/include/linux/pci.h
> > > +++ b/include/linux/pci.h
> > > @@ -554,6 +554,8 @@ struct pci_host_bridge {
> > >   	u8 (*swizzle_irq)(struct pci_dev *, u8 *); /* Platform IRQ swizzler */
> > >   	int (*map_irq)(const struct pci_dev *, u8, u8);
> > >   	void (*release_fn)(struct pci_host_bridge *);
> > > +	int (*init_platform_service_irqs)(struct pci_dev *dev, int *irqs,
> > > +					  int plat_mask);
> > >   	void		*release_data;
> > >   	unsigned int	ignore_reset_delay:1;	/* For entire hierarchy */
> > >   	unsigned int	no_ext_tags:1;		/* No Extended Tags */
> > > -- 
> > > 2.34.1
> > > 

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

* Re: [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors
  2022-05-30  8:32       ` Pali Rohár
@ 2022-05-31 21:31         ` Bjorn Helgaas
  2022-05-31 22:57           ` Pali Rohár
  2022-06-01 11:47           ` Stefan Roese
  0 siblings, 2 replies; 20+ messages in thread
From: Bjorn Helgaas @ 2022-05-31 21:31 UTC (permalink / raw)
  To: Pali Rohár
  Cc: Stefan Roese, linux-pci, Bharat Kumar Gogada, Michal Simek

On Mon, May 30, 2022 at 10:32:06AM +0200, Pali Rohár wrote:
> On Monday 30 May 2022 10:18:41 Stefan Roese wrote:
> > On 28.05.22 02:09, Bjorn Helgaas wrote:
> > > In subject line, I assume you mean "System Errors" instead of "Service
> > > Errors"?
> > 
> > Background: I took over submitting this patchset from Bharat. Here his
> > last revision:
> > https://www.spinics.net/lists/kernel/msg2960164.html

Here's the link to the more usable lore archive:
https://lore.kernel.org/all/1542206878-24587-1-git-send-email-bharat.kumar.gogada@xilinx.com/

> > To answer your question I personally think too, that "System Errors" is
> > more appropriate than "Service Errors". But still this patchset replaces
> > or better enhances the already present pcie_init_service_irqs() by a
> > platform-specific version. I can only suspect, that this is the
> > reasoning for this "Service" naming.
> 
> Hello! Based on the below text "Here the quote from Bharat's original
> cover letter:" I think that the better naming should be: "Service
> interrupts". Because it adds support for interrupts from PCIe services
> like AER, PME or HP. Only AER are errors, other IRQs are just services.

The question I'm trying to answer is whether this series concerns the
"System Error" mechanism or the "Error Interrupt" mechanism.  We
should figure out which one this is and use the correct name.

The sec 6.2.4.1.2 cited below clearly refers to the AER Root Error
Command register, which controls interrupt generation via INTx, MSI,
or MSI-X, i.e., the standard "Error Interrupt" shown on the RIGHT side
of Figure 6-3 in sec 6.2.6.

The "System Error" signaling on the LEFT side of Figure 6-3 would be
controlled by the Root Control register in the PCIe capability.

It should be easy to use setpci to set/clear these two sets of enable
bits and figure out which path is of interest here.

> > > On Fri, Jan 14, 2022 at 08:58:33AM +0100, Stefan Roese wrote:
> > > > From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>

> > > > As per section 6.2.4.1.2, 6.2.6 in PCIe r4.0 (and later versions),
> > > > platform-specific System Errors like AER can be delivered via platform-
> > > > specific interrupt lines.

> > > ...
> > > 6.7.3.4 ("Software Notification of Hot-Plug Events") talks about PME
> > > and Hot-Plug Event interrupts, but these aren't errors, and I only see
> > > signaling via INTx, MSI, or MSI-X.  Is there provision for a different
> > > method?
> > 
> > Here the quote from Bharat's original cover letter:
> > "Some platforms have dedicated IRQ lines for PCIe services like AER/PME
> > etc. The root complex on these platform will use these seperate IRQ
> > lines to report AER/PME etc., interrupts and will not generate MSI/
> > MSI-X/INTx interrupts for these services.
> 
> This is the best explanation of this change.

As far as I can tell, "dedicated IRQ lines for services like AER/PME
etc" would violate the PCIe spec.  That's OK, we can work around that
sort of thing, but it needs to be clearly called out as some kind of
quirk and not mixed in with things like System Error signaling, which
is allowed to be platform-specific.

Bjorn

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

* Re: [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors
  2022-05-31 21:31         ` Bjorn Helgaas
@ 2022-05-31 22:57           ` Pali Rohár
  2022-06-01 11:47           ` Stefan Roese
  1 sibling, 0 replies; 20+ messages in thread
From: Pali Rohár @ 2022-05-31 22:57 UTC (permalink / raw)
  To: Bjorn Helgaas; +Cc: Stefan Roese, linux-pci, Bharat Kumar Gogada, Michal Simek

On Tuesday 31 May 2022 16:31:58 Bjorn Helgaas wrote:
> On Mon, May 30, 2022 at 10:32:06AM +0200, Pali Rohár wrote:
> > On Monday 30 May 2022 10:18:41 Stefan Roese wrote:
> > > On 28.05.22 02:09, Bjorn Helgaas wrote:
> > > > In subject line, I assume you mean "System Errors" instead of "Service
> > > > Errors"?
> > > 
> > > Background: I took over submitting this patchset from Bharat. Here his
> > > last revision:
> > > https://www.spinics.net/lists/kernel/msg2960164.html
> 
> Here's the link to the more usable lore archive:
> https://lore.kernel.org/all/1542206878-24587-1-git-send-email-bharat.kumar.gogada@xilinx.com/
> 
> > > To answer your question I personally think too, that "System Errors" is
> > > more appropriate than "Service Errors". But still this patchset replaces
> > > or better enhances the already present pcie_init_service_irqs() by a
> > > platform-specific version. I can only suspect, that this is the
> > > reasoning for this "Service" naming.
> > 
> > Hello! Based on the below text "Here the quote from Bharat's original
> > cover letter:" I think that the better naming should be: "Service
> > interrupts". Because it adds support for interrupts from PCIe services
> > like AER, PME or HP. Only AER are errors, other IRQs are just services.
> 
> The question I'm trying to answer is whether this series concerns the
> "System Error" mechanism or the "Error Interrupt" mechanism.  We
> should figure out which one this is and use the correct name.

My understanding is that neither "System Error", nor "Error Interrupt".
But patch series is about "dedicated IRQ lines for services". One of
PCIe service is AER, which is one of the mostly used PCIe service in
kernel and therefore it is the root of confusions with keyword "error".

> The sec 6.2.4.1.2 cited below clearly refers to the AER Root Error
> Command register, which controls interrupt generation via INTx, MSI,
> or MSI-X, i.e., the standard "Error Interrupt" shown on the RIGHT side
> of Figure 6-3 in sec 6.2.6.
> 
> The "System Error" signaling on the LEFT side of Figure 6-3 would be
> controlled by the Root Control register in the PCIe capability.
> 
> It should be easy to use setpci to set/clear these two sets of enable
> bits and figure out which path is of interest here.
> 
> > > > On Fri, Jan 14, 2022 at 08:58:33AM +0100, Stefan Roese wrote:
> > > > > From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> 
> > > > > As per section 6.2.4.1.2, 6.2.6 in PCIe r4.0 (and later versions),
> > > > > platform-specific System Errors like AER can be delivered via platform-
> > > > > specific interrupt lines.
> 
> > > > ...
> > > > 6.7.3.4 ("Software Notification of Hot-Plug Events") talks about PME
> > > > and Hot-Plug Event interrupts, but these aren't errors, and I only see
> > > > signaling via INTx, MSI, or MSI-X.  Is there provision for a different
> > > > method?
> > > 
> > > Here the quote from Bharat's original cover letter:
> > > "Some platforms have dedicated IRQ lines for PCIe services like AER/PME
> > > etc. The root complex on these platform will use these seperate IRQ
> > > lines to report AER/PME etc., interrupts and will not generate MSI/
> > > MSI-X/INTx interrupts for these services.
> > 
> > This is the best explanation of this change.
> 
> As far as I can tell, "dedicated IRQ lines for services like AER/PME
> etc" would violate the PCIe spec.

I think too, that this does not conform to PCIe spec.

> That's OK, we can work around that
> sort of thing, but it needs to be clearly called out as some kind of
> quirk and not mixed in with things like System Error signaling, which
> is allowed to be platform-specific.
> 
> Bjorn

I agree.

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

* Re: [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors
  2022-05-31 21:31         ` Bjorn Helgaas
  2022-05-31 22:57           ` Pali Rohár
@ 2022-06-01 11:47           ` Stefan Roese
  2022-06-01 11:53             ` Pali Rohár
  2022-06-08 18:39             ` Bjorn Helgaas
  1 sibling, 2 replies; 20+ messages in thread
From: Stefan Roese @ 2022-06-01 11:47 UTC (permalink / raw)
  To: Bjorn Helgaas, Pali Rohár
  Cc: linux-pci, Bharat Kumar Gogada, Michal Simek

On 31.05.22 23:31, Bjorn Helgaas wrote:
> On Mon, May 30, 2022 at 10:32:06AM +0200, Pali Rohár wrote:
>> On Monday 30 May 2022 10:18:41 Stefan Roese wrote:
>>> On 28.05.22 02:09, Bjorn Helgaas wrote:
>>>> In subject line, I assume you mean "System Errors" instead of "Service
>>>> Errors"?
>>>
>>> Background: I took over submitting this patchset from Bharat. Here his
>>> last revision:
>>> https://www.spinics.net/lists/kernel/msg2960164.html
> 
> Here's the link to the more usable lore archive:
> https://lore.kernel.org/all/1542206878-24587-1-git-send-email-bharat.kumar.gogada@xilinx.com/
> 
>>> To answer your question I personally think too, that "System Errors" is
>>> more appropriate than "Service Errors". But still this patchset replaces
>>> or better enhances the already present pcie_init_service_irqs() by a
>>> platform-specific version. I can only suspect, that this is the
>>> reasoning for this "Service" naming.
>>
>> Hello! Based on the below text "Here the quote from Bharat's original
>> cover letter:" I think that the better naming should be: "Service
>> interrupts". Because it adds support for interrupts from PCIe services
>> like AER, PME or HP. Only AER are errors, other IRQs are just services.
> 
> The question I'm trying to answer is whether this series concerns the
> "System Error" mechanism or the "Error Interrupt" mechanism.  We
> should figure out which one this is and use the correct name.
> 
> The sec 6.2.4.1.2 cited below clearly refers to the AER Root Error
> Command register, which controls interrupt generation via INTx, MSI,
> or MSI-X, i.e., the standard "Error Interrupt" shown on the RIGHT side
> of Figure 6-3 in sec 6.2.6.
> 
> The "System Error" signaling on the LEFT side of Figure 6-3 would be
> controlled by the Root Control register in the PCIe capability.

"System Error" is probably incorrect. You've already stated, that
these error bits are generally disabled in the PCI_EXP_RTCTL reg in
aer_enable_rootport():

	/* Disable system error generation in response to error messages */
	pcie_capability_clear_word(pdev, PCI_EXP_RTCTL,
				   SYSTEM_ERROR_INTR_ON_MESG_MASK);

This leaves "Error Interrupt", but I might be wrong here.

> It should be easy to use setpci to set/clear these two sets of enable
> bits and figure out which path is of interest here.

Here the value of the PCI_EXP_RTCTL register at runtime:
# setpci -v -s 00:00.0 CAP_EXP+0x1c.w
0000:00:00.0 (cap 10 @60) @7c = 0010

So all "System Error" enable bits are disabled.

Please let me know if I should make some other "setpci" tests.

>>>> On Fri, Jan 14, 2022 at 08:58:33AM +0100, Stefan Roese wrote:
>>>>> From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> 
>>>>> As per section 6.2.4.1.2, 6.2.6 in PCIe r4.0 (and later versions),
>>>>> platform-specific System Errors like AER can be delivered via platform-
>>>>> specific interrupt lines.
> 
>>>> ...
>>>> 6.7.3.4 ("Software Notification of Hot-Plug Events") talks about PME
>>>> and Hot-Plug Event interrupts, but these aren't errors, and I only see
>>>> signaling via INTx, MSI, or MSI-X.  Is there provision for a different
>>>> method?
>>>
>>> Here the quote from Bharat's original cover letter:
>>> "Some platforms have dedicated IRQ lines for PCIe services like AER/PME
>>> etc. The root complex on these platform will use these seperate IRQ
>>> lines to report AER/PME etc., interrupts and will not generate MSI/
>>> MSI-X/INTx interrupts for these services.
>>
>> This is the best explanation of this change.
> 
> As far as I can tell, "dedicated IRQ lines for services like AER/PME
> etc" would violate the PCIe spec.

AFAICT this is the case here.

>  That's OK, we can work around that
> sort of thing, but it needs to be clearly called out as some kind of
> quirk and not mixed in with things like System Error signaling, which
> is allowed to be platform-specific.

Agreed. So how to process with this patchset? Should I reword the
patch subject line (and the commit text and comments) to something like:

Add option to setup IRQs for platform-specific Error Interrupt ?

Thanks,
Stefan

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

* Re: [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors
  2022-06-01 11:47           ` Stefan Roese
@ 2022-06-01 11:53             ` Pali Rohár
  2022-06-08 18:39             ` Bjorn Helgaas
  1 sibling, 0 replies; 20+ messages in thread
From: Pali Rohár @ 2022-06-01 11:53 UTC (permalink / raw)
  To: Stefan Roese; +Cc: Bjorn Helgaas, linux-pci, Bharat Kumar Gogada, Michal Simek

On Wednesday 01 June 2022 13:47:12 Stefan Roese wrote:
> On 31.05.22 23:31, Bjorn Helgaas wrote:
> > On Mon, May 30, 2022 at 10:32:06AM +0200, Pali Rohár wrote:
> > > On Monday 30 May 2022 10:18:41 Stefan Roese wrote:
> > > > On 28.05.22 02:09, Bjorn Helgaas wrote:
> > > > > In subject line, I assume you mean "System Errors" instead of "Service
> > > > > Errors"?
> > > > 
> > > > Background: I took over submitting this patchset from Bharat. Here his
> > > > last revision:
> > > > https://www.spinics.net/lists/kernel/msg2960164.html
> > 
> > Here's the link to the more usable lore archive:
> > https://lore.kernel.org/all/1542206878-24587-1-git-send-email-bharat.kumar.gogada@xilinx.com/
> > 
> > > > To answer your question I personally think too, that "System Errors" is
> > > > more appropriate than "Service Errors". But still this patchset replaces
> > > > or better enhances the already present pcie_init_service_irqs() by a
> > > > platform-specific version. I can only suspect, that this is the
> > > > reasoning for this "Service" naming.
> > > 
> > > Hello! Based on the below text "Here the quote from Bharat's original
> > > cover letter:" I think that the better naming should be: "Service
> > > interrupts". Because it adds support for interrupts from PCIe services
> > > like AER, PME or HP. Only AER are errors, other IRQs are just services.
> > 
> > The question I'm trying to answer is whether this series concerns the
> > "System Error" mechanism or the "Error Interrupt" mechanism.  We
> > should figure out which one this is and use the correct name.
> > 
> > The sec 6.2.4.1.2 cited below clearly refers to the AER Root Error
> > Command register, which controls interrupt generation via INTx, MSI,
> > or MSI-X, i.e., the standard "Error Interrupt" shown on the RIGHT side
> > of Figure 6-3 in sec 6.2.6.
> > 
> > The "System Error" signaling on the LEFT side of Figure 6-3 would be
> > controlled by the Root Control register in the PCIe capability.
> 
> "System Error" is probably incorrect. You've already stated, that
> these error bits are generally disabled in the PCI_EXP_RTCTL reg in
> aer_enable_rootport():
> 
> 	/* Disable system error generation in response to error messages */
> 	pcie_capability_clear_word(pdev, PCI_EXP_RTCTL,
> 				   SYSTEM_ERROR_INTR_ON_MESG_MASK);
> 
> This leaves "Error Interrupt", but I might be wrong here.
> 
> > It should be easy to use setpci to set/clear these two sets of enable
> > bits and figure out which path is of interest here.
> 
> Here the value of the PCI_EXP_RTCTL register at runtime:
> # setpci -v -s 00:00.0 CAP_EXP+0x1c.w
> 0000:00:00.0 (cap 10 @60) @7c = 0010
> 
> So all "System Error" enable bits are disabled.
> 
> Please let me know if I should make some other "setpci" tests.
> 
> > > > > On Fri, Jan 14, 2022 at 08:58:33AM +0100, Stefan Roese wrote:
> > > > > > From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> > 
> > > > > > As per section 6.2.4.1.2, 6.2.6 in PCIe r4.0 (and later versions),
> > > > > > platform-specific System Errors like AER can be delivered via platform-
> > > > > > specific interrupt lines.
> > 
> > > > > ...
> > > > > 6.7.3.4 ("Software Notification of Hot-Plug Events") talks about PME
> > > > > and Hot-Plug Event interrupts, but these aren't errors, and I only see
> > > > > signaling via INTx, MSI, or MSI-X.  Is there provision for a different
> > > > > method?
> > > > 
> > > > Here the quote from Bharat's original cover letter:
> > > > "Some platforms have dedicated IRQ lines for PCIe services like AER/PME
> > > > etc. The root complex on these platform will use these seperate IRQ
> > > > lines to report AER/PME etc., interrupts and will not generate MSI/
> > > > MSI-X/INTx interrupts for these services.
> > > 
> > > This is the best explanation of this change.
> > 
> > As far as I can tell, "dedicated IRQ lines for services like AER/PME
> > etc" would violate the PCIe spec.
> 
> AFAICT this is the case here.
> 
> >  That's OK, we can work around that
> > sort of thing, but it needs to be clearly called out as some kind of
> > quirk and not mixed in with things like System Error signaling, which
> > is allowed to be platform-specific.
> 
> Agreed. So how to process with this patchset? Should I reword the
> patch subject line (and the commit text and comments) to something like:
> 
> Add option to setup IRQs for platform-specific Error Interrupt ?
> 
> Thanks,
> Stefan

I think it should be named "Service Interrupt" or something like that as
it is bound only to _errors_ but to any platform-specific interrupt.

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

* Re: [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors
  2022-06-01 11:47           ` Stefan Roese
  2022-06-01 11:53             ` Pali Rohár
@ 2022-06-08 18:39             ` Bjorn Helgaas
  1 sibling, 0 replies; 20+ messages in thread
From: Bjorn Helgaas @ 2022-06-08 18:39 UTC (permalink / raw)
  To: Stefan Roese
  Cc: Pali Rohár, linux-pci, Bharat Kumar Gogada, Michal Simek

On Wed, Jun 01, 2022 at 01:47:12PM +0200, Stefan Roese wrote:
> On 31.05.22 23:31, Bjorn Helgaas wrote:
> > On Mon, May 30, 2022 at 10:32:06AM +0200, Pali Rohár wrote:
> > > On Monday 30 May 2022 10:18:41 Stefan Roese wrote:
> > > > On 28.05.22 02:09, Bjorn Helgaas wrote:
> > > > > In subject line, I assume you mean "System Errors" instead of "Service
> > > > > Errors"?
> > > > 
> > > > Background: I took over submitting this patchset from Bharat. Here his
> > > > last revision:
> > > > https://www.spinics.net/lists/kernel/msg2960164.html
> > 
> > Here's the link to the more usable lore archive:
> > https://lore.kernel.org/all/1542206878-24587-1-git-send-email-bharat.kumar.gogada@xilinx.com/
> > 
> > > > To answer your question I personally think too, that "System Errors" is
> > > > more appropriate than "Service Errors". But still this patchset replaces
> > > > or better enhances the already present pcie_init_service_irqs() by a
> > > > platform-specific version. I can only suspect, that this is the
> > > > reasoning for this "Service" naming.
> > > 
> > > Hello! Based on the below text "Here the quote from Bharat's original
> > > cover letter:" I think that the better naming should be: "Service
> > > interrupts". Because it adds support for interrupts from PCIe services
> > > like AER, PME or HP. Only AER are errors, other IRQs are just services.
> > 
> > The question I'm trying to answer is whether this series concerns the
> > "System Error" mechanism or the "Error Interrupt" mechanism.  We
> > should figure out which one this is and use the correct name.
> > 
> > The sec 6.2.4.1.2 cited below clearly refers to the AER Root Error
> > Command register, which controls interrupt generation via INTx, MSI,
> > or MSI-X, i.e., the standard "Error Interrupt" shown on the RIGHT side
> > of Figure 6-3 in sec 6.2.6.
> > 
> > The "System Error" signaling on the LEFT side of Figure 6-3 would be
> > controlled by the Root Control register in the PCIe capability.
> 
> "System Error" is probably incorrect. You've already stated, that
> these error bits are generally disabled in the PCI_EXP_RTCTL reg in
> aer_enable_rootport():
> 
> 	/* Disable system error generation in response to error messages */
> 	pcie_capability_clear_word(pdev, PCI_EXP_RTCTL,
> 				   SYSTEM_ERROR_INTR_ON_MESG_MASK);
> 
> This leaves "Error Interrupt", but I might be wrong here.
> 
> > It should be easy to use setpci to set/clear these two sets of enable
> > bits and figure out which path is of interest here.
> 
> Here the value of the PCI_EXP_RTCTL register at runtime:
> # setpci -v -s 00:00.0 CAP_EXP+0x1c.w
> 0000:00:00.0 (cap 10 @60) @7c = 0010
> 
> So all "System Error" enable bits are disabled.
> 
> Please let me know if I should make some other "setpci" tests.

I assume you have verified that neither PCI_EXP_RTCTL nor
PCI_ERR_ROOT_COMMAND controls these interrupts.  (I guess it's possible
that PCI_ERR_ROOT_COR/UNCOR_RCV might be ANDed with the platform bits,
but I think there are other potential interrupt sources, too.)

So I think we need a description that is clearly not related to the
PCIe spec terminology, e.g., "platform-specific PCIe interrupts".

> > > > > On Fri, Jan 14, 2022 at 08:58:33AM +0100, Stefan Roese wrote:
> > > > > > From: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
> > 
> > > > > > As per section 6.2.4.1.2, 6.2.6 in PCIe r4.0 (and later versions),
> > > > > > platform-specific System Errors like AER can be delivered via platform-
> > > > > > specific interrupt lines.
> > 
> > > > > ...
> > > > > 6.7.3.4 ("Software Notification of Hot-Plug Events") talks about PME
> > > > > and Hot-Plug Event interrupts, but these aren't errors, and I only see
> > > > > signaling via INTx, MSI, or MSI-X.  Is there provision for a different
> > > > > method?
> > > > 
> > > > Here the quote from Bharat's original cover letter:
> > > > "Some platforms have dedicated IRQ lines for PCIe services like AER/PME
> > > > etc. The root complex on these platform will use these seperate IRQ
> > > > lines to report AER/PME etc., interrupts and will not generate MSI/
> > > > MSI-X/INTx interrupts for these services.
> > > 
> > > This is the best explanation of this change.
> > 
> > As far as I can tell, "dedicated IRQ lines for services like AER/PME
> > etc" would violate the PCIe spec.
> 
> AFAICT this is the case here.
> 
> >  That's OK, we can work around that
> > sort of thing, but it needs to be clearly called out as some kind of
> > quirk and not mixed in with things like System Error signaling, which
> > is allowed to be platform-specific.
> 
> Agreed. So how to process with this patchset? Should I reword the
> patch subject line (and the commit text and comments) to something like:
> 
> Add option to setup IRQs for platform-specific Error Interrupt ?

Yes.  But "Error Interrupt" should not be capitalized because that
implies a proper noun defined by the PCIe spec.  And I thought there
were potentially non-error interrupts coming, too.

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

end of thread, other threads:[~2022-06-08 18:39 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-14  7:58 [PATCH v4 0/2] Add support to register platform service IRQ Stefan Roese
2022-01-14  7:58 ` [PATCH v4 1/2] PCI/portdrv: Add option to setup IRQs for platform-specific Service Errors Stefan Roese
2022-01-14 11:46   ` Pali Rohár
2022-05-28  0:09   ` Bjorn Helgaas
2022-05-30  8:18     ` Stefan Roese
2022-05-30  8:32       ` Pali Rohár
2022-05-31 21:31         ` Bjorn Helgaas
2022-05-31 22:57           ` Pali Rohár
2022-06-01 11:47           ` Stefan Roese
2022-06-01 11:53             ` Pali Rohár
2022-06-08 18:39             ` Bjorn Helgaas
2022-01-14  7:58 ` [PATCH v4 2/2] PCI: xilinx-nwl: Add method to init_platform_service_irqs hook Stefan Roese
2022-01-14 11:48   ` Pali Rohár
2022-01-14 12:13     ` Stefan Roese
2022-01-14 12:34       ` Pali Rohár
2022-01-14 17:03         ` Stefan Roese
2022-03-24 16:52 ` [PATCH v4 0/2] Add support to register platform service IRQ Stefan Roese
2022-03-31 15:30   ` Bjorn Helgaas
2022-04-01  6:28     ` Stefan Roese
2022-04-01 12:35       ` Bjorn Helgaas

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.