lkml.org 
[lkml]   [2011]   [Sep]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH 2/3] PM / Runtime: Don't run callbacks under lock for power.irq_safe set
Date
"Rafael J. Wysocki" <rjw@sisk.pl> writes:

> From: Rafael J. Wysocki <rjw@sisk.pl>
>
> The rpm_suspend() and rpm_resume() routines execute subsystem or PM
> domain callbacks under power.lock if power.irq_safe is set for the
> given device. This is inconsistent with that rpm_idle() does after
> commit 02b2677 (PM / Runtime: Allow _put_sync() from
> interrupts-disabled context) and is problematic for subsystems and PM
> domains wanting to use power.lock for synchronization in their
> runtime PM callbacks.
>
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>

The part described here looks right, and is much better for consistency.

Reviewed-by: Kevin Hilman <khilman@ti.com>

but...

[...]

> @@ -347,6 +353,15 @@ static int rpm_suspend(struct device *de
> goto out;
> }
>
> + if (dev->power.irq_safe) {
> + spin_unlock(&dev->power.lock);
> +
> + cpu_relax();
> +
> + spin_lock(&dev->power.lock);
> + goto repeat;
> + }
> +


... AFAICT, this isn't directly related to the problem described in the
changelog (or at least I didn't find it obvious), and probably deserves
a comment in the code as well.

Thanks,

Kevin


\
 
 \ /
  Last update: 2011-09-27 02:01    [W:0.088 / U:1.936 seconds]
©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site