[GIT PULL] first round of SCSI updates for the 4.12+ merge window

From: James Bottomley
Date: Tue Jul 04 2017 - 11:24:14 EST


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.