|
@@ -316,8 +316,7 @@ static void __device_release_driver(struct device *dev)
|
|
|
|
|
|
drv = dev->driver;
|
|
drv = dev->driver;
|
|
if (drv) {
|
|
if (drv) {
|
|
- pm_runtime_get_noresume(dev);
|
|
|
|
- pm_runtime_barrier(dev);
|
|
|
|
|
|
+ pm_runtime_get_sync(dev);
|
|
|
|
|
|
driver_sysfs_remove(dev);
|
|
driver_sysfs_remove(dev);
|
|
|
|
|
|
@@ -326,6 +325,8 @@ static void __device_release_driver(struct device *dev)
|
|
BUS_NOTIFY_UNBIND_DRIVER,
|
|
BUS_NOTIFY_UNBIND_DRIVER,
|
|
dev);
|
|
dev);
|
|
|
|
|
|
|
|
+ pm_runtime_put_sync(dev);
|
|
|
|
+
|
|
if (dev->bus && dev->bus->remove)
|
|
if (dev->bus && dev->bus->remove)
|
|
dev->bus->remove(dev);
|
|
dev->bus->remove(dev);
|
|
else if (drv->remove)
|
|
else if (drv->remove)
|
|
@@ -338,7 +339,6 @@ static void __device_release_driver(struct device *dev)
|
|
BUS_NOTIFY_UNBOUND_DRIVER,
|
|
BUS_NOTIFY_UNBOUND_DRIVER,
|
|
dev);
|
|
dev);
|
|
|
|
|
|
- pm_runtime_put_sync(dev);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|