Update lpfc to revision 12.2.0.0 This first 22 patches in this patch set are a rework of the I/O submission path in the driver to focus on cpu affinity. This work raises the performance of the lpfc driver from a level of 1-2M iops per port to numbers that have reached over 9M per port. The modifications have been kept in separate function groupings of 1 per patch. Unfortunately, some of the patches are still a bit daunting. I've kept them as small as possible. The changes can be summarized by the following: - Separate buffer lists, each mapping to an exchange, were maintained in both NVME and SCSI. This has all been commonized. - The old lpfc io_channel was stripped out and replaced by hardware queues. These are wq/cq pairs, 1 per protocol per cpu. If there are less than cpu count, they are equitably distributed among sockets/cores. - MSIX vector allocation is attempted per hardware queue. If fewer vectors than hardware queues, they are equitably distributed among sockets/cores. - XRI allocation is divided up amongst the hardware queues. An early patch will commonize but place things on a single list. A later patch will partition the list among the hardware queues and a subsequent patch will finally implement a sharing scheme between cpus. - Interrupt handling and coalescing is closely looked at. The new irq interfaces are used, several items were corrected, and much better behaviors with the hardware were implemented. - The scsi side is closely looked at to tie into SCSI MQ. NVME is already in place. - As everything is commonized and shared, NVME and SCSI are both enabled by default. - Along the way, other code cleanups and lock avoidance mods were made. The latter 2 patches (not including the rev change) are bug fixes for the nvme target module, whose changes are dependent upon the submission path rework. The patches were cut against Martin's 4.21/scsi-queue tree James Smart (25): lpfc: cleanup: remove nrport from nvme command structure lpfc: cleanup: Remove excess check on NVME io submit code path lpfc: Implement common IO buffers between NVME and SCSI lpfc: Remove extra vector and SLI4 queue for Expresslane lpfc: Replace io_channels for nvme and fcp with general hdw_queues per cpu lpfc: Partition XRI buffer list across Hardware Queues lpfc: cleanup: Remove unused FCP_XRI_ABORT_EVENT slowpath event lpfc: cleanup: Remove lock on SCSI io completion lpfc: Adapt cpucheck debugfs logic to Hardware Queues lpfc: Move SCSI and NVME Stats to hardware queue structures lpfc: Convert ring number to hardware queue for nvme wqe posting. lpfc: Synchronize hardware queues with SCSI MQ interface lpfc: Adapt partitioned XRI lists to efficient sharing lpfc: Allow override of hardware queue selection policies lpfc: Fix setting affinity hints to correlate with hardware queues lpfc: Support non-uniform allocation of MSIX vectors to hardware queues lpfc: cleanup: convert eq_delay to usdelay lpfc: Rework EQ/CQ processing to address interrupt coalescing lpfc: Utilize new IRQ API when allocating MSI-X vectors lpfc: Resize cpu maps structures based on possible cpus lpfc: Enable SCSI and NVME fc4s by default lpfc: Fix default driver parameter collision for allowing NPIV support lpfc: Correct upcalling nvmet_fc transport during io done downcall lpfc: Fix nvmet issues when link bounce under IO load lpfc: Update lpfc version to 12.2.0.0 drivers/scsi/lpfc/lpfc.h | 96 +- drivers/scsi/lpfc/lpfc_attr.c | 477 +++++--- drivers/scsi/lpfc/lpfc_crtn.h | 34 +- drivers/scsi/lpfc/lpfc_ct.c | 16 +- drivers/scsi/lpfc/lpfc_debugfs.c | 1047 ++++++++++++---- drivers/scsi/lpfc/lpfc_debugfs.h | 71 +- drivers/scsi/lpfc/lpfc_els.c | 4 +- drivers/scsi/lpfc/lpfc_hbadisc.c | 38 +- drivers/scsi/lpfc/lpfc_hw4.h | 14 +- drivers/scsi/lpfc/lpfc_init.c | 2251 ++++++++++++++++++---------------- drivers/scsi/lpfc/lpfc_nportdisc.c | 8 +- drivers/scsi/lpfc/lpfc_nvme.c | 698 +++-------- drivers/scsi/lpfc/lpfc_nvme.h | 64 +- drivers/scsi/lpfc/lpfc_nvmet.c | 446 ++++--- drivers/scsi/lpfc/lpfc_nvmet.h | 2 + drivers/scsi/lpfc/lpfc_scsi.c | 821 ++++--------- drivers/scsi/lpfc/lpfc_scsi.h | 61 +- drivers/scsi/lpfc/lpfc_sli.c | 2332 +++++++++++++++++++++++------------- drivers/scsi/lpfc/lpfc_sli.h | 86 ++ drivers/scsi/lpfc/lpfc_sli4.h | 302 ++++- drivers/scsi/lpfc/lpfc_version.h | 2 +- drivers/scsi/lpfc/lpfc_vport.c | 25 +- 22 files changed, 5054 insertions(+), 3841 deletions(-) -- 2.13.7