1. 15 Mar, 2019 1 commit
  2. 14 Mar, 2019 2 commits
  3. 08 Mar, 2019 1 commit
  4. 07 Mar, 2019 18 commits
  5. 06 Mar, 2019 2 commits
    • Felipe Franciosi's avatar
      scsi: virtio_scsi: don't send sc payload with tmfs · 3722e6a5
      Felipe Franciosi authored
      The virtio scsi spec defines struct virtio_scsi_ctrl_tmf as a set of
      device-readable records and a single device-writable response entry:
      
          struct virtio_scsi_ctrl_tmf
          {
              // Device-readable part
              le32 type;
              le32 subtype;
              u8 lun[8];
              le64 id;
              // Device-writable part
              u8 response;
          }
      
      The above should be organised as two descriptor entries (or potentially
      more if using VIRTIO_F_ANY_LAYOUT), but without any extra data after "le64
      id" or after "u8 response".
      
      The Linux driver doesn't respect that, with virtscsi_abort() and
      virtscsi_device_reset() setting cmd->sc before calling virtscsi_tmf().  It
      results in the original scsi command payload (or writable buffers) added to
      the tmf.
      
      This fixes the problem by leaving cmd->sc zeroed out, which makes
      virtscsi_kick_cmd() add the tmf to the control vq without any payload.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarFelipe Franciosi <felipe@nutanix.com>
      Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      3722e6a5
    • Erwan Velu's avatar
      scsi: smartpqi: Reporting 'logical unit failure' · 441b7195
      Erwan Velu authored
      When the HARDWARE_ERROR/0x3e/0x1 case is triggered, the logical volume
      is offlined.  When reading the kernel log, the reason why the device
      got offlined isn't reported to the user.  This situation makes it
      difficult for admins to root cause.
      
      Log a message when this condition occurs.
      
      [mkp: tweaked commit message]
      Signed-off-by: default avatarErwan Velu <e.velu@criteo.com>
      Acked-by: default avatarDon Brace <don.brace@microsemi.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      441b7195
  6. 27 Feb, 2019 15 commits
    • Varun Prakash's avatar
      scsi: cxgb4i: validate tcp sequence number only if chip version <= T5 · 26af1a36
      Varun Prakash authored
      T6 adapters generates DDP completion message on receiving all iSCSI pdus in
      a sequence. Because of this, driver can not keep track of tcp sequence
      number for T6 adapters.
      Signed-off-by: default avatarVarun Prakash <varun@chelsio.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      26af1a36
    • Varun Prakash's avatar
      scsi: cxgb4i: get pf number from lldi->pf · b184487c
      Varun Prakash authored
      Instead of using viid to get pf number, directly get pf number from
      lldi->pf.
      Signed-off-by: default avatarVarun Prakash <varun@chelsio.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      b184487c
    • Benjamin Block's avatar
      scsi: core: replace GFP_ATOMIC with GFP_KERNEL in scsi_scan.c · 1749ef00
      Benjamin Block authored
      We had a test-report where, under memory pressure, adding LUNs to the
      systems would fail (the tests add LUNs strictly in sequence):
      
      [ 5525.853432] scsi 0:0:1:1088045124: Direct-Access     IBM      2107900          .148 PQ: 0 ANSI: 5
      [ 5525.853826] scsi 0:0:1:1088045124: alua: supports implicit TPGS
      [ 5525.853830] scsi 0:0:1:1088045124: alua: device naa.6005076303ffd32700000000000044da port group 0 rel port 43
      [ 5525.853931] sd 0:0:1:1088045124: Attached scsi generic sg10 type 0
      [ 5525.854075] sd 0:0:1:1088045124: [sdk] Disabling DIF Type 1 protection
      [ 5525.855495] sd 0:0:1:1088045124: [sdk] 2097152 512-byte logical blocks: (1.07 GB/1.00 GiB)
      [ 5525.855606] sd 0:0:1:1088045124: [sdk] Write Protect is off
      [ 5525.855609] sd 0:0:1:1088045124: [sdk] Mode Sense: ed 00 00 08
      [ 5525.855795] sd 0:0:1:1088045124: [sdk] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
      [ 5525.857838]  sdk: sdk1
      [ 5525.859468] sd 0:0:1:1088045124: [sdk] Attached SCSI disk
      [ 5525.865073] sd 0:0:1:1088045124: alua: transition timeout set to 60 seconds
      [ 5525.865078] sd 0:0:1:1088045124: alua: port group 00 state A preferred supports tolusnA
      [ 5526.015070] sd 0:0:1:1088045124: alua: port group 00 state A preferred supports tolusnA
      [ 5526.015213] sd 0:0:1:1088045124: alua: port group 00 state A preferred supports tolusnA
      [ 5526.587439] scsi_alloc_sdev: Allocation failure during SCSI scanning, some SCSI devices might not be configured
      [ 5526.588562] scsi_alloc_sdev: Allocation failure during SCSI scanning, some SCSI devices might not be configured
      
      Looking at the code of scsi_alloc_sdev(), and all the calling contexts,
      there seems to be no reason to use GFP_ATMOIC here. All the different
      call-contexts use a mutex at some point, and nothing in between that
      requires no sleeping, as far as I could see. Additionally, the code that
      later allocates the block queue for the device (scsi_mq_alloc_queue())
      already uses GFP_KERNEL.
      
      There are similar allocations in two other functions:
      scsi_probe_and_add_lun(), and scsi_add_lun(),; that can also be done with
      GFP_KERNEL.
      
      Here is the contexts for the three functions so far:
      
          scsi_alloc_sdev()
              scsi_probe_and_add_lun()
                  scsi_sequential_lun_scan()
                      __scsi_scan_target()
                          scsi_scan_target()
                              mutex_lock()
                          scsi_scan_channel()
                              scsi_scan_host_selected()
                                  mutex_lock()
                  scsi_report_lun_scan()
                      __scsi_scan_target()
          	            ...
                  __scsi_add_device()
                      mutex_lock()
                  __scsi_scan_target()
                      ...
              scsi_report_lun_scan()
                  ...
              scsi_get_host_dev()
                  mutex_lock()
      
          scsi_probe_and_add_lun()
              ...
      
          scsi_add_lun()
              scsi_probe_and_add_lun()
                  ...
      
      So replace all these, and give them a bit of a better chance to succeed,
      with more chances of reclaim.
      Signed-off-by: default avatarBenjamin Block <bblock@linux.ibm.com>
      Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      1749ef00
    • Gustavo A. R. Silva's avatar
      scsi: mpt3sas: Add missing breaks in switch statements · 7850b51b
      Gustavo A. R. Silva authored
      Fix the following warnings by adding the proper missing breaks:
      
      drivers/scsi/mpt3sas/mpt3sas_base.c: In function  _base_display_OEMs_branding :
      drivers/scsi/mpt3sas/mpt3sas_base.c:3548:4: warning: this statement may fall through [-Wimplicit-fallthrough=]
          switch (ioc->pdev->subsystem_device) {
          ^~~~~~
      drivers/scsi/mpt3sas/mpt3sas_base.c:3566:3: note: here
         case MPI2_MFGPAGE_DEVID_SAS2308_2:
         ^~~~
      drivers/scsi/mpt3sas/mpt3sas_base.c:3567:4: warning: this statement may fall through [-Wimplicit-fallthrough=]
          switch (ioc->pdev->subsystem_device) {
          ^~~~~~
      drivers/scsi/mpt3sas/mpt3sas_base.c:3601:3: note: here
         case MPI25_MFGPAGE_DEVID_SAS3008:
         ^~~~
      drivers/scsi/mpt3sas/mpt3sas_base.c:3735:4: warning: this statement may fall through [-Wimplicit-fallthrough=]
          switch (ioc->pdev->subsystem_device) {
          ^~~~~~
      drivers/scsi/mpt3sas/mpt3sas_base.c:3745:3: note: here
         case MPI2_MFGPAGE_DEVID_SAS2308_2:
         ^~~~
      drivers/scsi/mpt3sas/mpt3sas_base.c:3746:4: warning: this statement may fall through [-Wimplicit-fallthrough=]
          switch (ioc->pdev->subsystem_device) {
          ^~~~~~
      drivers/scsi/mpt3sas/mpt3sas_base.c:3768:3: note: here
         default:
         ^~~~~~~
      
      Warning level 3 was used: -Wimplicit-fallthrough=3
      
      This patch is part of the ongoing efforts to enable
      -Wimplicit-fallthrough.
      Signed-off-by: default avatarGustavo A. R. Silva <gustavo@embeddedor.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      7850b51b
    • Gustavo A. R. Silva's avatar
      scsi: aacraid: Fix missing break in switch statement · 5e420fe6
      Gustavo A. R. Silva authored
      Add missing break statement and fix identation issue.
      
      This bug was found thanks to the ongoing efforts to enable
      -Wimplicit-fallthrough.
      
      Fixes: 9cb62fa2 ("aacraid: Log firmware AIF messages")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarGustavo A. R. Silva <gustavo@embeddedor.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      5e420fe6
    • Hannes Reinecke's avatar
      scsi: kill command serial number · b9cef509
      Hannes Reinecke authored
      No users left, kill it.
      Signed-off-by: default avatarHannes Reinecke <hare@suse.com>
      Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      b9cef509
    • Hannes Reinecke's avatar
      scsi: csiostor: drop serial_number usage · f50e7605
      Hannes Reinecke authored
      Use request tag instead of the serial number when printing out logging
      messages.
      Signed-off-by: default avatarHannes Reinecke <hare@suse.com>
      Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      f50e7605
    • Hannes Reinecke's avatar
      scsi: mvumi: use request tag instead of serial_number · 7df158ce
      Hannes Reinecke authored
      Use the request tag for logging instead of the scsi command serial number.
      Signed-off-by: default avatarHannes Reinecke <hare@suse.com>
      Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      7df158ce
    • Hannes Reinecke's avatar
      scsi: dpt_i2o: remove serial number usage · 470d19e2
      Hannes Reinecke authored
      Drop references to scsi_cmnd->serial_number.
      Signed-off-by: default avatarHannes Reinecke <hare@suse.com>
      Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      470d19e2
    • Iustin Pop's avatar
      scsi: st: osst: Remove negative constant left-shifts · 6f46f718
      Iustin Pop authored
      Negative constant left-shift is undefined behaviour in the C standard, and
      as such newer versions of clang (at least) warn against it. GCC supports it
      for a long time, but it would be better to remove it and rely on defined
      behaviour.
      
      My understanding is "~(-1 << N)" in 2's complement is intended to generate
      a bit pattern of zeroes ending with N '1' bits. The same can be achieved by
      "(1 << N) - 1" in a well-defined way, so switch to it to remove the
      warning.
      
      Tested: building a kernel with generic SCSI tape, and checking basic
      operations (mt status, mt eject) on a real LTO unit. Cannot test the osst
      driver.
      Signed-off-by: default avatarIustin Pop <iustin@k1024.org>
      Reviewed-by: default avatarLee Duncan <lduncan@suse.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      6f46f718
    • Avri Altman's avatar
      scsi: ufs-bsg: Allow reading descriptors · 5c17f87a
      Avri Altman authored
      Add this functionality, placing the descriptor being read in the actual
      data buffer in the bio.
      
      That is, for both read and write descriptors query upiu, we are using the
      job's request_payload.  This in turn, is mapped back in user land to the
      applicable sg_io_v4 xferp: dout_xferp for write descriptor, and din_xferp
      for read descriptor.
      Signed-off-by: default avatarAvri Altman <avri.altman@wdc.com>
      Reviewed-by: default avatarEvan Green <evgreen@chromium.org>
      Reviewed-by: default avatarBean Huo <beanhuo@micron.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      5c17f87a
    • Avri Altman's avatar
      scsi: ufs: Allow reading descriptor via raw upiu · 4bbbe242
      Avri Altman authored
      Allow to read descriptors via raw upiu. This in fact was forbidden just as
      a precaution, as ufs-bsg actually enforces which functionality is
      supported.
      Signed-off-by: default avatarAvri Altman <avri.altman@wdc.com>
      Reviewed-by: default avatarEvan Green <evgreen@chromium.org>
      Reviewed-by: default avatarBean Huo <beanhuo@micron.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      4bbbe242
    • Avri Altman's avatar
      scsi: ufs-bsg: Change the calling convention for write descriptor · 4eaa329e
      Avri Altman authored
      When we had a write descriptor query upiu, we appended the descriptor right
      after the bsg request.  This was fine as the bsg driver allows to allocate
      whatever buffer we needed in its job request.
      
      Still, the proper way to deliver payload, however small (we only write
      config descriptors of 144 bytes), is by using the job request payload data
      buffer.
      
      So change this ABI now, while ufs-bsg is still new, and nobody is actually
      using it.
      Signed-off-by: default avatarAvri Altman <avri.altman@wdc.com>
      Reviewed-by: default avatarEvan Green <evgreen@chromium.org>
      Reviewed-by: default avatarBean Huo <beanhuo@micron.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      4eaa329e
    • Marc Gonzalez's avatar
      scsi: ufs: Remove unused device quirks · e9cb9655
      Marc Gonzalez authored
      The UFSHC driver defines a few quirks that are not used anywhere:
      
      UFS_DEVICE_QUIRK_BROKEN_LCC
      UFS_DEVICE_NO_VCCQ
      UFS_DEVICE_QUIRK_NO_LINK_OFF
      UFS_DEVICE_NO_FASTAUTO
      
      Let's remove them.
      Acked-by: default avatarAvri Altman <avri.altman@wdc.com>
      Acked-by: default avatarAlim Akhtar <alim.akhtar@samsung.com>
      Reviewed-by: default avatarEvan Green <evgreen@chromium.org>
      Signed-off-by: default avatarMarc Gonzalez <marc.w.gonzalez@free.fr>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      e9cb9655
    • Marc Gonzalez's avatar
      Revert "scsi: ufs: disable vccq if it's not needed by UFS device" · 73067981
      Marc Gonzalez authored
      This reverts commit 60f01870.
      
      There was one conflict in drivers/scsi/ufs/ufshcd.c
      
      <<<<<<< HEAD
      	/* Init check for device descriptor sizes */
      	ufshcd_init_desc_sizes(hba);
      
      	ret = ufs_get_device_desc(hba, &card);
      	if (ret) {
      		dev_err(hba->dev, "%s: Failed getting device info. err = %d\n",
      			__func__, ret);
      		goto out;
      	}
      
      	ufs_fixup_device_setup(hba, &card);
      	ufshcd_tune_unipro_params(hba);
      
      	ret = ufshcd_set_vccq_rail_unused(hba,
      		(hba->dev_quirks & UFS_DEVICE_NO_VCCQ) ? true : false);
      	if (ret)
      		goto out;
      
      =======
      	ufs_advertise_fixup_device(hba);
      >>>>>>> parent of 60f01870... scsi: ufs: disable vccq if it's not needed by UFS device
      
      Resolution: keep HEAD, and delete the ufshcd_set_vccq_rail_unused() call
      and corresponding error-handling code.
      
      Clean up loose ends in a follow-up patch.
      
      60f01870 introduced a small power optimization: ignore the vccq load
      specified in the UFSHC DT node when said host controller is connected to
      specific Flash chips (currently, Samsung and Hynix).
      
      Unfortunately, this optimization breaks UFS on systems where vccq powers
      not only the Flash chip, but the host controller as well, such as APQ8098
      MEDIABOX or MTP8998:
      
      [    3.929877] ufshcd-qcom 1da4000.ufshc: ufshcd_query_attr: opcode 0x04 for idn 13 failed, index 0, err = -11
      [    5.433815] ufshcd-qcom 1da4000.ufshc: ufshcd_query_attr: opcode 0x04 for idn 13 failed, index 0, err = -11
      [    6.937771] ufshcd-qcom 1da4000.ufshc: ufshcd_query_attr: opcode 0x04 for idn 13 failed, index 0, err = -11
      [    6.937866] ufshcd-qcom 1da4000.ufshc: ufshcd_query_attr_retry: query attribute, idn 13, failed with error -11 after 3 retires
      [    6.946412] ufshcd-qcom 1da4000.ufshc: ufshcd_disable_auto_bkops: failed to enable exception event -11
      [    6.957972] ufshcd-qcom 1da4000.ufshc: dme-peer-get: attr-id 0x1587 failed 3 retries
      [    6.967181] ufshcd-qcom 1da4000.ufshc: dme-peer-get: attr-id 0x1586 failed 3 retries
      [    6.975025] ufshcd-qcom 1da4000.ufshc: ufshcd_get_max_pwr_mode: invalid max pwm tx gear read = 0
      [    6.982755] ufshcd-qcom 1da4000.ufshc: ufshcd_probe_hba: Failed getting max supported power mode
      [    8.505770] ufshcd-qcom 1da4000.ufshc: ufshcd_query_flag: Sending flag query for idn 3 failed, err = -11
      [   10.009807] ufshcd-qcom 1da4000.ufshc: ufshcd_query_flag: Sending flag query for idn 3 failed, err = -11
      [   11.513766] ufshcd-qcom 1da4000.ufshc: ufshcd_query_flag: Sending flag query for idn 3 failed, err = -11
      [   11.513861] ufshcd-qcom 1da4000.ufshc: ufshcd_query_flag_retry: query attribute, opcode 5, idn 3, failed with error -11 after 3 retires
      [   13.049807] ufshcd-qcom 1da4000.ufshc: __ufshcd_query_descriptor: opcode 0x01 for idn 8 failed, index 0, err = -11
      [   14.553768] ufshcd-qcom 1da4000.ufshc: __ufshcd_query_descriptor: opcode 0x01 for idn 8 failed, index 0, err = -11
      [   16.057767] ufshcd-qcom 1da4000.ufshc: __ufshcd_query_descriptor: opcode 0x01 for idn 8 failed, index 0, err = -11
      [   16.057872] ufshcd-qcom 1da4000.ufshc: ufshcd_read_desc_param: Failed reading descriptor. desc_id 8, desc_index 0, param_offset 0, ret -11
      [   16.067109] ufshcd-qcom 1da4000.ufshc: ufshcd_init_icc_levels: Failed reading power descriptor.len = 98 ret = -11
      [   37.073787] ufshcd-qcom 1da4000.ufshc: link startup failed 1
      
      In my opinion, the rationale for the original patch is questionable.  If
      neither the UFSHC, nor the Flash chip, require any load from vccq, then
      that power rail should simply not be specified at all in the DT.
      
      Working around that fact in the driver is detrimental, as evidenced by the
      failure to initialize the host controller on MSM8998.
      Acked-by: default avatarAvri Altman <avri.altman@wdc.com>
      Acked-by: default avatarAlim Akhtar <alim.akhtar@samsung.com>
      Signed-off-by: default avatarMarc Gonzalez <marc.w.gonzalez@free.fr>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      73067981
  7. 26 Feb, 2019 1 commit
    • YueHaibing's avatar
      scsi: megaraid_sas: Remove a bunch of set but not used variables · 379c003f
      YueHaibing authored
      Fixes gcc '-Wunused-but-set-variable' warning:
      
      drivers/scsi/megaraid/megaraid_sas_fusion.c: In function 'wait_and_poll':
      drivers/scsi/megaraid/megaraid_sas_fusion.c:936:25: warning:
       variable 'fusion' set but not used [-Wunused-but-set-variable]
      
      drivers/scsi/megaraid/megaraid_sas_fusion.c: In function 'megasas_sync_map_info':
      drivers/scsi/megaraid/megaraid_sas_fusion.c:1329:6: warning:
       variable 'size_sync_info' set but not used [-Wunused-but-set-variable]
      
      drivers/scsi/megaraid/megaraid_sas_fusion.c: In function 'megasas_init_adapter_fusion':
      drivers/scsi/megaraid/megaraid_sas_fusion.c:1639:39: warning:
       variable 'reg_set' set but not used [-Wunused-but-set-variable]
      
      drivers/scsi/megaraid/megaraid_sas_fusion.c: In function 'megasas_is_prp_possible':
      drivers/scsi/megaraid/megaraid_sas_fusion.c:1925:25: warning:
       variable 'fusion' set but not used [-Wunused-but-set-variable]
      
      drivers/scsi/megaraid/megaraid_sas_fusion.c: In function 'megasas_make_prp_nvme':
      drivers/scsi/megaraid/megaraid_sas_fusion.c:2047:25: warning:
       variable 'fusion' set but not used [-Wunused-but-set-variable]
      
      drivers/scsi/megaraid/megaraid_sas_fusion.c: In function 'megasas_build_ldio_fusion':
      drivers/scsi/megaraid/megaraid_sas_fusion.c:2620:42: warning:
       variable 'req_desc' set but not used [-Wunused-but-set-variable]
      
      drivers/scsi/megaraid/megaraid_sas_fusion.c: In function 'megasas_build_and_issue_cmd_fusion':
      drivers/scsi/megaraid/megaraid_sas_fusion.c:3245:25: warning:
       variable 'fusion' set but not used [-Wunused-but-set-variable]
      
      drivers/scsi/megaraid/megaraid_sas_fusion.c: In function 'megasas_task_abort_fusion':
      drivers/scsi/megaraid/megaraid_sas_fusion.c:4398:25: warning:
       variable 'fusion' set but not used [-Wunused-but-set-variable]
      
      drivers/scsi/megaraid/megaraid_sas_fusion.c: In function 'megasas_reset_target_fusion':
      drivers/scsi/megaraid/megaraid_sas_fusion.c:4484:25: warning:
       variable 'fusion' set but not used [-Wunused-but-set-variable]
      
      They're not used anymore and can be removed.
      Signed-off-by: default avatarYueHaibing <yuehaibing@huawei.com>
      Acked-by: default avatarSumit Saxena <sumit.saxena@broadcom.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      379c003f