aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_pm.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2011-07-01 16:29:15 -0400
committerRafael J. Wysocki <rjw@sisk.pl>2011-07-02 08:30:10 -0400
commit632e270e01d8a1ee9e8ea56c83028727f17b1d17 (patch)
tree58cbc127f9f173409f40bbaf27f8ea85c185c52d /drivers/scsi/scsi_pm.c
parent455716e9b12ba93e93181ac88bef62e4eb5ac66c (diff)
PM / Runtime: Return special error code if runtime PM is disabled
Some callers of pm_runtime_get_sync() and other runtime PM helper functions, scsi_autopm_get_host() and scsi_autopm_get_device() in particular, need to distinguish error codes returned when runtime PM is disabled (i.e. power.disable_depth is nonzero for the given device) from error codes returned in other situations. For this reason, make the runtime PM helper functions return -EACCES when power.disable_depth is nonzero and ensure that this error code won't be returned by them in any other circumstances. Modify scsi_autopm_get_host() and scsi_autopm_get_device() to check the error code returned by pm_runtime_get_sync() and ignore -EACCES. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Diffstat (limited to 'drivers/scsi/scsi_pm.c')
-rw-r--r--drivers/scsi/scsi_pm.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/scsi/scsi_pm.c b/drivers/scsi/scsi_pm.c
index d70e91ae60af..d82a023a9015 100644
--- a/drivers/scsi/scsi_pm.c
+++ b/drivers/scsi/scsi_pm.c
@@ -144,9 +144,9 @@ int scsi_autopm_get_device(struct scsi_device *sdev)
144 int err; 144 int err;
145 145
146 err = pm_runtime_get_sync(&sdev->sdev_gendev); 146 err = pm_runtime_get_sync(&sdev->sdev_gendev);
147 if (err < 0) 147 if (err < 0 && err !=-EACCES)
148 pm_runtime_put_sync(&sdev->sdev_gendev); 148 pm_runtime_put_sync(&sdev->sdev_gendev);
149 else if (err > 0) 149 else
150 err = 0; 150 err = 0;
151 return err; 151 return err;
152} 152}
@@ -173,9 +173,9 @@ int scsi_autopm_get_host(struct Scsi_Host *shost)
173 int err; 173 int err;
174 174
175 err = pm_runtime_get_sync(&shost->shost_gendev); 175 err = pm_runtime_get_sync(&shost->shost_gendev);
176 if (err < 0) 176 if (err < 0 && err !=-EACCES)
177 pm_runtime_put_sync(&shost->shost_gendev); 177 pm_runtime_put_sync(&shost->shost_gendev);
178 else if (err > 0) 178 else
179 err = 0; 179 err = 0;
180 return err; 180 return err;
181} 181}