]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
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 9c3ad09d302224e1ecc2dd6aaf4fd8f30e348c3b..218e67428cf9f7962235d34a752d9318f8d1190c 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 e295515bc3f3aa1743f1af5d34f402c24763368d..b4ba3a38f30ffaccd2def4c28bdc1016ddbe1413 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 c912b5a678e4270010359cd13f9fba01744de906..e8db938985ca954fae0a0084e5e52de7214b4cfe 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