]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
PM core: Use new async_schedule_dev command
authorAlexander Duyck <alexander.h.duyck@linux.intel.com>
Tue, 22 Jan 2019 18:39:42 +0000 (10:39 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 31 Jan 2019 13:20:54 +0000 (14:20 +0100)
Use the device specific version of the async_schedule commands to defer
various tasks related to power management. By doing this we should see a
slight improvement in performance as any device that is sensitive to
latency/locality in the setup will now be initializing on the node closest
to the device.

Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/power/main.c

index 0992e67e862b7d7e8a154ae9319f48be171fe2e7..93ddbcebcece3f624318cfd3a6f647e4a0081562 100644 (file)
@@ -727,7 +727,7 @@ void dpm_noirq_resume_devices(pm_message_t state)
                reinit_completion(&dev->power.completion);
                if (is_async(dev)) {
                        get_device(dev);
-                       async_schedule(async_resume_noirq, dev);
+                       async_schedule_dev(async_resume_noirq, dev);
                }
        }
 
@@ -884,7 +884,7 @@ void dpm_resume_early(pm_message_t state)
                reinit_completion(&dev->power.completion);
                if (is_async(dev)) {
                        get_device(dev);
-                       async_schedule(async_resume_early, dev);
+                       async_schedule_dev(async_resume_early, dev);
                }
        }
 
@@ -1048,7 +1048,7 @@ void dpm_resume(pm_message_t state)
                reinit_completion(&dev->power.completion);
                if (is_async(dev)) {
                        get_device(dev);
-                       async_schedule(async_resume, dev);
+                       async_schedule_dev(async_resume, dev);
                }
        }
 
@@ -1368,7 +1368,7 @@ static int device_suspend_noirq(struct device *dev)
 
        if (is_async(dev)) {
                get_device(dev);
-               async_schedule(async_suspend_noirq, dev);
+               async_schedule_dev(async_suspend_noirq, dev);
                return 0;
        }
        return __device_suspend_noirq(dev, pm_transition, false);
@@ -1571,7 +1571,7 @@ static int device_suspend_late(struct device *dev)
 
        if (is_async(dev)) {
                get_device(dev);
-               async_schedule(async_suspend_late, dev);
+               async_schedule_dev(async_suspend_late, dev);
                return 0;
        }
 
@@ -1835,7 +1835,7 @@ static int device_suspend(struct device *dev)
 
        if (is_async(dev)) {
                get_device(dev);
-               async_schedule(async_suspend, dev);
+               async_schedule_dev(async_suspend, dev);
                return 0;
        }