• Y
    scsi: hisi_sas: Check usage count only when the runtime PM status is RPM_SUSPENDING · 41674625
    Yihang Li 提交于
    driver inclusion
    category: bugfix
    bugzilla: https://gitee.com/openeuler/kernel/issues/I7BNF8
    CVE: NA
    
    ----------------------------------------------------------------------
    
    Users can suspend the machine with 'echo disk > /sys/power/state', but the
    suspend will fail because the SAS controller cannot be suspended:
    
    [root@localhost ~]# echo freeze > /sys/power/state
    -bash: echo: write error: Device or resource busy
    [15104.142955] PM: suspend entry (s2idle)
    ...
    [15104.283465] hisi_sas_v3_hw 0000:32:04.0: entering suspend state
    [15104.283480] hisi_sas_v3_hw 0000:30:04.0: entering suspend state
    [15104.283500] hisi_sas_v3_hw 0000:32:04.0: PM suspend: host status cannot be suspended
    [15104.283508] hisi_sas_v3_hw 0000:30:04.0: PM suspend: host status cannot be suspended
    [15104.283516] hisi_sas_v3_hw 0000:32:04.0: PM: pci_pm_suspend(): suspend_v3_hw+0x0/0x210 [hisi_sas_v3_hw] returns -16
    [15104.283527] hisi_sas_v3_hw 0000:32:04.0: PM: dpm_run_callback(): pci_pm_suspend+0x0/0x1c0 returns -16
    [15104.283524] hisi_sas_v3_hw 0000:30:04.0: PM: pci_pm_suspend(): suspend_v3_hw+0x0/0x210 [hisi_sas_v3_hw] returns -16
    [15104.283533] hisi_sas_v3_hw 0000:32:04.0: PM: failed to suspend async: error -16
    [15104.283536] hisi_sas_v3_hw 0000:30:04.0: PM: dpm_run_callback(): pci_pm_suspend+0x0/0x1c0 returns -16
    [15104.283542] hisi_sas_v3_hw 0000:30:04.0: PM: failed to suspend async: error -16
    
    The problem is that when the ->runtime_suspend() callback suspend_v3_hw()
    is executing, the current runtime PM status is RPM_ACTIVE and the usage
    count of the controller is not 0, so return immediately.
    
    To fix it, Check the device usage count only when the runtime PM status is
    RPM_SUSPENDING.
    Signed-off-by: NYihang Li <liyihang9@huawei.com>
    Signed-off-by: Nxiabing <xiabing12@h-partners.com>
    41674625
hisi_sas_v3_hw.c 148.0 KB