aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base
diff options
context:
space:
mode:
authorJoerg Roedel <jroedel@suse.de>2014-09-30 07:02:02 -0400
committerJoerg Roedel <jroedel@suse.de>2014-10-02 05:14:34 -0400
commit599bad38cf7163123af7c9efea0fcf228bc74fe1 (patch)
tree876f2845a2c02b0d1f23eb6ca02aad986807132e /drivers/base
parenteecbad7d0306b9ee4f621517052913d1adaea753 (diff)
driver core: Add BUS_NOTIFY_REMOVED_DEVICE event
This event closes an important gap in the bus notifiers. There is already the BUS_NOTIFY_DEL_DEVICE event, but that is sent when the device is still bound to its device driver. This is too early for the IOMMU code to destroy any mappings for the device, as they might still be in use by the driver. The new BUS_NOTIFY_REMOVED_DEVICE event introduced with this patch closes this gap as it is sent when the device is already unbound from its device driver and almost completly removed from the driver core. With this event the IOMMU code can safely destroy any mappings and other data structures when a device is removed. Signed-off-by: Joerg Roedel <jroedel@suse.de> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Tested-by: Jerry Hoemann <jerry.hoemann@hp.com>
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/core.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 20da3ad1696b..7b270a2e6ed5 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -1211,6 +1211,9 @@ void device_del(struct device *dev)
1211 */ 1211 */
1212 if (platform_notify_remove) 1212 if (platform_notify_remove)
1213 platform_notify_remove(dev); 1213 platform_notify_remove(dev);
1214 if (dev->bus)
1215 blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
1216 BUS_NOTIFY_REMOVED_DEVICE, dev);
1214 kobject_uevent(&dev->kobj, KOBJ_REMOVE); 1217 kobject_uevent(&dev->kobj, KOBJ_REMOVE);
1215 cleanup_device_parent(dev); 1218 cleanup_device_parent(dev);
1216 kobject_del(&dev->kobj); 1219 kobject_del(&dev->kobj);