This is mostly updates of the usual suspects: lpfc, qla2xxx, bnx2fc, qedf, hpsa, hisi_sas, smartpqi, cxlflash, aacraid, csiostor along with a host of minor and miscellaneous changes. The major problem with this merge is a conflict with the block tree. It's actually only an API rename in block, but we've changed and consolidated the code where the rename occurred in scsi_lib.c. I've attached my proposed resolution below. The patch is available here: git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git scsi-misc The short changelog is: Adrian Hunter (2): scsi: ufshcd-pci: Add Intel CNL support scsi: ufshcd-pci: Fix PM config Arnd Bergmann (2): scsi: qla2xxx: avoid unused-function warning scsi: smartpqi: mark PM functions as __maybe_unused Arvind Yadav (2): scsi: ibmvfc: constify dev_pm_ops structures. scsi: ibmvscsi: constify dev_pm_ops structures. Bart Van Assche (14): scsi: Remove the definition of VLC_SA_RECEIVE_CREDENTIAL scsi: xen-scsifront: Remove code that zeroes driver-private command data scsi: virtio_scsi: Remove code that zeroes driver-private command data scsi: snic: Remove code that zeroes driver-private command data scsi: Make scsi_mq_prep_fn() call scsi_init_command() scsi: Introduce scsi_mq_sgl_size() scsi: Only add commands to the device command list if required by the LLD scsi: Make __scsi_remove_device go straight from BLOCKED to DEL scsi: Introduce scsi_start_queue() scsi: Protect SCSI device state changes with a mutex scsi: Create two versions of scsi_internal_device_unblock() scsi: Split scsi_internal_device_block() scsi: Avoid that scsi_exit_rq() triggers a use-after-free scsi: qla2xxx: Remove an unused structure member Binoy Jayan (2): scsi: esas2r: Replace semaphore fs_api_semaphore with mutex scsi: esas2r: Replace semaphore fm_api_semaphore with mutex Chad Dupuis (22): scsi: bnx2fc: Update version number to 2.11.8. scsi: bnx2fc: Make rport_terminate_io callback a NOOP. scsi: bnx2fc: If IO is still in cleanup then do not return to SCSI layer. scsi: bnx2fc: Adjust bnx2fc_npiv_create_vports for WWNNs from NVRAM that are zero. scsi: bnx2fc: Update copyright for 2017. scsi: bnx2fc: Check for connection offload before sending RRQ. scsi: bnx2fc: Add filters to the non-offload FCoE receive path. scsi: qedf: Update version number to 8.18.22.0. scsi: qedf: Add change_queue_depth member to scsi_host_template(). scsi: qedf: Change cmd_per_lun in scsi_host_template to 32 to increase performance. scsi: qedf: Move some prints to a debug level so they do not print when no debugging is enabled. scsi: qedf: Fixup unnecessary parantheses around test_bit operations. scsi: qedf: Add non-offload receive filters. scsi: qedf: Add bus_reset No-op. scsi: qedf: Use same logic for SCSI host reset and FC lip_reset. scsi: qedf: Set qed logging level to QED_LEVEL_NOTICE. scsi: qedf: Add fka_period SCSI host attribute to show fip keep alive period. scsi: qedf: Check that fcport is offloaded before dereferencing pointers in initiate_abts|cleanup. scsi: qedf: Look at all descriptors when processing a clear virtual link. scsi: qedf: Honor qed_ops->common->set_fp_int() return code. scsi: qedf: Update copyright to 2017. scsi: qedf: Enable basic FDMI information. Christoph Hellwig (5): scsi: default to scsi-mq scsi: sgiwd93: switch to dma_alloc_attrs scsi: 53c700: switch to dma_alloc_attrs scsi: scsi_dh_alua: remove synchronous STPG support scsi: remove various unused blist flags Christophe JAILLET (3): scsi: qedf: Merge a few quoted strings split across lines scsi: qedf: Use 'dma_zalloc_coherent' to reduce code verbosity. scsi: qedf: Fix a return value in case of error in 'qedf_alloc_global_queues' Christos Gkekas (1): scsi: qedi: Remove comparison of u16 idx with zero. Colin Ian King (8): scsi: snic: fix a couple of spelling mistakes/typos scsi: qla2xxx: fix a bunch of typos and spelling mistakes scsi: hpsa: fix spelling mistake: "encrypytion" -> "encryption" scsi: hptiop: make function hptiop_iop_request_callback_itl static scsi: aacraid: fix leak of data from stack back to userspace scsi: qla2xxx: remove redundant null check on tgt scsi: lpfc: make a couple of functions static scsi: lpfc: fix spelling mistake "entrys" -> "entries" Corentin Labbe (2): scsi: qla2xxx: remove writeq/readq function definitions scsi: smartpqi: remove writeq/readq function definitions Dan Carpenter (3): scsi: lpfc: don't double count abort errors scsi: lpfc: spin_lock_irq() is not nestable scsi: bnx2i: missing error code in bnx2i_ep_connect() Don Brace (11): scsi: hpsa: bump driver version scsi: hpsa: remove abort handler scsi: hpsa: send ioaccel requests with 0 length down raid path scsi: hpsa: correct queue depth for externals scsi: hpsa: cleanup reset handler scsi: hpsa: correct resets on retried commands scsi: hpsa: rescan later if reset in progress scsi: hpsa: do not reset enclosures scsi: hpsa: update reset handler scsi: hpsa: do not get enclosure info for external devices scsi: hpsa: update identify physical device structure Duane Grigsby (5): scsi: qla2xxx: Use FC-NVMe FC4 type for FDMI registration scsi: qla2xxx: Send FC4 type NVMe to the management server scsi: qla2xxx: Add FC-NVMe F/W initialization and transport registration scsi: qla2xxx: Add FC-NVMe command handling scsi: qla2xxx: Add FC-NVMe port discovery and PRLI handling Dupuis, Chad (1): scsi: qedf: Check if sense buffer has been allocated during completion Ewan D. Milne (1): scsi: Add STARGET_CREATED_REMOVE state to scsi_target_state Gustavo A. R. Silva (1): scsi: hisi_sas: add null check before indirect pointer dereference Himanshu Madhani (3): qla2xxx: Fix NVMe entry_type for iocb packet on BE system scsi: qla2xxx: Update Driver version to 10.00.00.00-k scsi: qla2xxx: Fix compile warning James Smart (30): scsi: lpfc: fix refcount error on node list scsi: lpfc: Fix nvme io stoppage after link bounce scsi: lpfc: update to revision to 11.4.0.1 scsi: lpfc: Driver responds LS_RJT to Beacon Off ELS - Linux scsi: lpfc: Fix crash in lpfc_sli_ringtxcmpl_put when nvmet gets an abort request. scsi: lpfc: Fix crash doing IO with resets scsi: lpfc: Fix crash after firmware flash when IO is running. scsi: lpfc: Fix SLI3 drivers attempting NVME ELS commands. scsi: lpfc: Break up IO ctx list into a separate get and put list scsi: lpfc: Reduce time spent in IRQ for received NVME commands scsi: lpfc: Vport creation is failing with "Link Down" error scsi: lpfc: Fix nvme_info sysfs output to be consistent scsi: lpfc: Fix system panic when express lane enabled. scsi: lpfc: update to revision to 11.4.0.0 scsi: lpfc: Add auto EQ delay logic scsi: lpfc: Fix defects reported by Coverity Scan scsi: lpfc: Fix vports not logging into target scsi: lpfc: Fix PRLI retry handling when target rejects it. scsi: lpfc: Null pointer dereference when log_verbose is set to 0xffffffff scsi: lpfc: Fix System panic after loading the driver scsi: lpfc: Fix crash on powering off BFS VM with passthrough device scsi: lpfc: Fix return value of board_mode store routine in case of online failure scsi: lpfc: Fix counters so outstandng NVME IO count is accurate scsi: lpfc: Fix Port going offline after multiple resets. scsi: lpfc: Fix nvmet node ref count handling scsi: lpfc: Fix Lun Priority level shown as NA scsi: lpfc: Add changes to assist in NVMET debugging scsi: lpfc: Fix nvme port role handling in sysfs and debugfs handlers. scsi: lpfc: Fix transition nvme-i rport handling to nport only. scsi: lpfc: Add nvme initiator devloss support Jia-Ju Bai (1): scsi: megaraid: Fix a sleep-in-atomic bug Joe Carnuccio (1): scsi: qla2xxx: Retain loop test for fwdump length exceeding buffer length Johan Hovold (1): scsi: sun_esp: fix device reference leaks Johannes Berg (1): scsi: qla2xxx: don't include <generated/utsrelease.h> Johannes Thumshirn (2): scsi: qla2xxx: Protect access to qpair members with qpair->qp_lock scsi: sas: scsi_queue_work can fail, so make callers aware John Garry (6): scsi: hisi_sas: redefine hisi_sas_phy.phy_type as u32 scsi: hisi_sas: add initialisation for v3 pci-based controller scsi: hisi_sas: add skeleton v3 hw driver scsi: hisi_sas: create hisi_sas_get_fw_info() scsi: hisi_sas: add pci_dev in hisi_hba struct scsi: hisi_sas: define hisi_sas_device.device_id as int Kees Cook (1): scsi: csiostor: Avoid content leaks and casts Kefeng Wang (1): scsi: fc: drop residual tsk_mgmt_response and it_nexus_response Kevin Barnett (35): scsi: smartpqi: bump driver version scsi: smartpqi: add module parameters scsi: smartpqi: cleanup list initialization scsi: smartpqi: add raid level show scsi: smartpqi: make ioaccel references consistent scsi: smartpqi: enhance device add and remove messages scsi: smartpqi: update timeout on admin commands scsi: smartpqi: map more raid errors to SCSI errors scsi: smartpqi: cleanup controller branding scsi: smartpqi: update rescan worker scsi: smartpqi: update device offline scsi: smartpqi: correct aio error path scsi: smartpqi: add lockup action scsi: smartpqi: remove qdepth calculations for logical volumes scsi: smartpqi: enhance kdump scsi: smartpqi: change return value for LUN reset operations scsi: smartpqi: add ptraid support scsi: smartpqi: update copyright scsi: smartpqi: cleanup messages scsi: smartpqi: add new PCI device IDs scsi: smartpqi: minor driver cleanup scsi: smartpqi: correct BMIC identify physical drive scsi: smartpqi: eliminate redundant error messages scsi: smartpqi: make pdev pointer names consistent scsi: smartpqi: add pqi_wait_for_completion_io scsi: smartpqi: correct bdma hw bug scsi: smartpqi: add heartbeat check scsi: smartpqi: add suspend and resume support scsi: smartpqi: enhance resets scsi: smartpqi: add supporting events scsi: smartpqi: ensure controller is in SIS mode at init scsi: smartpqi: add in controller checkpoint for controller lockups. scsi: smartpqi: set pci completion timeout scsi: smartpqi: cleanup interrupt management scsi: smartpqi: correct remove scsi devices Kyle Fortin (1): scsi: libiscsi: use kvzalloc for iscsi_pool_init Long Li (1): scsi: storvsc: use default I/O timeout handler for FC devices Martin K. Petersen (1): scsi: sd: Use sysfs_match_string() Matthew R. Ochs (11): scsi: cxlflash: Update debug prints in reset handlers scsi: cxlflash: Update send_tmf() parameters scsi: cxlflash: Avoid double free of character device scsi: cxlflash: Update TMF command processing scsi: cxlflash: Remove zeroing of private command data scsi: cxlflash: Support WS16 unmap scsi: cxlflash: Support AFU debug scsi: cxlflash: Support LUN provisioning scsi: cxlflash: Refactor AFU capability checking scsi: cxlflash: Introduce host ioctl support scsi: cxlflash: Separate AFU internal command handling from AFU sync specifics Maurizio Lombardi (1): scsi: ses: do not add a device to an enclosure if enclosure_add_links() fails. Michael Schmitz (1): scsi: atari_scsi: Use m68k_realnum_memory for FastRAM test Milan P. Gandhi (2): scsi: fcoe: Remove an extra out label in _fcoe_create function scsi: fcoe: Fix few small typos in fcoe.c Paolo Bonzini (1): scsi: virtio_scsi: let host do exception handling Quinn Tran (26): scsi: qla2xxx: Include Exchange offload/Extended Login into FW dump scsi: qla2xxx: Move target stat counters from vha to qpair. scsi: qla2xxx: Remove datasegs_per_cmd and datasegs_per_cont field scsi: qla2xxx: Remove unused tgt_enable_64bit_addr flag scsi: qla2xxx: Add debug logging routine for qpair scsi: qla2xxx: Add function call to qpair for door bell scsi: qla2xxx: use shadow register for ISP27XX scsi: qla2xxx: move fields from qla_hw_data to qla_qpair scsi: qla2xxx: Add fw_started flags to qpair scsi: qla2xxx: Add debug knob for user control workload scsi: qla2xxx: Enable Target Multi Queue scsi: qla2xxx: Preparation for Target MQ. scsi: qla2xxx: Combine Active command arrays. scsi: qla2xxx: Remove extra register read scsi: qla2xxx: Remove unused irq_cmd_count field. scsi: qla2xxx: Accelerate SCSI BUSY status generation in target mode scsi: qla2xxx: Remove redundant wait when target is stopped. scsi: qla2xxx: Add ql2xiniexchg parameter scsi: qla2xxx: Turn on FW option for exchange check scsi: qla2xxx: Cleanup debug message IDs scsi: qla2xxx: Fix name server relogin scsi: qla2xxx: Convert 32-bit LUN usage to 64-bit scsi: tcm_qla2xxx: Do not allow aborted cmd to advance. scsi: qla2xxx: Fix path recovery scsi: qla2xxx: Replace usage of spin_lock with spin_lock_irqsave scsi: qla2xxx: Allow ABTS, PURX, RIDA on ATIOQ for ISP83XX/27XX Raghava Aditya Renukunta (19): scsi: aacraid: Update driver version to 50834 scsi: aacraid: Remove reference to Series-9 scsi: aacraid: Add reset debugging statements scsi: aacraid: Enable ctrl reset for both hba and arc scsi: aacraid: Make sure ioctl returns on controller reset scsi: aacraid: Use correct function to get ctrl health scsi: aacraid: Rework aac_src_restart scsi: aacraid: Rework SOFT reset code scsi: aacraid: Add periodic checks to see IOP reset status scsi: aacraid: Rework IOP reset scsi: aacraid: Using single reset mask for IOP reset scsi: aacraid: Print ctrl status before eh reset scsi: aacraid: Log count info of scsi cmds before reset scsi: aacraid: Change wait time for fib completion scsi: aacraid: Remove reset support from check_health scsi: aacraid: Set correct Queue Depth for HBA1000 RAW disks scsi: aacraid: Added 32 and 64 queue depth for arc natives scsi: aacraid: Fix DMAR issues with iommu=pt scsi: aacraid: Remove __GFP_DMA for raw srb memory Satish Kharat (4): scsi: fnic: changing queue command to return result DID_IMM_RETRY when rport is init scsi: fnic: correct speed display and add support for 25,40 and 100G scsi: fnic: added timestamp reporting in fnic debug stats scsi: fnic: Zero io_cmpl_skip on fw reset completion Sawan Chandak (2): scsi: qla2xxx: Fix mailbox failure while deleting Queue pairs scsi: qla2xxx: Use flag PFLG_DISCONNECTED. Scott Teel (1): scsi: hpsa: separate monitor events from rescan worker Seth Forshee (1): scsi: aacraid: Don't copy uninitialized stack memory to userspace Stephen Hemminger (2): scsi: storvsc: remove unnecessary channel inbound lock scsi: storvsc: use in place iterator function Szymon Mielczarek (1): scsi: ufs: Tidy clocks list head usage Tyrel Datwyler (1): scsi: fix typos and grammar in comments of scsi_transport_fc.c Uma Krishnan (9): scsi: cxlflash: Create character device to provide host management interface scsi: cxlflash: Add scsi command abort handler scsi: cxlflash: Flush pending commands in cleanup path scsi: cxlflash: Track pending scsi commands in each hardware queue scsi: cxlflash: Handle AFU sync failures scsi: cxlflash: Schedule asynchronous reset of the host scsi: cxlflash: Reset hardware queue context via specified register scsi: cxlflash: Update cxlflash_afu_sync() to return errno scsi: cxlflash: Combine the send queue locks Varun Prakash (4): scsi: cxgb4i: assign rxqs in round robin mode scsi: csiostor: update module version scsi: csiostor: add check for supported fw version scsi: csiostor: add support for Chelsio T6 adapters Xiang Chen (17): scsi: hisi_sas: modify internal abort dev flow for v3 hw scsi: hisi_sas: add v3 code to fill some more hw function pointers scsi: hisi_sas: add get_wideport_bitmap_v3_hw() scsi: hisi_sas: add v3 code to send internal abort command scsi: hisi_sas: add v3 code for itct setup and free scsi: hisi_sas: add v3 code to send ATA frame scsi: hisi_sas: add v3 code to send SMP frame scsi: hisi_sas: add v3 code to send SSP frame scsi: hisi_sas: add v3 cq interrupt handler scsi: hisi_sas: add phy up/down/bcast and channel ISR scsi: hisi_sas: add v3 hw PHY init scsi: hisi_sas: add v3 hw init scsi: hisi_sas: relocate get_ncq_tag_v2_hw() scsi: hisi_sas: relocate sata_done_v2_hw() scsi: hisi_sas: relocate get_ata_protocol() scsi: hisi_sas: optimise the usage of hisi_hba.lock scsi: hisi_sas: fix timeout check in hisi_sas_internal_task_abort() Xiaofei Tan (1): scsi: hisi_sas: optimise DMA slot memory Zang Leigang (1): scsi: ufs: flush eh_work when eh_work scheduled. himanshu.madhani@xxxxxxxxxx (1): scsi: qla2xxx: Update driver version to 9.01.00.00-k With the diffstat: Documentation/ioctl/ioctl-number.txt | 2 +- Documentation/powerpc/cxlflash.txt | 76 +- drivers/hv/channel_mgmt.c | 1 - drivers/misc/enclosure.c | 14 +- drivers/scsi/53c700.c | 8 +- drivers/scsi/Kconfig | 11 - drivers/scsi/aacraid/aachba.c | 17 +- drivers/scsi/aacraid/aacraid.h | 22 +- drivers/scsi/aacraid/commctrl.c | 19 +- drivers/scsi/aacraid/comminit.c | 18 +- drivers/scsi/aacraid/commsup.c | 78 +- drivers/scsi/aacraid/linit.c | 232 ++- drivers/scsi/aacraid/src.c | 136 +- drivers/scsi/atari_scsi.c | 2 +- drivers/scsi/bnx2fc/57xx_hsi_bnx2fc.h | 3 +- drivers/scsi/bnx2fc/bnx2fc.h | 5 +- drivers/scsi/bnx2fc/bnx2fc_constants.h | 3 +- drivers/scsi/bnx2fc/bnx2fc_debug.c | 3 +- drivers/scsi/bnx2fc/bnx2fc_debug.h | 3 +- drivers/scsi/bnx2fc/bnx2fc_els.c | 16 +- drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 62 +- drivers/scsi/bnx2fc/bnx2fc_hwi.c | 3 +- drivers/scsi/bnx2fc/bnx2fc_io.c | 14 +- drivers/scsi/bnx2fc/bnx2fc_tgt.c | 3 +- drivers/scsi/bnx2i/bnx2i_iscsi.c | 3 +- drivers/scsi/csiostor/csio_hw.c | 98 +- drivers/scsi/csiostor/csio_hw.h | 1 + drivers/scsi/csiostor/csio_hw_chip.h | 14 + drivers/scsi/csiostor/csio_hw_t5.c | 29 +- drivers/scsi/csiostor/csio_init.c | 6 +- drivers/scsi/csiostor/csio_init.h | 2 +- drivers/scsi/csiostor/csio_lnode.c | 43 +- drivers/scsi/csiostor/csio_wr.c | 4 +- drivers/scsi/cxgbi/cxgb4i/cxgb4i.c | 5 +- drivers/scsi/cxgbi/libcxgbi.h | 1 + drivers/scsi/cxlflash/common.h | 48 +- drivers/scsi/cxlflash/main.c | 1048 ++++++++-- drivers/scsi/cxlflash/main.h | 7 + drivers/scsi/cxlflash/sislite.h | 27 +- drivers/scsi/cxlflash/superpipe.c | 34 +- drivers/scsi/cxlflash/vlun.c | 89 +- drivers/scsi/device_handler/scsi_dh_alua.c | 27 +- drivers/scsi/esas2r/esas2r.h | 4 +- drivers/scsi/esas2r/esas2r_init.c | 4 +- drivers/scsi/esas2r/esas2r_ioctl.c | 10 +- drivers/scsi/fcoe/fcoe.c | 12 +- drivers/scsi/fnic/fnic_debugfs.c | 1 + drivers/scsi/fnic/fnic_fcs.c | 24 + drivers/scsi/fnic/fnic_io.h | 9 + drivers/scsi/fnic/fnic_main.c | 14 +- drivers/scsi/fnic/fnic_scsi.c | 17 +- drivers/scsi/fnic/fnic_stats.h | 7 + drivers/scsi/fnic/fnic_trace.c | 24 + drivers/scsi/hisi_sas/Kconfig | 10 +- drivers/scsi/hisi_sas/Makefile | 1 + drivers/scsi/hisi_sas/hisi_sas.h | 91 +- drivers/scsi/hisi_sas/hisi_sas_main.c | 436 +++-- drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 82 +- drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 216 +-- drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 1846 ++++++++++++++++++ drivers/scsi/hpsa.c | 851 ++------- drivers/scsi/hpsa.h | 4 +- drivers/scsi/hpsa_cmd.h | 20 +- drivers/scsi/hptiop.c | 2 +- drivers/scsi/ibmvscsi/ibmvfc.c | 2 +- drivers/scsi/ibmvscsi/ibmvscsi.c | 2 +- drivers/scsi/libiscsi.c | 4 +- drivers/scsi/libsas/sas_event.c | 36 +- drivers/scsi/libsas/sas_internal.h | 4 +- drivers/scsi/lpfc/lpfc.h | 23 +- drivers/scsi/lpfc/lpfc_attr.c | 101 +- drivers/scsi/lpfc/lpfc_ct.c | 31 +- drivers/scsi/lpfc/lpfc_debugfs.c | 83 +- drivers/scsi/lpfc/lpfc_els.c | 55 +- drivers/scsi/lpfc/lpfc_hbadisc.c | 17 +- drivers/scsi/lpfc/lpfc_hw4.h | 14 + drivers/scsi/lpfc/lpfc_init.c | 163 +- drivers/scsi/lpfc/lpfc_nvme.c | 211 +-- drivers/scsi/lpfc/lpfc_nvme.h | 2 - drivers/scsi/lpfc/lpfc_nvmet.c | 308 ++- drivers/scsi/lpfc/lpfc_nvmet.h | 14 +- drivers/scsi/lpfc/lpfc_scsi.c | 19 +- drivers/scsi/lpfc/lpfc_sli.c | 106 +- drivers/scsi/lpfc/lpfc_sli.h | 1 + drivers/scsi/lpfc/lpfc_sli4.h | 21 +- drivers/scsi/lpfc/lpfc_version.h | 2 +- drivers/scsi/megaraid/megaraid_mm.c | 2 +- drivers/scsi/mpt3sas/mpt3sas_scsih.c | 8 +- drivers/scsi/qedf/drv_fcoe_fw_funcs.c | 2 +- drivers/scsi/qedf/drv_fcoe_fw_funcs.h | 2 +- drivers/scsi/qedf/drv_scsi_fw_funcs.c | 2 +- drivers/scsi/qedf/drv_scsi_fw_funcs.h | 2 +- drivers/scsi/qedf/qedf.h | 2 +- drivers/scsi/qedf/qedf_attr.c | 59 +- drivers/scsi/qedf/qedf_dbg.h | 2 +- drivers/scsi/qedf/qedf_debugfs.c | 2 +- drivers/scsi/qedf/qedf_els.c | 8 +- drivers/scsi/qedf/qedf_fip.c | 22 +- drivers/scsi/qedf/qedf_hsi.h | 2 +- drivers/scsi/qedf/qedf_io.c | 37 +- drivers/scsi/qedf/qedf_main.c | 203 +- drivers/scsi/qedf/qedf_version.h | 8 +- drivers/scsi/qedi/qedi_fw.c | 4 +- drivers/scsi/qla2xxx/Kconfig | 1 + drivers/scsi/qla2xxx/Makefile | 2 +- drivers/scsi/qla2xxx/qla_attr.c | 8 +- drivers/scsi/qla2xxx/qla_bsg.c | 4 +- drivers/scsi/qla2xxx/qla_dbg.c | 161 +- drivers/scsi/qla2xxx/qla_dbg.h | 17 + drivers/scsi/qla2xxx/qla_def.h | 182 +- drivers/scsi/qla2xxx/qla_dfs.c | 145 +- drivers/scsi/qla2xxx/qla_fw.h | 35 +- drivers/scsi/qla2xxx/qla_gbl.h | 40 +- drivers/scsi/qla2xxx/qla_gs.c | 275 ++- drivers/scsi/qla2xxx/qla_init.c | 606 ++++-- drivers/scsi/qla2xxx/qla_inline.h | 60 + drivers/scsi/qla2xxx/qla_iocb.c | 116 +- drivers/scsi/qla2xxx/qla_isr.c | 229 ++- drivers/scsi/qla2xxx/qla_mbx.c | 125 +- drivers/scsi/qla2xxx/qla_mid.c | 44 +- drivers/scsi/qla2xxx/qla_nvme.c | 761 ++++++++ drivers/scsi/qla2xxx/qla_nvme.h | 132 ++ drivers/scsi/qla2xxx/qla_nx.c | 4 +- drivers/scsi/qla2xxx/qla_nx.h | 17 +- drivers/scsi/qla2xxx/qla_nx2.c | 2 +- drivers/scsi/qla2xxx/qla_os.c | 368 +++- drivers/scsi/qla2xxx/qla_target.c | 1438 +++++++------- drivers/scsi/qla2xxx/qla_target.h | 58 +- drivers/scsi/qla2xxx/qla_tmpl.c | 16 +- drivers/scsi/qla2xxx/qla_version.h | 4 +- drivers/scsi/qla2xxx/tcm_qla2xxx.c | 36 +- drivers/scsi/scsi.c | 13 +- drivers/scsi/scsi_error.c | 8 +- drivers/scsi/scsi_lib.c | 306 +-- drivers/scsi/scsi_priv.h | 3 + drivers/scsi/scsi_scan.c | 46 +- drivers/scsi/scsi_sysfs.c | 42 +- drivers/scsi/scsi_transport_fc.c | 12 +- drivers/scsi/scsi_transport_srp.c | 7 +- drivers/scsi/sd.c | 78 +- drivers/scsi/sgiwd93.c | 10 +- drivers/scsi/smartpqi/smartpqi.h | 194 +- drivers/scsi/smartpqi/smartpqi_init.c | 2419 ++++++++++++++++++------ drivers/scsi/smartpqi/smartpqi_sas_transport.c | 2 +- drivers/scsi/smartpqi/smartpqi_sis.c | 100 +- drivers/scsi/smartpqi/smartpqi_sis.h | 7 +- drivers/scsi/snic/snic_isr.c | 4 +- drivers/scsi/snic/snic_scsi.c | 4 +- drivers/scsi/storvsc_drv.c | 56 +- drivers/scsi/sun_esp.c | 9 +- drivers/scsi/ufs/tc-dwc-g210-pci.c | 2 - drivers/scsi/ufs/ufshcd-pci.c | 60 +- drivers/scsi/ufs/ufshcd-pltfrm.c | 2 - drivers/scsi/ufs/ufshcd.c | 15 +- drivers/scsi/virtio_scsi.c | 13 +- drivers/scsi/xen-scsifront.c | 1 - include/linux/hyperv.h | 1 - include/scsi/libsas.h | 6 +- include/scsi/scsi_cmnd.h | 1 + include/scsi/scsi_device.h | 9 +- include/scsi/scsi_devinfo.h | 9 - include/scsi/scsi_proto.h | 3 - include/scsi/scsi_transport_fc.h | 4 - include/uapi/scsi/cxlflash_ioctl.h | 85 +- 164 files changed, 11494 insertions(+), 4431 deletions(-) create mode 100644 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c create mode 100644 drivers/scsi/qla2xxx/qla_nvme.c create mode 100644 drivers/scsi/qla2xxx/qla_nvme.h James --- diff --cc drivers/scsi/scsi_lib.c index 550e29f903b7,41c19c75dab4..f6097b89d5d3 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@@ -1116,20 -1124,35 +1106,49 @@@ err_exit } EXPORT_SYMBOL(scsi_init_io); +/** + * scsi_initialize_rq - initialize struct scsi_cmnd.req + * + * Called from inside blk_get_request(). + */ +void scsi_initialize_rq(struct request *rq) +{ + struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(rq); + + scsi_req_init(&cmd->req); +} +EXPORT_SYMBOL(scsi_initialize_rq); + + /* Add a command to the list used by the aacraid and dpt_i2o drivers */ + void scsi_add_cmd_to_list(struct scsi_cmnd *cmd) + { + struct scsi_device *sdev = cmd->device; + struct Scsi_Host *shost = sdev->host; + unsigned long flags; + + if (shost->use_cmd_list) { + spin_lock_irqsave(&sdev->list_lock, flags); + list_add_tail(&cmd->list, &sdev->cmd_list); + spin_unlock_irqrestore(&sdev->list_lock, flags); + } + } + + /* Remove a command from the list used by the aacraid and dpt_i2o drivers */ + void scsi_del_cmd_from_list(struct scsi_cmnd *cmd) + { + struct scsi_device *sdev = cmd->device; + struct Scsi_Host *shost = sdev->host; + unsigned long flags; + + if (shost->use_cmd_list) { + spin_lock_irqsave(&sdev->list_lock, flags); + BUG_ON(list_empty(&cmd->list)); + list_del_init(&cmd->list); + spin_unlock_irqrestore(&sdev->list_lock, flags); + } + } + +/* Called after a request has been started. */ void scsi_init_command(struct scsi_device *dev, struct scsi_cmnd *cmd) { void *buf = cmd->sense_buffer; @@@ -2974,10 -2989,7 +2989,7 @@@ int scsi_internal_device_block_nowait(s * request queue. */ if (q->mq_ops) { - if (wait) - blk_mq_quiesce_queue(q); - else - blk_mq_quiesce_queue_nowait(q); - blk_mq_stop_hw_queues(q); ++ blk_mq_quiesce_queue_nowait(q); } else { spin_lock_irqsave(q->queue_lock, flags); blk_stop_queue(q); @@@ -2988,31 -2998,77 +2998,77 @@@ return 0; } - EXPORT_SYMBOL_GPL(scsi_internal_device_block); - + EXPORT_SYMBOL_GPL(scsi_internal_device_block_nowait); + /** - * scsi_internal_device_unblock - resume a device after a block request - * @sdev: device to resume - * @new_state: state to set devices to after unblocking + * scsi_internal_device_block - try to transition to the SDEV_BLOCK state + * @sdev: device to block + * + * Pause SCSI command processing on the specified device and wait until all + * ongoing scsi_request_fn() / scsi_queue_rq() calls have finished. May sleep. * - * Called by scsi lld's or the midlayer to restart the device queue - * for the previously suspended scsi device. Called from interrupt or - * normal process context. + * Returns zero if successful or a negative error code upon failure. * - * Returns zero if successful or error if not. + * Note: + * This routine transitions the device to the SDEV_BLOCK state (which must be + * a legal transition). When the device is in this state, command processing + * is paused until the device leaves the SDEV_BLOCK state. See also + * scsi_internal_device_unblock(). * - * Notes: - * This routine transitions the device to the SDEV_RUNNING state - * or to one of the offline states (which must be a legal transition) - * allowing the midlayer to goose the queue for this device. + * To do: avoid that scsi_send_eh_cmnd() calls queuecommand() after + * scsi_internal_device_block() has blocked a SCSI device and also + * remove the rport mutex lock and unlock calls from srp_queuecommand(). */ - int - scsi_internal_device_unblock(struct scsi_device *sdev, - enum scsi_device_state new_state) + static int scsi_internal_device_block(struct scsi_device *sdev) { - struct request_queue *q = sdev->request_queue; + struct request_queue *q = sdev->request_queue; + int err; + + mutex_lock(&sdev->state_mutex); + err = scsi_internal_device_block_nowait(sdev); + if (err == 0) { + if (q->mq_ops) + blk_mq_quiesce_queue(q); + else + scsi_wait_for_queuecommand(sdev); + } + mutex_unlock(&sdev->state_mutex); + + return err; + } + + void scsi_start_queue(struct scsi_device *sdev) + { + struct request_queue *q = sdev->request_queue; unsigned long flags; + if (q->mq_ops) { - blk_mq_start_stopped_hw_queues(q, false); ++ blk_mq_unquiesce_queue(q); + } else { + spin_lock_irqsave(q->queue_lock, flags); + blk_start_queue(q); + spin_unlock_irqrestore(q->queue_lock, flags); + } + } + + /** + * scsi_internal_device_unblock_nowait - resume a device after a block request + * @sdev: device to resume + * @new_state: state to set the device to after unblocking + * + * Restart the device queue for a previously suspended SCSI device. Does not + * sleep. + * + * Returns zero if successful or a negative error code upon failure. + * + * Notes: + * This routine transitions the device to the SDEV_RUNNING state or to one of + * the offline states (which must be a legal transition) allowing the midlayer + * to goose the queue for this device. + */ + int scsi_internal_device_unblock_nowait(struct scsi_device *sdev, + enum scsi_device_state new_state) + { /* * Try to transition the scsi device to SDEV_RUNNING or one of the * offlined states and goose the device queue if successful.