Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

switchtec: Add Global Fabric Manager Server (GFMS) event

Add a new event type that is newly exposed by recent firmware. The event
will never occur if the firmware is too old. If user space tries to use
this event in an older kernel, it will just get an EINVAL which is
perfectly acceptable in the existing user space code.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>

authored by

Logan Gunthorpe and committed by
Bjorn Helgaas
f0edce7a 1291a0d5

+6 -1
+1
drivers/pci/switch/switchtec.c
··· 707 707 EV_GLB(SWITCHTEC_IOCTL_EVENT_CLI_MRPC_COMP_ASYNC, 708 708 cli_mrpc_comp_async_hdr), 709 709 EV_GLB(SWITCHTEC_IOCTL_EVENT_GPIO_INT, gpio_interrupt_hdr), 710 + EV_GLB(SWITCHTEC_IOCTL_EVENT_GFMS, gfms_event_hdr), 710 711 EV_PAR(SWITCHTEC_IOCTL_EVENT_PART_RESET, part_reset_hdr), 711 712 EV_PAR(SWITCHTEC_IOCTL_EVENT_MRPC_COMP, mrpc_comp_hdr), 712 713 EV_PAR(SWITCHTEC_IOCTL_EVENT_MRPC_COMP_ASYNC, mrpc_comp_async_hdr),
+3
include/linux/switchtec.h
··· 100 100 u32 gpio_interrupt_hdr; 101 101 u32 gpio_interrupt_data; 102 102 u32 reserved16[4]; 103 + u32 gfms_event_hdr; 104 + u32 gfms_event_data; 105 + u32 reserved17[4]; 103 106 } __packed; 104 107 105 108 enum {
+2 -1
include/uapi/linux/switchtec_ioctl.h
··· 88 88 #define SWITCHTEC_IOCTL_EVENT_FORCE_SPEED 26 89 89 #define SWITCHTEC_IOCTL_EVENT_CREDIT_TIMEOUT 27 90 90 #define SWITCHTEC_IOCTL_EVENT_LINK_STATE 28 91 - #define SWITCHTEC_IOCTL_MAX_EVENTS 29 91 + #define SWITCHTEC_IOCTL_EVENT_GFMS 29 92 + #define SWITCHTEC_IOCTL_MAX_EVENTS 30 92 93 93 94 #define SWITCHTEC_IOCTL_EVENT_LOCAL_PART_IDX -1 94 95 #define SWITCHTEC_IOCTL_EVENT_IDX_ALL -2