1. 27 Feb, 2019 4 commits
    • 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
  2. 26 Feb, 2019 4 commits
    • 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
    • Avri Altman's avatar
      scsi: clean obsolete return values of eh_timed_out · 82c10ac7
      Avri Altman authored
      Those are no longer in use since commit 242f9dcb
      ("block: unify request timeout handling").
      Signed-off-by: default avatarAvri Altman <avri.altman@wdc.com>
      Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      82c10ac7
    • Martin K. Petersen's avatar
      scsi: sd: Optimal I/O size should be a multiple of physical block size · a83da8a4
      Martin K. Petersen authored
      It was reported that some devices report an OPTIMAL TRANSFER LENGTH of
      0xFFFF blocks. That looks bogus, especially for a device with a
      4096-byte physical block size.
      
      Ignore OPTIMAL TRANSFER LENGTH if it is not a multiple of the device's
      reported physical block size.
      
      To make the sanity checking conditionals more readable--and to
      facilitate printing warnings--relocate the checking to a helper
      function. No functional change aside from the printks.
      
      Cc: <stable@vger.kernel.org>
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199759Reported-by: default avatarChristoph Anton Mitterer <calestyo@scientia.net>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      a83da8a4
    • Martin K. Petersen's avatar
      scsi: MAINTAINERS: SCSI initiator and target tweaks · d1420f2c
      Martin K. Petersen authored
      Nic has been absent for a while and target changes now go through the SCSI
      tree. To avoid confusion wrt. the NVMe target, clarify that this entry
      refers to the SCSI target subsystem.
      
      Also add patchwork links for both SCSI initiator and target.
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      d1420f2c
  3. 19 Feb, 2019 19 commits
  4. 14 Feb, 2019 2 commits
  5. 13 Feb, 2019 5 commits
  6. 12 Feb, 2019 6 commits