1. 17 Oct, 2021 3 commits
    • Bart Van Assche's avatar
      scsi: core: pm: Only runtime resume if necessary · 9131bff6
      Bart Van Assche authored
      The following query shows which drivers define callbacks that are called by
      the power management support code in the SCSI core (scsi_pm.c):
      
      $ git grep -nHEwA16 "$(echo $(git grep -h 'scsi_register_driver(&' |
            sed 's/.*&//;s/\..*//') | sed 's/ /|/g')" |
          grep '\.pm[[:blank:]]*=[[:blank:]]'
      drivers/scsi/sd.c-620-			.pm = &sd_pm_ops,
      drivers/scsi/sr.c-100-			.pm = &sr_pm_ops,
      drivers/scsi/ufs/ufshcd.c-9765-		.pm = &ufshcd_wl_pm_ops,
      
      Since unconditionally runtime resuming a device during system resume is not
      necessary, remove that code. Modify the SCSI disk (sd) driver such that it
      follows the same approach as the UFS driver, namely to skip system suspend
      and resume for devices that are runtime suspended. The CD-ROM code does not
      need to be updated since its PM callbacks do not affect the device power
      state.
      
      This patch has been tested as follows:
      
      [ shell 1 ]
      
      cd /sys/kernel/debug/tracing
      grep -E 'blk_(pre|post)_runtime|runtime_(suspend|resume)|autosuspend_delay|pm_runtime_(get|put)' available_filter_functions |
        while read a b; do echo "$a"; done |
        grep -v __pm_runtime_resume >set_ftrace_filter
      echo function > current_tracer
      echo 1 > tracing_on
      cat trace_pipe
      
      [ shell 2 ]
      
      cd /sys/block/sr0
       # Increase the event poll interval to make it easier to derive from the
       # tracing output whether runtime power actions are the result of sg_inq.
      echo 30000 > events_poll_msecs
      cd device/power
       # Enable runtime power management.
      echo auto > control
      echo 1000 > autosuspend_delay_ms
      sleep 1
       # Verify in shell 1 that sr0 has been runtime suspended
      sg_inq /dev/sr0
      eject /dev/sr0
      sg_inq /dev/sr0
       # Disable runtime power management.
      echo on > control
      
      cd /sys/block/sda/device/power
      echo auto > control
      echo 1000 > autosuspend_delay_ms
      sleep 1
       # Verify in shell 1 that sr0 has been runtime suspended
      sg_inq /dev/sda
      
      Link: https://lore.kernel.org/r/20211006215453.3318929-4-bvanassche@acm.org
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Hannes Reinecke <hare@suse.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Martin Kepplinger <martin.kepplinger@puri.sm>
      Tested-by: default avatarMartin Kepplinger <martin.kepplinger@puri.sm>
      Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      9131bff6
    • Bart Van Assche's avatar
      scsi: sd: Rename sd_resume() into sd_resume_system() · 1c957532
      Bart Van Assche authored
      This patch does not change any functionality but makes the next patch in
      this series easier to read.
      
      Link: https://lore.kernel.org/r/20211006215453.3318929-3-bvanassche@acm.org
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Hannes Reinecke <hare@suse.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Martin Kepplinger <martin.kepplinger@puri.sm>
      Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      1c957532
    • Bart Van Assche's avatar
      scsi: core: pm: Rely on the device driver core for async power management · a19a93e4
      Bart Van Assche authored
      Instead of implementing asynchronous resume support in the SCSI core, rely
      on the device driver core for resuming SCSI devices asynchronously.
      Instead of only supporting asynchronous resumes, also support asynchronous
      suspends.
      
      Link: https://lore.kernel.org/r/20211006215453.3318929-2-bvanassche@acm.org
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Hannes Reinecke <hare@suse.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Martin Kepplinger <martin.kepplinger@puri.sm>
      Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      a19a93e4
  2. 13 Oct, 2021 5 commits
  3. 12 Oct, 2021 4 commits
  4. 05 Oct, 2021 28 commits