The Symmetric Communication Interface (SCIF) API was accepted upstream during the v4.2 merge window @ https://lkml.org/lkml/2015/3/30/865. This patch series completes the implementation of the SCIF API and also introduces the MIC Coprocessor State Management (COSM) drivers.
The first patch introduces SCIF poll which allows user and kernel mode clients to block for events on a SCIF endpoint. The next patch introduces support for SCIF kernel mode clients. SCIF clients are probed when new SCIF nodes come online. Similarly the client remove method is called as SCIF nodes go offline. The SCIF client framework makes use of the SCIF peer bus infrastructure submitted previously. The next seven patches are a re-factoring of functionality for boot, shutdown and reset of MIC cards. This functionality, called COSM, was previously present in the MIC host driver but has now been re-factored into a separate driver so that it can be shared across multiple generations of MIC products. The MIC sysfs interface documented earlier has been updated. Further, the COSM host driver communicates with a COSM client on the card using SCIF. COSM is therefore the first kernel mode SCIF client and demonstrates the use of a subset of the SCIF API. Patch 10 converts the iova implementation used by INTEL_IOMMU into a library without any implementation changes so that it can be reused by SCIF to generate registered offsets. Patch 11 onward completes the SCIF implementation by enabling the following SCIF Remote Memory Access (RMA) functionality: a. Memory registration to pin and unpin pages b. Remote Memory mapping for low latency CPU accesses c. Remote DMA (RDMA) for high bandwidth DMA transfers d. Fence mechanisms to synchronize RDMAs Documentation/mic/scif_overview.txt contains more information about SCIF. This patch series is divided into 19 patches as follows: 1) SCIF poll 2) Support for kernel mode SCIF clients 3) MIC COSM bus 4) Coprocessor State Management (COSM) driver 5) COSM SCIF server 6) COSM client driver 7) Remove COSM functionality from the MIC host driver 8) Remove COSM functionality from the MIC card driver 9) Update MIC host daemon with COSM changes 10) Convert iova.c into a library 11) Add support to program MIC x100 status descriptors 12) SCIF RMA header file and IOCTL changes 13) SCIF RMA header file 14) SCIF memory registration and unregistration 15) SCIF RMA list operations 16) SCIF remote memory map/unmap interface 17) SCIF DMA and CPU copy interface 18) SCIF fence 19) SCIF RMA nodeqp and minor miscellaneous changes These patches have also been scanned by Fengguang Wu's 0-day infrastructure and no issues have been reported. The IOVA patch (patch 10) is being sent to char-misc because of the dependency between that patch and SCIF patches 12 through 19. Ashutosh Dixit (9): misc: mic: SCIF poll misc: mic: Add support for kernel mode SCIF clients misc: mic: MIC COSM bus misc: mic: Coprocessor State Management (COSM) driver misc: mic: COSM SCIF server misc: mic: COSM client driver misc: mic: Remove COSM functionality from the MIC host driver misc: mic: Remove COSM functionality from the MIC card driver misc: mic: Update MIC host daemon with COSM changes Harish Chegondi (1): lib: convert iova.c into a library Siva Yerramreddy (1): dma: Add support to program MIC x100 status descriptiors Sudeep Dutt (8): misc: mic: SCIF RMA header file and IOCTL changes misc: mic: SCIF RMA header file misc: mic: SCIF memory registration and unregistration misc: mic: SCIF RMA list operations misc: mic: SCIF remote memory map/unmap interface misc: mic: SCIF DMA and CPU copy interface misc: mic: SCIF fence misc: mic: SCIF RMA nodeqp and minor miscellaneous changes Documentation/ABI/testing/sysfs-class-mic.txt | 29 +- Documentation/mic/mic_overview.txt | 31 +- Documentation/mic/mpssd/mpss | 4 +- Documentation/mic/mpssd/mpssd.c | 362 +++-- Documentation/mic/mpssd/mpssd.h | 1 + drivers/dma/mic_x100_dma.c | 44 +- drivers/iommu/Kconfig | 5 +- drivers/iommu/Makefile | 1 - drivers/misc/mic/Kconfig | 23 +- drivers/misc/mic/Makefile | 2 + drivers/misc/mic/bus/Makefile | 1 + drivers/misc/mic/bus/cosm_bus.c | 141 ++ drivers/misc/mic/bus/cosm_bus.h | 134 ++ drivers/misc/mic/bus/mic_bus.c | 22 +- drivers/misc/mic/bus/scif_bus.c | 7 +- drivers/misc/mic/bus/scif_bus.h | 6 +- drivers/misc/mic/card/mic_device.c | 88 +- drivers/misc/mic/card/mic_x100.c | 2 +- drivers/misc/mic/common/mic_dev.h | 13 + drivers/misc/mic/cosm/Makefile | 10 + drivers/misc/mic/cosm/cosm_debugfs.c | 155 ++ drivers/misc/mic/cosm/cosm_main.c | 388 +++++ drivers/misc/mic/cosm/cosm_main.h | 70 + drivers/misc/mic/cosm/cosm_scif_server.c | 405 +++++ drivers/misc/mic/cosm/cosm_sysfs.c | 461 ++++++ drivers/misc/mic/cosm_client/Makefile | 7 + drivers/misc/mic/cosm_client/cosm_scif_client.c | 275 ++++ drivers/misc/mic/host/Makefile | 1 - drivers/misc/mic/host/mic_boot.c | 317 +--- drivers/misc/mic/host/mic_debugfs.c | 114 +- drivers/misc/mic/host/mic_device.h | 88 +- drivers/misc/mic/host/mic_fops.c | 4 +- drivers/misc/mic/host/mic_intr.c | 46 +- drivers/misc/mic/host/mic_main.c | 223 +-- drivers/misc/mic/host/mic_smpt.c | 30 +- drivers/misc/mic/host/mic_sysfs.c | 459 ------ drivers/misc/mic/host/mic_virtio.c | 17 +- drivers/misc/mic/host/mic_virtio.h | 2 +- drivers/misc/mic/host/mic_x100.c | 46 +- drivers/misc/mic/scif/Makefile | 5 + drivers/misc/mic/scif/scif_api.c | 223 ++- drivers/misc/mic/scif/scif_debugfs.c | 85 +- drivers/misc/mic/scif/scif_dma.c | 1979 +++++++++++++++++++++++ drivers/misc/mic/scif/scif_epd.c | 9 +- drivers/misc/mic/scif/scif_epd.h | 50 + drivers/misc/mic/scif/scif_fd.c | 168 ++ drivers/misc/mic/scif/scif_fence.c | 773 +++++++++ drivers/misc/mic/scif/scif_main.c | 107 +- drivers/misc/mic/scif/scif_main.h | 35 +- drivers/misc/mic/scif/scif_map.h | 25 +- drivers/misc/mic/scif/scif_mmap.c | 711 ++++++++ drivers/misc/mic/scif/scif_nm.c | 20 +- drivers/misc/mic/scif/scif_nodeqp.c | 118 +- drivers/misc/mic/scif/scif_nodeqp.h | 42 +- drivers/misc/mic/scif/scif_peer_bus.c | 179 +- drivers/misc/mic/scif/scif_peer_bus.h | 42 +- drivers/misc/mic/scif/scif_rma.c | 1761 ++++++++++++++++++++ drivers/misc/mic/scif/scif_rma.h | 464 ++++++ drivers/misc/mic/scif/scif_rma_list.c | 291 ++++ drivers/misc/mic/scif/scif_rma_list.h | 57 + include/linux/mic_bus.h | 3 +- include/linux/scif.h | 364 ++++- include/uapi/linux/mic_common.h | 16 +- include/uapi/linux/scif_ioctl.h | 85 + lib/Kconfig | 6 + lib/Makefile | 2 + {drivers/iommu => lib}/iova.c | 9 + 67 files changed, 9985 insertions(+), 1678 deletions(-) create mode 100644 drivers/misc/mic/bus/cosm_bus.c create mode 100644 drivers/misc/mic/bus/cosm_bus.h create mode 100644 drivers/misc/mic/cosm/Makefile create mode 100644 drivers/misc/mic/cosm/cosm_debugfs.c create mode 100644 drivers/misc/mic/cosm/cosm_main.c create mode 100644 drivers/misc/mic/cosm/cosm_main.h create mode 100644 drivers/misc/mic/cosm/cosm_scif_server.c create mode 100644 drivers/misc/mic/cosm/cosm_sysfs.c create mode 100644 drivers/misc/mic/cosm_client/Makefile create mode 100644 drivers/misc/mic/cosm_client/cosm_scif_client.c delete mode 100644 drivers/misc/mic/host/mic_sysfs.c create mode 100644 drivers/misc/mic/scif/scif_dma.c create mode 100644 drivers/misc/mic/scif/scif_fence.c create mode 100644 drivers/misc/mic/scif/scif_mmap.c create mode 100644 drivers/misc/mic/scif/scif_rma.c create mode 100644 drivers/misc/mic/scif/scif_rma.h create mode 100644 drivers/misc/mic/scif/scif_rma_list.c create mode 100644 drivers/misc/mic/scif/scif_rma_list.h rename {drivers/iommu => lib}/iova.c (97%) -- 2.0.0.rc3.2.g998f840 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/