v4->v5: - Fix error reported by kernel test robot in Patch #6. v3->v4 - Addressed comments from Christoph Hellwig and Bart Van Assche to make MPI headers compliant with Linux kernel coding guidelines. - Added Reviewed-by tag from Hannes and Himanshu to appropriate patches. - Use correct return type in scsi error handler (Patch #6) - comment provided by Hannes. - Fix array overflow while printing ioc info(Patch #11) - comment provided by Hannes. - Remove redundant kfree of dev_rmhs_cmds (Patch #13) - comment provided by Tomas. - Replaced few strcpy with strncpy to avoid string overflow. - Updated Copyright. v2->v3 - further removed unused pointer typedef from mpi30_type.h - Add Tomas Henzl's reviewed-tag to appropriate patches - Fix added which is Reported-by kernel test robot - Removed .eh_abort_handler suggested by Hannes. v1->v2 - removed undefined entries from mpi30_type.h - removed DRV_CMD_CALLBACK typedef - Use IRQF_SHARED instead of IRQF_ONESHOT - Use READ_ONCE, WRITE_ONCE while accessing operational request queue consumer index - removed in_interrup() - remove pr_cont. - move some code from error handling to device handling patch. - used direct values instead of macro MPI3_SECTOR_SIZE_XYZ - Add Hannes's reviewed-tag to appropriate patches - Add Reported-by kernel test robot to appropriate patches. This patch series covers logical patches of the new device driver for the MPI3MR high performance storage I/O & RAID controllers (Avenger series). The mpi3mr has true multiple h/w queue interfacing like nvme. See more info - https://www.spinics.net/lists/linux-scsi/msg147868.html The controllers managed by the mpi3mr driver are capable of reaching a very high performance numbers compared to existing controller due to the new hardware architectures. This Driver is tested with the internal versions of the MPI3MR I/O & RAID controllers. Patches are logical split mainly for better code review. Full patch set is required for functional stability of this new driver. You can find the source at - https://github.com/kadesai16/mpi3mr Kashyap Desai (24): mpi3mr: add mpi30 Rev-R headers and Kconfig mpi3mr: base driver code mpi3mr: create operational request and reply queue pair mpi3mr: add support of queue command processing mpi3mr: add support of internal watchdog thread mpi3mr: add support of event handling part-1 mpi3mr: add support of event handling pcie devices part-2 mpi3mr: add support of event handling part-3 mpi3mr: add support for recovering controller mpi3mr: add support of timestamp sync with firmware mpi3mr: print ioc info for debugging mpi3mr: add bios_param shost template hook mpi3mr: implement scsi error handler hooks mpi3mr: add change queue depth support mpi3mr: allow certain commands during pci-remove hook mpi3mr: hardware workaround for UNMAP commands to nvme drives mpi3mr: add support of threaded isr mpi3mr: add complete support of soft reset mpi3mr: print pending host ios for debug mpi3mr: wait for pending IO completions upon detection of VD IO timeout mpi3mr: add support of PM suspend and resume mpi3mr: add support of DSN secure fw check mpi3mr: add eedp dif dix support mpi3mr: add event handling debug prints drivers/scsi/Kconfig | 1 + drivers/scsi/Makefile | 1 + drivers/scsi/mpi3mr/Kconfig | 7 + drivers/scsi/mpi3mr/Makefile | 4 + drivers/scsi/mpi3mr/mpi/mpi30_api.h | 20 + drivers/scsi/mpi3mr/mpi/mpi30_cnfg.h | 1884 ++++++++++ drivers/scsi/mpi3mr/mpi/mpi30_image.h | 220 ++ drivers/scsi/mpi3mr/mpi/mpi30_init.h | 163 + drivers/scsi/mpi3mr/mpi/mpi30_ioc.h | 1009 +++++ drivers/scsi/mpi3mr/mpi/mpi30_sas.h | 37 + drivers/scsi/mpi3mr/mpi/mpi30_transport.h | 486 +++ drivers/scsi/mpi3mr/mpi3mr.h | 895 +++++ drivers/scsi/mpi3mr/mpi3mr_debug.h | 60 + drivers/scsi/mpi3mr/mpi3mr_fw.c | 3956 ++++++++++++++++++++ drivers/scsi/mpi3mr/mpi3mr_os.c | 4063 +++++++++++++++++++++ 15 files changed, 12806 insertions(+) create mode 100644 drivers/scsi/mpi3mr/Kconfig create mode 100644 drivers/scsi/mpi3mr/Makefile create mode 100644 drivers/scsi/mpi3mr/mpi/mpi30_api.h create mode 100644 drivers/scsi/mpi3mr/mpi/mpi30_cnfg.h create mode 100644 drivers/scsi/mpi3mr/mpi/mpi30_image.h create mode 100644 drivers/scsi/mpi3mr/mpi/mpi30_init.h create mode 100644 drivers/scsi/mpi3mr/mpi/mpi30_ioc.h create mode 100644 drivers/scsi/mpi3mr/mpi/mpi30_sas.h create mode 100644 drivers/scsi/mpi3mr/mpi/mpi30_transport.h create mode 100644 drivers/scsi/mpi3mr/mpi3mr.h create mode 100644 drivers/scsi/mpi3mr/mpi3mr_debug.h create mode 100644 drivers/scsi/mpi3mr/mpi3mr_fw.c create mode 100644 drivers/scsi/mpi3mr/mpi3mr_os.c -- 2.18.1