mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [RESEND PATCH 1/2] PM/runtime: update document about callbacks
@ 2011-10-09  3:40 tom.leiming
  2011-10-09  3:40 ` [RESEND PATCH 2/2] PM/runtime: handle ->runtime_suspend failure correctly tom.leiming
  2011-10-10 21:46 ` [RESEND PATCH 1/2] PM/runtime: update document about callbacks Rafael J. Wysocki
  0 siblings, 2 replies; 6+ messages in thread
From: tom.leiming @ 2011-10-09  3:40 UTC (permalink / raw)
  To: rjw; +Cc: linux-pm, linux-kernel, Ming Lei

From: Ming Lei <ming.lei@canonical.com>

Support for device power domains has been introduced in
commit 9659cc0678b954f187290c6e8b247a673c5d37e1 (PM: Make
system-wide PM and runtime PM treat subsystems consistently),
also power domain callbacks will take precedence over subsystem ones
from commit 4d27e9dcff00a6425d779b065ec8892e4f391661(PM: Make
power domain callbacks take precedence over subsystem ones).

So update part of "Device Runtime PM Callbacks" in
Documentation/power/runtime_pm.txt.

Signed-off-by: Ming Lei <ming.lei@canonical.com>
---
 Documentation/power/runtime_pm.txt |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/Documentation/power/runtime_pm.txt b/Documentation/power/runtime_pm.txt
index 1f05404..0e85608 100644
--- a/Documentation/power/runtime_pm.txt
+++ b/Documentation/power/runtime_pm.txt
@@ -43,13 +43,18 @@ struct dev_pm_ops {
 	...
 };
 
-The ->runtime_suspend(), ->runtime_resume() and ->runtime_idle() callbacks are
-executed by the PM core for either the device type, or the class (if the device
-type's struct dev_pm_ops object does not exist), or the bus type (if the
-device type's and class' struct dev_pm_ops objects do not exist) of the given
-device (this allows device types to override callbacks provided by bus types or
-classes if necessary).  The bus type, device type and class callbacks are
-referred to as subsystem-level callbacks in what follows.
+The ->runtime_suspend(), ->runtime_resume() and ->runtime_idle() callbacks
+are executed by the PM core for either the power domain, or the device type
+(if the device power domain's struct dev_pm_ops does not exist), or the class
+(if the device power domain's and type's struct dev_pm_ops object does not
+exist), or the bus type (if the device power domain's, type's and class'
+struct dev_pm_ops objects do not exist) of the given device, so the priority
+order of callbacks from high to low is that power domain callbacks, device
+type callbacks, class callbacks and bus type callbacks, and the high priority
+one will take precedence over low priority one. The bus type, device type and
+class callbacks are referred to as subsystem-level callbacks in what follows,
+and generally speaking, the power domain callbacks are used for representing
+power domains within a SoC.
 
 By default, the callbacks are always invoked in process context with interrupts
 enabled.  However, subsystems can use the pm_runtime_irq_safe() helper function
-- 
1.7.4.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [RESEND PATCH 2/2] PM/runtime: handle ->runtime_suspend failure correctly
  2011-10-09  3:40 [RESEND PATCH 1/2] PM/runtime: update document about callbacks tom.leiming
@ 2011-10-09  3:40 ` tom.leiming
  2011-10-10 21:40   ` Rafael J. Wysocki
  2011-10-10 21:46 ` [RESEND PATCH 1/2] PM/runtime: update document about callbacks Rafael J. Wysocki
  1 sibling, 1 reply; 6+ messages in thread
From: tom.leiming @ 2011-10-09  3:40 UTC (permalink / raw)
  To: rjw; +Cc: linux-pm, linux-kernel, Ming Lei

From: Ming Lei <ming.lei@canonical.com>

If ->runtime_suspend returns -EAGAIN or -EBUSY, the device should
still be in ACTIVE state, so it is not needed to send idle notification
to its parent; if ->runtime_suspend returns other fatal failure, it
doesn't make sense to send idle notification to its parent.

So skip these when failure is returned from ->runtime_suspend, also add
comments for this handling in rpm_suspend.

This patch also updates comments for rpm_suspend:

- 'Cancel a pending idle notification' should be put before, also
should be changed as 'Cancel a pending idle notification or
autosuspend/suspend'

- idle notification for suspend failure has been removed, so update
comments for it

Signed-off-by: Ming Lei <ming.lei@canonical.com>
---
v1: some minor change on Alan's suggestion
---
 drivers/base/power/runtime.c |   34 +++++++++++++++++++---------------
 1 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
index 441b5a3..e3c6a8f 100644
--- a/drivers/base/power/runtime.c
+++ b/drivers/base/power/runtime.c
@@ -284,14 +284,17 @@ static int rpm_callback(int (*cb)(struct device *), struct device *dev)
  * @dev: Device to suspend.
  * @rpmflags: Flag bits.
  *
- * Check if the device's runtime PM status allows it to be suspended.  If
- * another suspend has been started earlier, either return immediately or wait
- * for it to finish, depending on the RPM_NOWAIT and RPM_ASYNC flags.  Cancel a
- * pending idle notification.  If the RPM_ASYNC flag is set then queue a
- * suspend request; otherwise run the ->runtime_suspend() callback directly.
- * If a deferred resume was requested while the callback was running then carry
- * it out; otherwise send an idle notification for the device (if the suspend
- * failed) or for its parent (if the suspend succeeded).
+ * Check if the device's runtime PM status allows it to be suspended. Cancel
+ * a pending idle notification or autosuspend/suspend. If another suspend has
+ * been started earlier, either return immediately or wait for it to finish,
+ * depending on the RPM_NOWAIT and RPM_ASYNC flags. If the RPM_ASYNC flag is
+ * set then queue a suspend request; otherwise run the ->runtime_suspend()
+ * callback directly. If ->runtime_suspend returns failure, just cancel
+ * pending request and wake up waited tasks, then return immediatelly.
+ * After ->runtime_suspend succeeded, if a deferred resume was requested
+ * while the callback was running then carry it out; otherwise send an idle
+ * notification for its parent (if both ignore_children and irq_safe
+ * are not set).
  *
  * This function must be called under dev->power.lock with interrupts disabled.
  */
@@ -410,15 +413,16 @@ static int rpm_suspend(struct device *dev, int rpmflags)
 			dev->power.runtime_error = 0;
 		else
 			pm_runtime_cancel_pending(dev);
-	} else {
+		wake_up_all(&dev->power.wait_queue);
+		goto out;
+	}
  no_callback:
-		__update_runtime_status(dev, RPM_SUSPENDED);
-		pm_runtime_deactivate_timer(dev);
+	__update_runtime_status(dev, RPM_SUSPENDED);
+	pm_runtime_deactivate_timer(dev);
 
-		if (dev->parent) {
-			parent = dev->parent;
-			atomic_add_unless(&parent->power.child_count, -1, 0);
-		}
+	if (dev->parent) {
+		parent = dev->parent;
+		atomic_add_unless(&parent->power.child_count, -1, 0);
 	}
 	wake_up_all(&dev->power.wait_queue);
 
-- 
1.7.4.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RESEND PATCH 2/2] PM/runtime: handle ->runtime_suspend failure correctly
  2011-10-09  3:40 ` [RESEND PATCH 2/2] PM/runtime: handle ->runtime_suspend failure correctly tom.leiming
@ 2011-10-10 21:40   ` Rafael J. Wysocki
  2011-10-11  7:06     ` Ming Lei
  0 siblings, 1 reply; 6+ messages in thread
From: Rafael J. Wysocki @ 2011-10-10 21:40 UTC (permalink / raw)
  To: tom.leiming; +Cc: linux-pm, linux-kernel, Ming Lei

On Sunday, October 09, 2011, tom.leiming@gmail.com wrote:
> From: Ming Lei <ming.lei@canonical.com>
> 
> If ->runtime_suspend returns -EAGAIN or -EBUSY, the device should
> still be in ACTIVE state, so it is not needed to send idle notification
> to its parent; if ->runtime_suspend returns other fatal failure, it
> doesn't make sense to send idle notification to its parent.
> 
> So skip these when failure is returned from ->runtime_suspend, also add
> comments for this handling in rpm_suspend.
> 
> This patch also updates comments for rpm_suspend:
> 
> - 'Cancel a pending idle notification' should be put before, also
> should be changed as 'Cancel a pending idle notification or
> autosuspend/suspend'

That should be a different patch I think?

> - idle notification for suspend failure has been removed, so update
> comments for it
> 
> Signed-off-by: Ming Lei <ming.lei@canonical.com>
> ---
> v1: some minor change on Alan's suggestion
> ---
>  drivers/base/power/runtime.c |   34 +++++++++++++++++++---------------
>  1 files changed, 19 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
> index 441b5a3..e3c6a8f 100644
> --- a/drivers/base/power/runtime.c
> +++ b/drivers/base/power/runtime.c
> @@ -284,14 +284,17 @@ static int rpm_callback(int (*cb)(struct device *), struct device *dev)
>   * @dev: Device to suspend.
>   * @rpmflags: Flag bits.
>   *
> - * Check if the device's runtime PM status allows it to be suspended.  If
> - * another suspend has been started earlier, either return immediately or wait
> - * for it to finish, depending on the RPM_NOWAIT and RPM_ASYNC flags.  Cancel a
> - * pending idle notification.  If the RPM_ASYNC flag is set then queue a
> - * suspend request; otherwise run the ->runtime_suspend() callback directly.
> - * If a deferred resume was requested while the callback was running then carry
> - * it out; otherwise send an idle notification for the device (if the suspend
> - * failed) or for its parent (if the suspend succeeded).
> + * Check if the device's runtime PM status allows it to be suspended. Cancel
> + * a pending idle notification or autosuspend/suspend. If another suspend has
> + * been started earlier, either return immediately or wait for it to finish,
> + * depending on the RPM_NOWAIT and RPM_ASYNC flags. If the RPM_ASYNC flag is
> + * set then queue a suspend request; otherwise run the ->runtime_suspend()
> + * callback directly. If ->runtime_suspend returns failure, just cancel
> + * pending request and wake up waited tasks, then return immediatelly.
> + * After ->runtime_suspend succeeded, if a deferred resume was requested
> + * while the callback was running then carry it out; otherwise send an idle
> + * notification for its parent (if both ignore_children and irq_safe
> + * are not set).
>   *
>   * This function must be called under dev->power.lock with interrupts disabled.
>   */
> @@ -410,15 +413,16 @@ static int rpm_suspend(struct device *dev, int rpmflags)
>  			dev->power.runtime_error = 0;
>  		else
>  			pm_runtime_cancel_pending(dev);
> -	} else {
> +		wake_up_all(&dev->power.wait_queue);
> +		goto out;
> +	}
>   no_callback:

I don't think the change above is correct.  The code below
no_callback only should be executed if retval is zero.

To achieve the goal (i.e. avoid notifying the parent if -EAGAIN or
-EBUSY is returned by the callbacks) it would be sufficient to
do parent = NULL along with resetting power.runtime_error.

> -		__update_runtime_status(dev, RPM_SUSPENDED);
> -		pm_runtime_deactivate_timer(dev);
> +	__update_runtime_status(dev, RPM_SUSPENDED);
> +	pm_runtime_deactivate_timer(dev);
>  
> -		if (dev->parent) {
> -			parent = dev->parent;
> -			atomic_add_unless(&parent->power.child_count, -1, 0);
> -		}
> +	if (dev->parent) {
> +		parent = dev->parent;
> +		atomic_add_unless(&parent->power.child_count, -1, 0);
>  	}
>  	wake_up_all(&dev->power.wait_queue);

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RESEND PATCH 1/2] PM/runtime: update document about callbacks
  2011-10-09  3:40 [RESEND PATCH 1/2] PM/runtime: update document about callbacks tom.leiming
  2011-10-09  3:40 ` [RESEND PATCH 2/2] PM/runtime: handle ->runtime_suspend failure correctly tom.leiming
@ 2011-10-10 21:46 ` Rafael J. Wysocki
  1 sibling, 0 replies; 6+ messages in thread
From: Rafael J. Wysocki @ 2011-10-10 21:46 UTC (permalink / raw)
  To: tom.leiming; +Cc: linux-pm, linux-kernel, Ming Lei

On Sunday, October 09, 2011, tom.leiming@gmail.com wrote:
> From: Ming Lei <ming.lei@canonical.com>
> 
> Support for device power domains has been introduced in
> commit 9659cc0678b954f187290c6e8b247a673c5d37e1 (PM: Make
> system-wide PM and runtime PM treat subsystems consistently),
> also power domain callbacks will take precedence over subsystem ones
> from commit 4d27e9dcff00a6425d779b065ec8892e4f391661(PM: Make
> power domain callbacks take precedence over subsystem ones).
> 
> So update part of "Device Runtime PM Callbacks" in
> Documentation/power/runtime_pm.txt.
> 
> Signed-off-by: Ming Lei <ming.lei@canonical.com>

Applied to linux-pm/pm-runtime (and merged into linux-pm/linux-next).

Thanks,
Rafael


> ---
>  Documentation/power/runtime_pm.txt |   19 ++++++++++++-------
>  1 files changed, 12 insertions(+), 7 deletions(-)
> 
> diff --git a/Documentation/power/runtime_pm.txt b/Documentation/power/runtime_pm.txt
> index 1f05404..0e85608 100644
> --- a/Documentation/power/runtime_pm.txt
> +++ b/Documentation/power/runtime_pm.txt
> @@ -43,13 +43,18 @@ struct dev_pm_ops {
>  	...
>  };
>  
> -The ->runtime_suspend(), ->runtime_resume() and ->runtime_idle() callbacks are
> -executed by the PM core for either the device type, or the class (if the device
> -type's struct dev_pm_ops object does not exist), or the bus type (if the
> -device type's and class' struct dev_pm_ops objects do not exist) of the given
> -device (this allows device types to override callbacks provided by bus types or
> -classes if necessary).  The bus type, device type and class callbacks are
> -referred to as subsystem-level callbacks in what follows.
> +The ->runtime_suspend(), ->runtime_resume() and ->runtime_idle() callbacks
> +are executed by the PM core for either the power domain, or the device type
> +(if the device power domain's struct dev_pm_ops does not exist), or the class
> +(if the device power domain's and type's struct dev_pm_ops object does not
> +exist), or the bus type (if the device power domain's, type's and class'
> +struct dev_pm_ops objects do not exist) of the given device, so the priority
> +order of callbacks from high to low is that power domain callbacks, device
> +type callbacks, class callbacks and bus type callbacks, and the high priority
> +one will take precedence over low priority one. The bus type, device type and
> +class callbacks are referred to as subsystem-level callbacks in what follows,
> +and generally speaking, the power domain callbacks are used for representing
> +power domains within a SoC.
>  
>  By default, the callbacks are always invoked in process context with interrupts
>  enabled.  However, subsystems can use the pm_runtime_irq_safe() helper function
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RESEND PATCH 2/2] PM/runtime: handle ->runtime_suspend failure correctly
  2011-10-10 21:40   ` Rafael J. Wysocki
@ 2011-10-11  7:06     ` Ming Lei
  2011-10-11 19:12       ` Rafael J. Wysocki
  0 siblings, 1 reply; 6+ messages in thread
From: Ming Lei @ 2011-10-11  7:06 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: linux-pm, linux-kernel

Hi

2011/10/11 Rafael J. Wysocki <rjw@sisk.pl>:
> On Sunday, October 09, 2011, tom.leiming@gmail.com wrote:
>> From: Ming Lei <ming.lei@canonical.com>
>>
>> If ->runtime_suspend returns -EAGAIN or -EBUSY, the device should
>> still be in ACTIVE state, so it is not needed to send idle notification
>> to its parent; if ->runtime_suspend returns other fatal failure, it
>> doesn't make sense to send idle notification to its parent.
>>
>> So skip these when failure is returned from ->runtime_suspend, also add
>> comments for this handling in rpm_suspend.
>>
>> This patch also updates comments for rpm_suspend:
>>
>> - 'Cancel a pending idle notification' should be put before, also
>> should be changed as 'Cancel a pending idle notification or
>> autosuspend/suspend'
>
> That should be a different patch I think?

OK, I will split it into two.

>
>> - idle notification for suspend failure has been removed, so update
>> comments for it
>>
>> Signed-off-by: Ming Lei <ming.lei@canonical.com>
>> ---
>> v1: some minor change on Alan's suggestion
>> ---
>>  drivers/base/power/runtime.c |   34 +++++++++++++++++++---------------
>>  1 files changed, 19 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
>> index 441b5a3..e3c6a8f 100644
>> --- a/drivers/base/power/runtime.c
>> +++ b/drivers/base/power/runtime.c
>> @@ -284,14 +284,17 @@ static int rpm_callback(int (*cb)(struct device *), struct device *dev)
>>   * @dev: Device to suspend.
>>   * @rpmflags: Flag bits.
>>   *
>> - * Check if the device's runtime PM status allows it to be suspended.  If
>> - * another suspend has been started earlier, either return immediately or wait
>> - * for it to finish, depending on the RPM_NOWAIT and RPM_ASYNC flags.  Cancel a
>> - * pending idle notification.  If the RPM_ASYNC flag is set then queue a
>> - * suspend request; otherwise run the ->runtime_suspend() callback directly.
>> - * If a deferred resume was requested while the callback was running then carry
>> - * it out; otherwise send an idle notification for the device (if the suspend
>> - * failed) or for its parent (if the suspend succeeded).
>> + * Check if the device's runtime PM status allows it to be suspended. Cancel
>> + * a pending idle notification or autosuspend/suspend. If another suspend has
>> + * been started earlier, either return immediately or wait for it to finish,
>> + * depending on the RPM_NOWAIT and RPM_ASYNC flags. If the RPM_ASYNC flag is
>> + * set then queue a suspend request; otherwise run the ->runtime_suspend()
>> + * callback directly. If ->runtime_suspend returns failure, just cancel
>> + * pending request and wake up waited tasks, then return immediatelly.
>> + * After ->runtime_suspend succeeded, if a deferred resume was requested
>> + * while the callback was running then carry it out; otherwise send an idle
>> + * notification for its parent (if both ignore_children and irq_safe
>> + * are not set).
>>   *
>>   * This function must be called under dev->power.lock with interrupts disabled.
>>   */
>> @@ -410,15 +413,16 @@ static int rpm_suspend(struct device *dev, int rpmflags)
>>                       dev->power.runtime_error = 0;
>>               else
>>                       pm_runtime_cancel_pending(dev);
>> -     } else {
>> +             wake_up_all(&dev->power.wait_queue);
>> +             goto out;
>> +     }
>>   no_callback:
>
> I don't think the change above is correct.  The code below
> no_callback only should be executed if retval is zero.

The 'goto out' above no_callback will bypass this, won't it?

> To achieve the goal (i.e. avoid notifying the parent if -EAGAIN or
> -EBUSY is returned by the callbacks) it would be sufficient to

For all non zero value return from callbacks, the idle notification to
its parent should be avoided too.

> do parent = NULL along with resetting power.runtime_error.
>
>> -             __update_runtime_status(dev, RPM_SUSPENDED);
>> -             pm_runtime_deactivate_timer(dev);
>> +     __update_runtime_status(dev, RPM_SUSPENDED);
>> +     pm_runtime_deactivate_timer(dev);
>>
>> -             if (dev->parent) {
>> -                     parent = dev->parent;
>> -                     atomic_add_unless(&parent->power.child_count, -1, 0);
>> -             }
>> +     if (dev->parent) {
>> +             parent = dev->parent;
>> +             atomic_add_unless(&parent->power.child_count, -1, 0);
>>       }
>>       wake_up_all(&dev->power.wait_queue);
>
> Thanks,
> Rafael
>

thanks,
-- 
Ming Lei

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RESEND PATCH 2/2] PM/runtime: handle ->runtime_suspend failure correctly
  2011-10-11  7:06     ` Ming Lei
@ 2011-10-11 19:12       ` Rafael J. Wysocki
  0 siblings, 0 replies; 6+ messages in thread
From: Rafael J. Wysocki @ 2011-10-11 19:12 UTC (permalink / raw)
  To: Ming Lei; +Cc: linux-pm, linux-kernel

On Tuesday, October 11, 2011, Ming Lei wrote:
> Hi
> 
> 2011/10/11 Rafael J. Wysocki <rjw@sisk.pl>:
> > On Sunday, October 09, 2011, tom.leiming@gmail.com wrote:
> >> From: Ming Lei <ming.lei@canonical.com>
> >>
> >> If ->runtime_suspend returns -EAGAIN or -EBUSY, the device should
> >> still be in ACTIVE state, so it is not needed to send idle notification
> >> to its parent; if ->runtime_suspend returns other fatal failure, it
> >> doesn't make sense to send idle notification to its parent.
> >>
> >> So skip these when failure is returned from ->runtime_suspend, also add
> >> comments for this handling in rpm_suspend.
> >>
> >> This patch also updates comments for rpm_suspend:
> >>
> >> - 'Cancel a pending idle notification' should be put before, also
> >> should be changed as 'Cancel a pending idle notification or
> >> autosuspend/suspend'
> >
> > That should be a different patch I think?
> 
> OK, I will split it into two.
> 
> >
> >> - idle notification for suspend failure has been removed, so update
> >> comments for it
> >>
> >> Signed-off-by: Ming Lei <ming.lei@canonical.com>
> >> ---
> >> v1: some minor change on Alan's suggestion
> >> ---
> >>  drivers/base/power/runtime.c |   34 +++++++++++++++++++---------------
> >>  1 files changed, 19 insertions(+), 15 deletions(-)
> >>
> >> diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
> >> index 441b5a3..e3c6a8f 100644
> >> --- a/drivers/base/power/runtime.c
> >> +++ b/drivers/base/power/runtime.c
> >> @@ -284,14 +284,17 @@ static int rpm_callback(int (*cb)(struct device *), struct device *dev)
> >>   * @dev: Device to suspend.
> >>   * @rpmflags: Flag bits.
> >>   *
> >> - * Check if the device's runtime PM status allows it to be suspended.  If
> >> - * another suspend has been started earlier, either return immediately or wait
> >> - * for it to finish, depending on the RPM_NOWAIT and RPM_ASYNC flags.  Cancel a
> >> - * pending idle notification.  If the RPM_ASYNC flag is set then queue a
> >> - * suspend request; otherwise run the ->runtime_suspend() callback directly.
> >> - * If a deferred resume was requested while the callback was running then carry
> >> - * it out; otherwise send an idle notification for the device (if the suspend
> >> - * failed) or for its parent (if the suspend succeeded).
> >> + * Check if the device's runtime PM status allows it to be suspended. Cancel
> >> + * a pending idle notification or autosuspend/suspend. If another suspend has
> >> + * been started earlier, either return immediately or wait for it to finish,
> >> + * depending on the RPM_NOWAIT and RPM_ASYNC flags. If the RPM_ASYNC flag is
> >> + * set then queue a suspend request; otherwise run the ->runtime_suspend()
> >> + * callback directly. If ->runtime_suspend returns failure, just cancel
> >> + * pending request and wake up waited tasks, then return immediatelly.
> >> + * After ->runtime_suspend succeeded, if a deferred resume was requested
> >> + * while the callback was running then carry it out; otherwise send an idle
> >> + * notification for its parent (if both ignore_children and irq_safe
> >> + * are not set).
> >>   *
> >>   * This function must be called under dev->power.lock with interrupts disabled.
> >>   */
> >> @@ -410,15 +413,16 @@ static int rpm_suspend(struct device *dev, int rpmflags)
> >>                       dev->power.runtime_error = 0;
> >>               else
> >>                       pm_runtime_cancel_pending(dev);
> >> -     } else {
> >> +             wake_up_all(&dev->power.wait_queue);
> >> +             goto out;
> >> +     }
> >>   no_callback:
> >
> > I don't think the change above is correct.  The code below
> > no_callback only should be executed if retval is zero.
> 
> The 'goto out' above no_callback will bypass this, won't it?

Yes, it will, sorry.  It seems I was confused by the removal of
"} else {".

OK, so this is technically correct.

Please resubmit with the unrelated comment changes splitted out.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-10-11 19:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-09  3:40 [RESEND PATCH 1/2] PM/runtime: update document about callbacks tom.leiming
2011-10-09  3:40 ` [RESEND PATCH 2/2] PM/runtime: handle ->runtime_suspend failure correctly tom.leiming
2011-10-10 21:40   ` Rafael J. Wysocki
2011-10-11  7:06     ` Ming Lei
2011-10-11 19:12       ` Rafael J. Wysocki
2011-10-10 21:46 ` [RESEND PATCH 1/2] PM/runtime: update document about callbacks Rafael J. Wysocki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome