diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2009-04-24 14:57:00 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-06-16 06:30:24 +0200 |
commit | 309b7d60a345f402bec3cf9caadb53de4028e2aa (patch) | |
tree | 1e3a493c6c042155af67e062ac3f722b2cc4c6bd | |
parent | driver core: firmware_class: replace kfree(dev) with put_device(dev) (diff) | |
download | linux-309b7d60a345f402bec3cf9caadb53de4028e2aa.tar.xz linux-309b7d60a345f402bec3cf9caadb53de4028e2aa.zip |
driver core: add BUS_NOTIFY_UNBOUND_DRIVER event
This patch adds a new bus notifier event which is emitted _after_ a
device is removed from its driver. This event will be used by the
dma-api debug code to check if a driver has released all dma allocations
for that device.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/base/dd.c | 4 | ||||
-rw-r--r-- | include/linux/device.h | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 742cbe6b042b..efd00de183b1 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -320,6 +320,10 @@ static void __device_release_driver(struct device *dev) devres_release_all(dev); dev->driver = NULL; klist_remove(&dev->p->knode_driver); + if (dev->bus) + blocking_notifier_call_chain(&dev->bus->p->bus_notifier, + BUS_NOTIFY_UNBOUND_DRIVER, + dev); } } diff --git a/include/linux/device.h b/include/linux/device.h index a4a7b10aaa48..4410464b134a 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -114,6 +114,8 @@ extern int bus_unregister_notifier(struct bus_type *bus, #define BUS_NOTIFY_BOUND_DRIVER 0x00000003 /* driver bound to device */ #define BUS_NOTIFY_UNBIND_DRIVER 0x00000004 /* driver about to be unbound */ +#define BUS_NOTIFY_UNBOUND_DRIVER 0x00000005 /* driver is unbound + from the device */ extern struct kset *bus_get_kset(struct bus_type *bus); extern struct klist *bus_get_device_klist(struct bus_type *bus); |