lkml.org 
[lkml]   [2020]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 148/242] powerpc/pseries/hibernation: drop pseries_suspend_begin() from suspend ops
    Date
    From: Nathan Lynch <nathanl@linux.ibm.com>

    [ Upstream commit 52719fce3f4c7a8ac9eaa191e8d75a697f9fbcbc ]

    There are three ways pseries_suspend_begin() can be reached:

    1. When "mem" is written to /sys/power/state:

    kobj_attr_store()
    -> state_store()
    -> pm_suspend()
    -> suspend_devices_and_enter()
    -> pseries_suspend_begin()

    This never works because there is no way to supply a valid stream id
    using this interface, and H_VASI_STATE is called with a stream id of
    zero. So this call path is useless at best.

    2. When a stream id is written to /sys/devices/system/power/hibernate.
    pseries_suspend_begin() is polled directly from store_hibernate()
    until the stream is in the "Suspending" state (i.e. the platform is
    ready for the OS to suspend execution):

    dev_attr_store()
    -> store_hibernate()
    -> pseries_suspend_begin()

    3. When a stream id is written to /sys/devices/system/power/hibernate
    (continued). After #2, pseries_suspend_begin() is called once again
    from the pm core:

    dev_attr_store()
    -> store_hibernate()
    -> pm_suspend()
    -> suspend_devices_and_enter()
    -> pseries_suspend_begin()

    This is redundant because the VASI suspend state is already known to
    be Suspending.

    The begin() callback of platform_suspend_ops is optional, so we can
    simply remove that assignment with no loss of function.

    Fixes: 32d8ad4e621d ("powerpc/pseries: Partition hibernation support")
    Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20201207215200.1785968-18-nathanl@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/powerpc/platforms/pseries/suspend.c | 1 -
    1 file changed, 1 deletion(-)

    diff --git a/arch/powerpc/platforms/pseries/suspend.c b/arch/powerpc/platforms/pseries/suspend.c
    index 89726f07d2492..33077ad106cf0 100644
    --- a/arch/powerpc/platforms/pseries/suspend.c
    +++ b/arch/powerpc/platforms/pseries/suspend.c
    @@ -224,7 +224,6 @@ static struct bus_type suspend_subsys = {

    static const struct platform_suspend_ops pseries_suspend_ops = {
    .valid = suspend_valid_only_mem,
    - .begin = pseries_suspend_begin,
    .prepare_late = pseries_prepare_late,
    .enter = pseries_suspend_enter,
    };
    --
    2.27.0


    \
     
     \ /
      Last update: 2020-12-28 17:40    [W:2.160 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site