• Rafael J. Wysocki's avatar
    driver core: Partially revert "driver core: correct device's shutdown order" · bf0070e2
    Rafael J. Wysocki authored
    commit 722e5f2b1eec7de61117b7c0a7914761e3da2eda upstream.
    
    Commit 52cdbdd4 (driver core: correct device's shutdown order)
    introduced a regression by breaking device shutdown on some systems.
    
    Namely, the devices_kset_move_last() call in really_probe() added by
    that commit is a mistake as it may cause parents to follow children
    in the devices_kset list which then causes shutdown to fail.  For
    example, if a device has children before really_probe() is called
    for it (which is not uncommon), that call will cause it to be
    reordered after the children in the devices_kset list and the
    ordering of that list will not reflect the correct device shutdown
    order any more.
    
    Also it causes the devices_kset list to be constantly reordered
    until all drivers have been probed which is totally pointless
    overhead in the majority of cases and it only covered an issue
    with system shutdown, while system-wide suspend/resume potentially
    had the same issue on the affected platforms (which was not covered).
    
    Moreover, the shutdown issue originally addressed by the change in
    really_probe() made by commit 52cdbdd4 is not present in 4.18-rc
    any more, since dra7 started to use the sdhci-omap driver which
    doesn't disable any regulators during shutdown, so the really_probe()
    part of commit 52cdbdd4 can be safely reverted.  [The original
    issue was related to the omap_hsmmc driver used by dra7 previously.]
    
    For the above reasons, revert the really_probe() modifications made
    by commit 52cdbdd4.
    
    The other code changes made by commit 52cdbdd4 are useful and
    they need not be reverted.
    
    Fixes: 52cdbdd4 (driver core: correct device's shutdown order)
    Link: https://lore.kernel.org/lkml/CAFgQCTt7VfqM=UyCnvNFxrSw8Z6cUtAi3HUwR4_xPAc03SgHjQ@mail.gmail.com/Reported-by: default avatarPingfan Liu <kernelfans@gmail.com>
    Tested-by: default avatarPingfan Liu <kernelfans@gmail.com>
    Reviewed-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    bf0070e2