PCI/switchtec: Add support for Intercomm Notify and Upstream Error Containment
authorLogan Gunthorpe <logang@deltatee.com>
Mon, 6 Jan 2020 19:03:28 +0000 (12:03 -0700)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 15 Jan 2020 17:00:27 +0000 (11:00 -0600)
Add support for the Inter Fabric Manager Communication (Intercomm) Notify
event in PAX variants of Switchtec hardware and the Upstream Error
Containment port in the MR1 release of Gen3 firmware.

Link: https://lore.kernel.org/r/20200106190337.2428-4-logang@deltatee.com
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/switch/switchtec.c
include/linux/switchtec.h
include/uapi/linux/switchtec_ioctl.h

index 9c3ad09..218e674 100644 (file)
@@ -751,10 +751,13 @@ static const struct event_reg {
        EV_PAR(SWITCHTEC_IOCTL_EVENT_MRPC_COMP, mrpc_comp_hdr),
        EV_PAR(SWITCHTEC_IOCTL_EVENT_MRPC_COMP_ASYNC, mrpc_comp_async_hdr),
        EV_PAR(SWITCHTEC_IOCTL_EVENT_DYN_PART_BIND_COMP, dyn_binding_hdr),
+       EV_PAR(SWITCHTEC_IOCTL_EVENT_INTERCOMM_REQ_NOTIFY,
+              intercomm_notify_hdr),
        EV_PFF(SWITCHTEC_IOCTL_EVENT_AER_IN_P2P, aer_in_p2p_hdr),
        EV_PFF(SWITCHTEC_IOCTL_EVENT_AER_IN_VEP, aer_in_vep_hdr),
        EV_PFF(SWITCHTEC_IOCTL_EVENT_DPC, dpc_hdr),
        EV_PFF(SWITCHTEC_IOCTL_EVENT_CTS, cts_hdr),
+       EV_PFF(SWITCHTEC_IOCTL_EVENT_UEC, uec_hdr),
        EV_PFF(SWITCHTEC_IOCTL_EVENT_HOTPLUG, hotplug_hdr),
        EV_PFF(SWITCHTEC_IOCTL_EVENT_IER, ier_hdr),
        EV_PFF(SWITCHTEC_IOCTL_EVENT_THRESH, threshold_hdr),
index e295515..b4ba3a3 100644 (file)
@@ -196,7 +196,9 @@ struct part_cfg_regs {
        u32 mrpc_comp_async_data[5];
        u32 dyn_binding_hdr;
        u32 dyn_binding_data[5];
-       u32 reserved4[159];
+       u32 intercomm_notify_hdr;
+       u32 intercomm_notify_data[5];
+       u32 reserved4[153];
 } __packed;
 
 enum {
@@ -320,7 +322,8 @@ struct pff_csr_regs {
        u32 dpc_data[5];
        u32 cts_hdr;
        u32 cts_data[5];
-       u32 reserved3[6];
+       u32 uec_hdr;
+       u32 uec_data[5];
        u32 hotplug_hdr;
        u32 hotplug_data[5];
        u32 ier_hdr;
index c912b5a..e8db938 100644 (file)
@@ -98,7 +98,9 @@ struct switchtec_ioctl_event_summary {
 #define SWITCHTEC_IOCTL_EVENT_CREDIT_TIMEOUT           27
 #define SWITCHTEC_IOCTL_EVENT_LINK_STATE               28
 #define SWITCHTEC_IOCTL_EVENT_GFMS                     29
-#define SWITCHTEC_IOCTL_MAX_EVENTS                     30
+#define SWITCHTEC_IOCTL_EVENT_INTERCOMM_REQ_NOTIFY     30
+#define SWITCHTEC_IOCTL_EVENT_UEC                      31
+#define SWITCHTEC_IOCTL_MAX_EVENTS                     32
 
 #define SWITCHTEC_IOCTL_EVENT_LOCAL_PART_IDX -1
 #define SWITCHTEC_IOCTL_EVENT_IDX_ALL -2