Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 30 Jun 2023 18:57:07 +0000 (11:57 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 30 Jun 2023 18:57:07 +0000 (11:57 -0700)
Pull SCSI updates from James Bottomley:
 "Updates to the usual drivers (ufs, pm80xx, libata-scsi, smartpqi,
  lpfc, qla2xxx).

  We have a couple of major core changes impacting other systems:

   - Command Duration Limits, which spills into block and ATA

   - block level Persistent Reservation Operations, which touches block,
     nvme, target and dm

  Both of these are added with merge commits containing a cover letter
  explaining what's going on"

* tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (187 commits)
  scsi: core: Improve warning message in scsi_device_block()
  scsi: core: Replace scsi_target_block() with scsi_block_targets()
  scsi: core: Don't wait for quiesce in scsi_device_block()
  scsi: core: Don't wait for quiesce in scsi_stop_queue()
  scsi: core: Merge scsi_internal_device_block() and device_block()
  scsi: sg: Increase number of devices
  scsi: bsg: Increase number of devices
  scsi: qla2xxx: Remove unused nvme_ls_waitq wait queue
  scsi: ufs: ufs-pci: Add support for Intel Arrow Lake
  scsi: sd: sd_zbc: Use PAGE_SECTORS_SHIFT
  scsi: ufs: wb: Add explicit flush_threshold sysfs attribute
  scsi: ufs: ufs-qcom: Switch to the new ICE API
  scsi: ufs: dt-bindings: qcom: Add ICE phandle
  scsi: ufs: ufs-mediatek: Set UFSHCD_QUIRK_MCQ_BROKEN_RTC quirk
  scsi: ufs: ufs-mediatek: Set UFSHCD_QUIRK_MCQ_BROKEN_INTR quirk
  scsi: ufs: core: Add host quirk UFSHCD_QUIRK_MCQ_BROKEN_RTC
  scsi: ufs: core: Add host quirk UFSHCD_QUIRK_MCQ_BROKEN_INTR
  scsi: ufs: core: Remove dedicated hwq for dev command
  scsi: ufs: core: mcq: Fix the incorrect OCS value for the device command
  scsi: ufs: dt-bindings: samsung,exynos: Drop unneeded quotes
  ...

29 files changed:
1  2 
MAINTAINERS
block/bfq-iosched.c
block/blk-core.c
block/bsg.c
drivers/ata/libata-core.c
drivers/ata/libata-eh.c
drivers/ata/libata-sata.c
drivers/ata/libata-scsi.c
drivers/md/dm.c
drivers/nvme/host/Makefile
drivers/nvme/host/core.c
drivers/nvme/host/nvme.h
drivers/s390/block/dasd.c
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_init.c
drivers/scsi/qla2xxx/qla_inline.h
drivers/scsi/qla2xxx/qla_isr.c
drivers/scsi/scsi_lib.c
drivers/scsi/sd.c
drivers/scsi/sg.c
drivers/scsi/smartpqi/smartpqi_init.c
drivers/scsi/sr.c
drivers/target/iscsi/iscsi_target_util.c
drivers/target/target_core_iblock.c
drivers/ufs/core/ufs-mcq.c
drivers/ufs/core/ufshcd.c
include/linux/blk_types.h
include/linux/libata.h
include/ufs/ufshcd.h

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
diff --cc block/bsg.c
@@@ -36,10 -36,10 +36,10 @@@ static inline struct bsg_device *to_bsg
  }
  
  #define BSG_DEFAULT_CMDS      64
- #define BSG_MAX_DEVS          32768
+ #define BSG_MAX_DEVS          (1 << MINORBITS)
  
  static DEFINE_IDA(bsg_minor_ida);
 -static struct class *bsg_class;
 +static const struct class bsg_class;
  static int bsg_major;
  
  static unsigned int bsg_timeout(struct bsg_device *bd, struct sg_io_v4 *hdr)
Simple merge
@@@ -3811,19 -3922,13 +3920,20 @@@ void ata_eh_finish(struct ata_port *ap
                         * generate sense data in this function,
                         * considering both err_mask and tf.
                         */
 -                      if (qc->flags & ATA_QCFLAG_RETRY)
 +                      if (qc->flags & ATA_QCFLAG_RETRY) {
 +                              /*
 +                               * Since qc->err_mask is set, ata_eh_qc_retry()
 +                               * will not increment scmd->allowed, so upper
 +                               * layer will only retry the command if it has
 +                               * not already been retried too many times.
 +                               */
                                ata_eh_qc_retry(qc);
 -                      else
 +                      } else {
                                ata_eh_qc_complete(qc);
 +                      }
                } else {
-                       if (qc->flags & ATA_QCFLAG_SENSE_VALID) {
+                       if (qc->flags & ATA_QCFLAG_SENSE_VALID ||
+                           qc->flags & ATA_QCFLAG_EH_SUCCESS_CMD) {
                                ata_eh_qc_complete(qc);
                        } else {
                                /* feed zero TF to sense generation */
Simple merge
Simple merge
diff --cc drivers/md/dm.c
Simple merge
@@@ -10,7 -10,7 +10,7 @@@ obj-$(CONFIG_NVME_FC)                 += nvme-fc.
  obj-$(CONFIG_NVME_TCP)                        += nvme-tcp.o
  obj-$(CONFIG_NVME_APPLE)              += nvme-apple.o
  
- nvme-core-y                           += core.o ioctl.o sysfs.o
 -nvme-core-y                           += core.o ioctl.o pr.o
++nvme-core-y                           += core.o ioctl.o sysfs.o pr.o
  nvme-core-$(CONFIG_NVME_VERBOSE_ERRORS)       += constants.o
  nvme-core-$(CONFIG_TRACING)           += trace.o
  nvme-core-$(CONFIG_NVME_MULTIPATH)    += multipath.o
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -150,11 -154,9 +154,10 @@@ static int ufshcd_mcq_config_nr_queues(
        u32 hba_maxq, rem, tot_queues;
        struct Scsi_Host *host = hba->host;
  
 -      hba_maxq = FIELD_GET(MAX_QUEUE_SUP, hba->mcq_capabilities);
 +      /* maxq is 0 based value */
 +      hba_maxq = FIELD_GET(MAX_QUEUE_SUP, hba->mcq_capabilities) + 1;
  
-       tot_queues = UFS_MCQ_NUM_DEV_CMD_QUEUES + read_queues + poll_queues +
-                       rw_queues;
+       tot_queues = read_queues + poll_queues + rw_queues;
  
        if (hba_maxq < tot_queues) {
                dev_err(hba->dev, "Total queues (%d) exceeds HC capacity (%d)\n",
Simple merge
Simple merge
Simple merge
Simple merge