#include <linux/interrupt.h>
 #include <linux/sched.h>
 #include <linux/async.h>
+#include <linux/suspend.h>
 
 #include "../base.h"
 #include "power.h"
                mutex_unlock(&dpm_list_mtx);
 
                pm_runtime_get_noresume(dev);
-               if (pm_runtime_barrier(dev) && device_may_wakeup(dev)) {
-                       /* Wake-up requested during system sleep transition. */
+               if (pm_runtime_barrier(dev) && device_may_wakeup(dev))
+                       pm_wakeup_event(dev, 0);
+
+               if (!pm_check_wakeup_events()) {
                        pm_runtime_put_sync(dev);
                        error = -EBUSY;
                } else {
                                error = 0;
                                continue;
                        }
-                       printk(KERN_ERR "PM: Failed to prepare device %s "
-                               "for power transition: error %d\n",
+                       printk(KERN_INFO "PM: Device %s not prepared "
+                               "for power transition: code %d\n",
                                kobject_name(&dev->kobj), error);
                        put_device(dev);
                        break;