PM: domains: Drop genpd status manipulation for hibernate restore
authorShawn Guo <shawn.guo@linaro.org>
Wed, 2 Nov 2022 14:21:01 +0000 (22:21 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 3 Nov 2022 18:40:58 +0000 (19:40 +0100)
The genpd status manipulation for hibernate restore has really never
worked as intended.  For example, if the genpd->status was GENPD_STATE_ON,
the parent domain's `sd_count` must have been increased, so it needs to
be adjusted too.  So drop this status manipulation.

Suggested-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/base/power/domain.c

index 6471b559230e977b66bc658348312688a09b3734..97deae1d4e77a360628eb2952dad9b1345aaa200 100644 (file)
@@ -1374,20 +1374,7 @@ static int genpd_restore_noirq(struct device *dev)
        if (IS_ERR(genpd))
                return -EINVAL;
 
-       /*
-        * At this point suspended_count == 0 means we are being run for the
-        * first time for the given domain in the present cycle.
-        */
        genpd_lock(genpd);
-       if (genpd->suspended_count++ == 0) {
-               /*
-                * The boot kernel might put the domain into arbitrary state,
-                * so make it appear as powered off to genpd_sync_power_on(),
-                * so that it tries to power it on in case it was really off.
-                */
-               genpd->status = GENPD_STATE_OFF;
-       }
-
        genpd_sync_power_on(genpd, true, 0);
        genpd_unlock(genpd);