1. 20 12月, 2019 4 次提交
  2. 20 11月, 2019 3 次提交
  3. 19 11月, 2019 3 次提交
  4. 13 11月, 2019 2 次提交
  5. 01 11月, 2019 3 次提交
  6. 01 10月, 2019 1 次提交
  7. 24 9月, 2019 1 次提交
  8. 08 9月, 2019 2 次提交
  9. 30 8月, 2019 1 次提交
    • S
      scsi: ufs: fix broken hba->outstanding_tasks · b557217c
      Stanley Chu 提交于
      Currently bits in hba->outstanding_tasks are cleared only after their
      corresponding task management commands are successfully done by
      __ufshcd_issue_tm_cmd().
      
      If timeout happens in a task management command, its corresponding bit in
      hba->outstanding_tasks will not be cleared until next task management
      command with the same tag used successfully finishes.
      
      This is wrong and can lead to some issues, like power issue.  For example,
      ufshcd_release() and ufshcd_gate_work() will do nothing if
      hba->outstanding_tasks is not zero even if both UFS host and devices are
      actually idle.
      
      Solution is referred from error handling of device commands: bits in
      hba->outstanding_tasks shall be cleared regardless of their execution
      results.
      Signed-off-by: NStanley Chu <stanley.chu@mediatek.com>
      Signed-off-by: NChun-Hung Wu <chun-hung.wu@mediatek.com>
      Reviewed-by: NAvri Altman <avri.altman@wdc.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      b557217c
  10. 15 8月, 2019 1 次提交
    • A
      scsi: ufs: Fix NULL pointer dereference in ufshcd_config_vreg_hpm() · 7c7cfdcf
      Adrian Hunter 提交于
      Fix the following BUG:
      
        [ 187.065689] BUG: kernel NULL pointer dereference, address: 000000000000001c
        [ 187.065790] RIP: 0010:ufshcd_vreg_set_hpm+0x3c/0x110 [ufshcd_core]
        [ 187.065938] Call Trace:
        [ 187.065959] ufshcd_resume+0x72/0x290 [ufshcd_core]
        [ 187.065980] ufshcd_system_resume+0x54/0x140 [ufshcd_core]
        [ 187.065993] ? pci_pm_restore+0xb0/0xb0
        [ 187.066005] ufshcd_pci_resume+0x15/0x20 [ufshcd_pci]
        [ 187.066017] pci_pm_thaw+0x4c/0x90
        [ 187.066030] dpm_run_callback+0x5b/0x150
        [ 187.066043] device_resume+0x11b/0x220
      
      Voltage regulators are optional, so functions must check they exist
      before dereferencing.
      
      Note this issue is hidden if CONFIG_REGULATORS is not set, because the
      offending code is optimised away.
      
      Notes for stable:
      
      The issue first appears in commit 57d104c1 ("ufs: add UFS power
      management support") but is inadvertently fixed in commit 60f01870
      ("scsi: ufs: disable vccq if it's not needed by UFS device") which in
      turn was reverted by commit 73067981 ("Revert "scsi: ufs: disable vccq
      if it's not needed by UFS device""). So fix applies v3.18 to v4.5 and
      v5.1+
      
      Fixes: 57d104c1 ("ufs: add UFS power management support")
      Fixes: 73067981 ("Revert "scsi: ufs: disable vccq if it's not needed by UFS device"")
      Cc: stable@vger.kernel.org
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      7c7cfdcf
  11. 08 8月, 2019 1 次提交
  12. 23 7月, 2019 5 次提交
  13. 17 7月, 2019 1 次提交
  14. 19 6月, 2019 3 次提交
  15. 05 6月, 2019 1 次提交
  16. 16 4月, 2019 1 次提交
  17. 04 4月, 2019 3 次提交
  18. 27 2月, 2019 3 次提交
    • A
      scsi: ufs: Allow reading descriptor via raw upiu · 4bbbe242
      Avri Altman 提交于
      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: NAvri Altman <avri.altman@wdc.com>
      Reviewed-by: NEvan Green <evgreen@chromium.org>
      Reviewed-by: NBean Huo <beanhuo@micron.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      4bbbe242
    • M
      scsi: ufs: Remove unused device quirks · e9cb9655
      Marc Gonzalez 提交于
      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: NAvri Altman <avri.altman@wdc.com>
      Acked-by: NAlim Akhtar <alim.akhtar@samsung.com>
      Reviewed-by: NEvan Green <evgreen@chromium.org>
      Signed-off-by: NMarc Gonzalez <marc.w.gonzalez@free.fr>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      e9cb9655
    • M
      Revert "scsi: ufs: disable vccq if it's not needed by UFS device" · 73067981
      Marc Gonzalez 提交于
      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: NAvri Altman <avri.altman@wdc.com>
      Acked-by: NAlim Akhtar <alim.akhtar@samsung.com>
      Signed-off-by: NMarc Gonzalez <marc.w.gonzalez@free.fr>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      73067981
  19. 05 2月, 2019 1 次提交