Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 256955
b: refs/heads/master
c: 632e270
h: refs/heads/master
i:
  256953: a218f36
  256951: d63078f
v: v3
  • Loading branch information
Rafael J. Wysocki committed Jul 2, 2011
1 parent 9ce413f commit f476731
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 455716e9b12ba93e93181ac88bef62e4eb5ac66c
refs/heads/master: 632e270e01d8a1ee9e8ea56c83028727f17b1d17
6 changes: 4 additions & 2 deletions trunk/Documentation/power/runtime_pm.txt
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,8 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
- execute the subsystem-level suspend callback for the device; returns 0 on
success, 1 if the device's run-time PM status was already 'suspended', or
error code on failure, where -EAGAIN or -EBUSY means it is safe to attempt
to suspend the device again in future
to suspend the device again in future and -EACCES means that
'power.disable_depth' is different from 0

int pm_runtime_autosuspend(struct device *dev);
- same as pm_runtime_suspend() except that the autosuspend delay is taken
Expand All @@ -304,7 +305,8 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
success, 1 if the device's run-time PM status was already 'active' or
error code on failure, where -EAGAIN means it may be safe to attempt to
resume the device again in future, but 'power.runtime_error' should be
checked additionally
checked additionally, and -EACCES means that 'power.disable_depth' is
different from 0

int pm_request_idle(struct device *dev);
- submit a request to execute the subsystem-level idle callback for the
Expand Down
9 changes: 5 additions & 4 deletions trunk/drivers/base/power/runtime.c
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,9 @@ static int rpm_check_suspend_allowed(struct device *dev)

if (dev->power.runtime_error)
retval = -EINVAL;
else if (atomic_read(&dev->power.usage_count) > 0
|| dev->power.disable_depth > 0)
else if (dev->power.disable_depth > 0)
retval = -EACCES;
else if (atomic_read(&dev->power.usage_count) > 0)
retval = -EAGAIN;
else if (!pm_children_suspended(dev))
retval = -EBUSY;
Expand Down Expand Up @@ -262,7 +263,7 @@ static int rpm_callback(int (*cb)(struct device *), struct device *dev)
spin_lock_irq(&dev->power.lock);
}
dev->power.runtime_error = retval;
return retval;
return retval != -EACCES ? retval : -EIO;
}

/**
Expand Down Expand Up @@ -458,7 +459,7 @@ static int rpm_resume(struct device *dev, int rpmflags)
if (dev->power.runtime_error)
retval = -EINVAL;
else if (dev->power.disable_depth > 0)
retval = -EAGAIN;
retval = -EACCES;
if (retval)
goto out;

Expand Down
8 changes: 4 additions & 4 deletions trunk/drivers/scsi/scsi_pm.c
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,9 @@ int scsi_autopm_get_device(struct scsi_device *sdev)
int err;

err = pm_runtime_get_sync(&sdev->sdev_gendev);
if (err < 0)
if (err < 0 && err !=-EACCES)
pm_runtime_put_sync(&sdev->sdev_gendev);
else if (err > 0)
else
err = 0;
return err;
}
Expand All @@ -173,9 +173,9 @@ int scsi_autopm_get_host(struct Scsi_Host *shost)
int err;

err = pm_runtime_get_sync(&shost->shost_gendev);
if (err < 0)
if (err < 0 && err !=-EACCES)
pm_runtime_put_sync(&shost->shost_gendev);
else if (err > 0)
else
err = 0;
return err;
}
Expand Down

0 comments on commit f476731

Please sign in to comment.