• Nathan Lynch's avatar
    powerpc/pseries/hibernation: drop pseries_suspend_begin() from suspend ops · 52719fce
    Nathan Lynch authored
    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: 32d8ad4e ("powerpc/pseries: Partition hibernation support")
    Signed-off-by: default avatarNathan Lynch <nathanl@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20201207215200.1785968-18-nathanl@linux.ibm.com
    52719fce
suspend.c 5.3 KB