lkml.org 
[lkml]   [2012]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 031/109] PM / Sleep: call early resume handlers when suspend_noirq fails
    Date
    From: Greg KH <gregkh@linuxfoundation.org>

    3.4-stable review patch. If anyone has any objections, please let me know.

    ------------------

    From: Colin Cross <ccross@android.com>

    commit 064b021fbe470ecc9ca10f9f87af48c0fc0865fb upstream.

    Commit cf579dfb82550e34de7ccf3ef090d8b834ccd3a9 (PM / Sleep: Introduce
    "late suspend" and "early resume" of devices) introduced a bug where
    suspend_late handlers would be called, but if dpm_suspend_noirq returned
    an error the early_resume handlers would never be called. All devices
    would end up on the dpm_late_early_list, and would never be resumed
    again.

    Fix it by calling dpm_resume_early when dpm_suspend_noirq returns
    an error.

    Signed-off-by: Colin Cross <ccross@android.com>
    Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/base/power/main.c | 10 +++++++++-
    1 file changed, 9 insertions(+), 1 deletion(-)

    --- a/drivers/base/power/main.c
    +++ b/drivers/base/power/main.c
    @@ -979,8 +979,16 @@ static int dpm_suspend_late(pm_message_t
    int dpm_suspend_end(pm_message_t state)
    {
    int error = dpm_suspend_late(state);
    + if (error)
    + return error;

    - return error ? : dpm_suspend_noirq(state);
    + error = dpm_suspend_noirq(state);
    + if (error) {
    + dpm_resume_early(state);
    + return error;
    + }
    +
    + return 0;
    }
    EXPORT_SYMBOL_GPL(dpm_suspend_end);




    \
     
     \ /
      Last update: 2012-08-08 01:21    [W:0.042 / U:30.284 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site