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