Re: [RESEND PATCH v2 1/4] PCI: Add setup_platform_service_irq hook to struct pci_host_bridge

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/12/22 17:20, Bjorn Helgaas wrote:
On Wed, Jan 12, 2022 at 10:42:48AM +0100, Stefan Roese wrote:
From: Bharat Kumar Gogada <bharat.kumar.gogada@xxxxxxxxxx>

As per section 6.2.4.1.2, 6.2.6 in PCIe r4.0 error interrupts can
be delivered with platform specific interrupt lines.
Add setup_platform_service_irq hook to struct pci_host_bridge.
Some platforms have dedicated interrupt line from root complex to
interrupt controller for PCIe services like AER.
This hook is to register platform IRQ's to PCIe port services.

Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xxxxxxxxxx>
Signed-off-by: Stefan Roese <sr@xxxxxxx>
Tested-by: Stefan Roese <sr@xxxxxxx>
Cc: Bjorn Helgaas <helgaas@xxxxxxxxxx>
Cc: Pali Rohár <pali@xxxxxxxxxx>
Cc: Michal Simek <michal.simek@xxxxxxxxxx>

It would be nice if this included a cover letter like Bharat's
original posting did [1].  That makes it easier to keep organized.

I wanted to do this, but somehow forgot it when sending the patches.
Will do in the next version for sure.

The PCIe r6.0 spec just came out, so let's update the spec references
to that.  Conveniently, the section numbers stayed the same as they
were in r4.0.

Update the language here to use the spec terminology, i.e.,
"platform-specific System Errors"  That helps find the related bits,
e.g., "System Error on Correctable Error Enable" in the Root Control
register.

Rewrap this into paragraphs separated by blank lines.

[1] https://lore.kernel.org/all/1542206878-24587-1-git-send-email-bharat.kumar.gogada@xxxxxxxxxx/

Okay, I'll try to update these descriptions accordingly in v3.

Thanks,
Stefan

---
  include/linux/pci.h | 2 ++
  1 file changed, 2 insertions(+)

diff --git a/include/linux/pci.h b/include/linux/pci.h
index 18a75c8e615c..291eadade811 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 *);
+	void (*setup_platform_service_irq)(struct pci_host_bridge *, int *,
+					   int);
  	void		*release_data;
  	unsigned int	ignore_reset_delay:1;	/* For entire hierarchy */
  	unsigned int	no_ext_tags:1;		/* No Extended Tags */
--
2.34.1




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux