diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-01-05 10:39:51 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-01-05 10:39:51 -0800 |
commit | f4e5beb57e7624d770355437e859ad849e1f68fa (patch) | |
tree | fe720a4578e890e778dd2c51fc5f1dbf4d810000 /driver | |
parent | 5758ac5a57c079fa516d792c9f4d65229c83f135 (diff) | |
download | patches-f4e5beb57e7624d770355437e859ad849e1f68fa.tar.gz |
removed rest of 2.6.15-git1 commited patches
Diffstat (limited to 'driver')
22 files changed, 0 insertions, 4594 deletions
diff --git a/driver/add-uevent_helper.patch b/driver/add-uevent_helper.patch deleted file mode 100644 index 9fb9576a904ec..0000000000000 --- a/driver/add-uevent_helper.patch +++ /dev/null @@ -1,72 +0,0 @@ -diff-tree bf9558fd631a02723c6b154400645a7a17ccaa54 (from 48bd66a731b03e50de1cd4390597e889a48d7d57) -Author: Kay Sievers <kay.sievers@suse.de> -Date: Fri Nov 11 04:58:04 2005 +0100 - -add uevent_helper control in /sys/kernel/ - -This deprecates the /proc/sys/kernel/hotplug file, as all -this stuff should be in /sys some day, right? :) -In /sys/kernel/ we have now uevent_seqnum and uevent_helper. -The seqnum is no longer used by udev, as the version for this -kernel depends on netlink which events will never get -out-of-order. - -Recent udev versions disable the /sbin/hotplug helper with -an init script, cause it leads to OOM on big boxes by running -hundreds of shells in parallel. It should be done now by: - echo "" > /sys/kernel/uevent_helper - -(Note that "-n" does not work, cause neighter proc nor sysfs -support truncate().) - -Signed-off-by: Kay Sievers <kay.sievers@suse.de> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - kernel/ksysfs.c | 25 ++++++++++++++++++++++--- - 1 file changed, 22 insertions(+), 3 deletions(-) - ---- gregkh-2.6.orig/kernel/ksysfs.c -+++ gregkh-2.6/kernel/ksysfs.c -@@ -23,11 +23,29 @@ static struct subsys_attribute _name##_a - __ATTR(_name, 0644, _name##_show, _name##_store) - - #ifdef CONFIG_HOTPLUG --static ssize_t hotplug_seqnum_show(struct subsystem *subsys, char *page) -+/* current uevent sequence number */ -+static ssize_t uevent_seqnum_show(struct subsystem *subsys, char *page) - { - return sprintf(page, "%llu\n", (unsigned long long)hotplug_seqnum); - } --KERNEL_ATTR_RO(hotplug_seqnum); -+KERNEL_ATTR_RO(uevent_seqnum); -+ -+/* uevent helper program, used during early boo */ -+static ssize_t uevent_helper_show(struct subsystem *subsys, char *page) -+{ -+ return sprintf(page, "%s\n", hotplug_path); -+} -+static ssize_t uevent_helper_store(struct subsystem *subsys, const char *page, size_t count) -+{ -+ if (count+1 > HOTPLUG_PATH_LEN) -+ return -ENOENT; -+ memcpy(hotplug_path, page, count); -+ hotplug_path[count] = '\0'; -+ if (count && hotplug_path[count-1] == '\n') -+ hotplug_path[count-1] = '\0'; -+ return count; -+} -+KERNEL_ATTR_RW(uevent_helper); - #endif - - #ifdef CONFIG_KEXEC -@@ -45,7 +63,8 @@ EXPORT_SYMBOL_GPL(kernel_subsys); - - static struct attribute * kernel_attrs[] = { - #ifdef CONFIG_HOTPLUG -- &hotplug_seqnum_attr.attr, -+ &uevent_seqnum_attr.attr, -+ &uevent_helper_attr.attr, - #endif - #ifdef CONFIG_KEXEC - &crash_notes_attr.attr, diff --git a/driver/allow-overlapping-resources-for-platform-devices.patch b/driver/allow-overlapping-resources-for-platform-devices.patch deleted file mode 100644 index e69fc04b3ed86..0000000000000 --- a/driver/allow-overlapping-resources-for-platform-devices.patch +++ /dev/null @@ -1,35 +0,0 @@ -From galak@gate.crashing.org Mon Nov 28 08:23:09 2005 -Date: Mon, 28 Nov 2005 10:15:39 -0600 (CST) -From: Kumar Gala <galak@gate.crashing.org> -To: Andrew Morton <akpm@osdl.org> -cc: Russell King <rmk+lkml@arm.linux.org.uk>, Greg KH <greg@kroah.com> -Subject: [DRIVER MODEL] Allow overlapping resources for platform devices -Message-ID: <Pine.LNX.4.44.0511281015060.25081-100000@gate.crashing.org> - -There are cases in which a device's memory mapped registers overlap -with another device's memory mapped registers. On several PowerPC -devices this occurs for the MDIO bus, whose registers tended to overlap -with one of the ethernet controllers. - -By switching from request_resource to insert_resource we can register -the MDIO bus as a proper platform device and not hack around how we -handle its memory mapped registers. - -Signed-off-by: Kumar Gala <galak@kernel.crashing.org> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/base/platform.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- gregkh-2.6.orig/drivers/base/platform.c -+++ gregkh-2.6/drivers/base/platform.c -@@ -257,7 +257,7 @@ int platform_device_add(struct platform_ - p = &ioport_resource; - } - -- if (p && request_resource(p, r)) { -+ if (p && insert_resource(p, r)) { - printk(KERN_ERR - "%s: failed to claim resource %d\n", - pdev->dev.bus_id, i); diff --git a/driver/bind_unbind_if_CONFIG_HOTPLUG.patch b/driver/bind_unbind_if_CONFIG_HOTPLUG.patch deleted file mode 100644 index e8cb31b0803b0..0000000000000 --- a/driver/bind_unbind_if_CONFIG_HOTPLUG.patch +++ /dev/null @@ -1,67 +0,0 @@ -From foo@baz.org Tue Dec 13 15:20:15 2005 -Date: Tue, 13 Dec 2005 15:17:34 -0800 -From: Greg Kroah-Hartman <gregkh@suse.de> -Subject: Driver core: only all userspace bind/unbind if CONFIG_HOTPLUG is enabled - -Thanks to drivers making their id tables __devinit, we can't allow -userspace to bind or unbind drivers from devices manually through sysfs. -So we only allow this if CONFIG_HOTPLUG is enabled. - - -Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - - ---- - drivers/base/bus.c | 26 ++++++++++++++++++++++---- - 1 file changed, 22 insertions(+), 4 deletions(-) - ---- gregkh-2.6.orig/drivers/base/bus.c -+++ gregkh-2.6/drivers/base/bus.c -@@ -428,6 +428,26 @@ static void driver_remove_attrs(struct b - } - } - -+#ifdef CONFIG_HOTPLUG -+/* -+ * Thanks to drivers making their tables __devinit, we can't allow manual -+ * bind and unbind from userspace unless CONFIG_HOTPLUG is enabled. -+ */ -+static void add_bind_files(struct device_driver *drv) -+{ -+ driver_create_file(drv, &driver_attr_unbind); -+ driver_create_file(drv, &driver_attr_bind); -+} -+ -+static void remove_bind_files(struct device_driver *drv) -+{ -+ driver_remove_file(drv, &driver_attr_bind); -+ driver_remove_file(drv, &driver_attr_unbind); -+} -+#else -+static inline void add_bind_files(struct device_driver *drv) {} -+static inline void remove_bind_files(struct device_driver *drv) {} -+#endif - - /** - * bus_add_driver - Add a driver to the bus. -@@ -457,8 +477,7 @@ int bus_add_driver(struct device_driver - module_add_driver(drv->owner, drv); - - driver_add_attrs(bus, drv); -- driver_create_file(drv, &driver_attr_unbind); -- driver_create_file(drv, &driver_attr_bind); -+ add_bind_files(drv); - } - return error; - } -@@ -476,8 +495,7 @@ int bus_add_driver(struct device_driver - void bus_remove_driver(struct device_driver * drv) - { - if (drv->bus) { -- driver_remove_file(drv, &driver_attr_bind); -- driver_remove_file(drv, &driver_attr_unbind); -+ remove_bind_files(drv); - driver_remove_attrs(drv->bus, drv); - klist_remove(&drv->knode_bus); - pr_debug("bus %s: remove driver %s\n", drv->bus->name, drv->name); diff --git a/driver/block-device-symlink-name-fix.patch b/driver/block-device-symlink-name-fix.patch deleted file mode 100644 index dbc20fe2f04a0..0000000000000 --- a/driver/block-device-symlink-name-fix.patch +++ /dev/null @@ -1,67 +0,0 @@ -From foo@baz.org Tue Dec 13 15:20:15 2005 -Date: Tue, 13 Dec 2005 15:17:34 -0800 -From: Greg Kroah-Hartman <gregkh@suse.de> -Subject: Driver core: Make block devices create the proper symlink name - -Block devices need to add the block device name to the symlink they put -in the device directory, otherwise multiple symlinks of the same name -can be created. This matches the class system, which works the same -way, we just forgot to convert block at the same time. - - -Cc: Pete Zaitcev <zaitcev@redhat.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - fs/partitions/check.c | 27 +++++++++++++++++++++++++-- - 1 file changed, 25 insertions(+), 2 deletions(-) - ---- gregkh-2.6.orig/fs/partitions/check.c -+++ gregkh-2.6/fs/partitions/check.c -@@ -336,12 +336,31 @@ void add_partition(struct gendisk *disk, - disk->part[part-1] = p; - } - -+static char *make_block_name(struct gendisk *disk) -+{ -+ char *name; -+ static char *block_str = "block:"; -+ int size; -+ -+ size = strlen(block_str) + strlen(disk->disk_name) + 1; -+ name = kmalloc(size, GFP_KERNEL); -+ if (!name) -+ return NULL; -+ strcpy(name, block_str); -+ strcat(name, disk->disk_name); -+ return name; -+} -+ - static void disk_sysfs_symlinks(struct gendisk *disk) - { - struct device *target = get_device(disk->driverfs_dev); - if (target) { -+ char *disk_name = make_block_name(disk); - sysfs_create_link(&disk->kobj,&target->kobj,"device"); -- sysfs_create_link(&target->kobj,&disk->kobj,"block"); -+ if (disk_name) { -+ sysfs_create_link(&target->kobj,&disk->kobj,disk_name); -+ kfree(disk_name); -+ } - } - } - -@@ -461,8 +480,12 @@ void del_gendisk(struct gendisk *disk) - devfs_remove_disk(disk); - - if (disk->driverfs_dev) { -+ char *disk_name = make_block_name(disk); - sysfs_remove_link(&disk->kobj, "device"); -- sysfs_remove_link(&disk->driverfs_dev->kobj, "block"); -+ if (disk_name) { -+ sysfs_remove_link(&disk->driverfs_dev->kobj, disk_name); -+ kfree(disk_name); -+ } - put_device(disk->driverfs_dev); - } - kobject_uevent(&disk->kobj, KOBJ_REMOVE); diff --git a/driver/driver-kill-hotplug-word-from-sn-and-others-fix.patch b/driver/driver-kill-hotplug-word-from-sn-and-others-fix.patch deleted file mode 100644 index 5ace547c19c5f..0000000000000 --- a/driver/driver-kill-hotplug-word-from-sn-and-others-fix.patch +++ /dev/null @@ -1,115 +0,0 @@ -From pj@sgi.com Fri Nov 25 21:24:37 2005 -Date: Fri, 25 Nov 2005 20:04:26 -0800 (PST) -From: Paul Jackson <pj@sgi.com> -To: akpm@osdl.org, Greg Kroah-Hartman <gregkh@suse.de> -Cc: Paul Jackson <pj@sgi.com> -Message-Id: <20051126040426.26945.12817.sendpatchset@jackhammer.engr.sgi.com> -Subject: [PATCH] driver kill hotplug word from sn and others fix - -The first of these changes s/hotplug/uevent/ was needed to -compile sn2_defconfig (ia64/sn). The other three files -changed are blind changes of all remaining bus_type.hotplug -references I could find to bus_type.uevent. - -This patch attempts to finish similar changes made in the -gregkh-driver-kill-hotplug-word-from-driver-core Nov 22 patch. - -Signed-off-by: Paul Jackson <pj@sgi.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - arch/arm/common/amba.c | 6 +++--- - arch/ia64/sn/kernel/tiocx.c | 4 ++-- - drivers/s390/cio/ccwgroup.c | 4 ++-- - drivers/s390/cio/device.c | 4 ++-- - 4 files changed, 9 insertions(+), 9 deletions(-) - ---- gregkh-2.6.orig/arch/ia64/sn/kernel/tiocx.c -+++ gregkh-2.6/arch/ia64/sn/kernel/tiocx.c -@@ -65,7 +65,7 @@ static int tiocx_match(struct device *de - - } - --static int tiocx_hotplug(struct device *dev, char **envp, int num_envp, -+static int tiocx_uevent(struct device *dev, char **envp, int num_envp, - char *buffer, int buffer_size) - { - return -ENODEV; -@@ -79,7 +79,7 @@ static void tiocx_bus_release(struct dev - struct bus_type tiocx_bus_type = { - .name = "tiocx", - .match = tiocx_match, -- .hotplug = tiocx_hotplug, -+ .uevent = tiocx_uevent, - }; - - /** ---- gregkh-2.6.orig/arch/arm/common/amba.c -+++ gregkh-2.6/arch/arm/common/amba.c -@@ -45,7 +45,7 @@ static int amba_match(struct device *dev - } - - #ifdef CONFIG_HOTPLUG --static int amba_hotplug(struct device *dev, char **envp, int nr_env, char *buf, int bufsz) -+static int amba_uevent(struct device *dev, char **envp, int nr_env, char *buf, int bufsz) - { - struct amba_device *pcdev = to_amba_device(dev); - -@@ -58,7 +58,7 @@ static int amba_hotplug(struct device *d - return 0; - } - #else --#define amba_hotplug NULL -+#define amba_uevent NULL - #endif - - static int amba_suspend(struct device *dev, pm_message_t state) -@@ -88,7 +88,7 @@ static int amba_resume(struct device *de - static struct bus_type amba_bustype = { - .name = "amba", - .match = amba_match, -- .hotplug = amba_hotplug, -+ .uevent = amba_uevent, - .suspend = amba_suspend, - .resume = amba_resume, - }; ---- gregkh-2.6.orig/drivers/s390/cio/ccwgroup.c -+++ gregkh-2.6/drivers/s390/cio/ccwgroup.c -@@ -45,7 +45,7 @@ ccwgroup_bus_match (struct device * dev, - return 0; - } - static int --ccwgroup_hotplug (struct device *dev, char **envp, int num_envp, char *buffer, -+ccwgroup_uevent (struct device *dev, char **envp, int num_envp, char *buffer, - int buffer_size) - { - /* TODO */ -@@ -55,7 +55,7 @@ ccwgroup_hotplug (struct device *dev, ch - static struct bus_type ccwgroup_bus_type = { - .name = "ccwgroup", - .match = ccwgroup_bus_match, -- .hotplug = ccwgroup_hotplug, -+ .uevent = ccwgroup_uevent, - }; - - static inline void ---- gregkh-2.6.orig/drivers/s390/cio/device.c -+++ gregkh-2.6/drivers/s390/cio/device.c -@@ -59,7 +59,7 @@ ccw_bus_match (struct device * dev, stru - * Heavily modeled on pci and usb hotplug. - */ - static int --ccw_hotplug (struct device *dev, char **envp, int num_envp, -+ccw_uevent (struct device *dev, char **envp, int num_envp, - char *buffer, int buffer_size) - { - struct ccw_device *cdev = to_ccwdev(dev); -@@ -110,7 +110,7 @@ ccw_hotplug (struct device *dev, char ** - struct bus_type ccw_bus_type = { - .name = "ccw", - .match = &ccw_bus_match, -- .hotplug = &ccw_hotplug, -+ .uevent = &ccw_uevent, - }; - - static int io_subchannel_probe (struct device *); diff --git a/driver/drivers-base-power-runtime.c-if-0-dpm_set_power_state.patch b/driver/drivers-base-power-runtime.c-if-0-dpm_set_power_state.patch deleted file mode 100644 index 5d7380c44fff2..0000000000000 --- a/driver/drivers-base-power-runtime.c-if-0-dpm_set_power_state.patch +++ /dev/null @@ -1,31 +0,0 @@ -From akpm@osdl.org Mon Dec 12 01:33:48 2005 -Message-Id: <200512120931.jBC9VG1r022778@shell0.pdx.osdl.net> -From: Adrian Bunk <bunk@stusta.de> -Subject: drivers/base/power/runtime.c: #if 0 dpm_set_power_state() -To: bunk@stusta.de, greg@kroah.com, mm-commits@vger.kernel.org -Date: Mon, 12 Dec 2005 01:31:03 -0800 - -This patch #if 0's an unused global function. - -Signed-off-by: Adrian Bunk <bunk@stusta.de> -Signed-off-by: Andrew Morton <akpm@osdl.org> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> ---- - drivers/base/power/runtime.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- gregkh-2.6.orig/drivers/base/power/runtime.c -+++ gregkh-2.6/drivers/base/power/runtime.c -@@ -64,6 +64,7 @@ int dpm_runtime_suspend(struct device * - } - - -+#if 0 - /** - * dpm_set_power_state - Update power_state field. - * @dev: Device. -@@ -80,3 +81,4 @@ void dpm_set_power_state(struct device * - dev->power.power_state = state; - up(&dpm_sem); - } -+#endif /* 0 */ diff --git a/driver/hold-the-device-s-parent-s-lock-during-probe-and-remove.patch b/driver/hold-the-device-s-parent-s-lock-during-probe-and-remove.patch deleted file mode 100644 index ea08e16f53e13..0000000000000 --- a/driver/hold-the-device-s-parent-s-lock-during-probe-and-remove.patch +++ /dev/null @@ -1,166 +0,0 @@ -From stern@rowland.harvard.edu Thu Nov 17 13:44:14 2005 -Date: Thu, 17 Nov 2005 16:54:12 -0500 (EST) -From: Alan Stern <stern@rowland.harvard.edu> -To: Greg KH <greg@kroah.com> -cc: Patrick Mochel <mochel@digitalimplant.org> -Subject: Hold the device's parent's lock during probe and remove -Message-ID: <Pine.LNX.4.44L0.0511171633150.4465-100000@iolanthe.rowland.org> - -This patch (as604) makes the driver core hold a device's parent's lock -as well as the device's lock during calls to the probe and remove -methods in a driver. This facility is needed by USB device drivers, -owing to the peculiar way USB devices work: - - A device provides multiple interfaces, and drivers are bound - to interfaces rather than to devices; - - Nevertheless a reset, reset-configuration, suspend, or resume - affects the entire device and requires the caller to hold the - lock for the device, not just a lock for one of the interfaces. - -Since a USB driver's probe method is always called with the interface -lock held, the locking order rules (always lock parent before child) -prevent these methods from acquiring the device lock. The solution -provided here is to call all probe and remove methods, for all devices -(not just USB), with the parent lock already acquired. - -Although currently only the USB subsystem requires these changes, people -have mentioned in prior discussion that the overhead of acquiring an -extra semaphore in all the prove/remove sequences is not overly large. - -Up to now, the USB core has been using its own set of private -semaphores. A followup patch will remove them, relying entirely on the -device semaphores provided by the driver core. - -The code paths affected by this patch are: - - device_add and device_del: The USB core already holds the parent - lock, so no actual change is needed. - - driver_register and driver_unregister: The driver core will now - lock both the parent and the device before probing or removing. - - driver_bind and driver_unbind (in sysfs): These routines will - now lock both the parent and the device before binding or - unbinding. - - bus_rescan_devices: The helper routine will lock the parent - before probing a device. - -I have not tested this patch for conflicts with other subsystems. As -far as I can see, the only possibility of conflict would lie in the -bus_rescan_devices pathway, and it seems pretty remote. Nevertheless, -it would be good for this to get a lot of testing in -mm. - - -Signed-off-by: Alan Stern <stern@rowland.harvard.edu> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/base/bus.c | 15 ++++++++++++++- - drivers/base/dd.c | 15 ++++++++++++++- - 2 files changed, 28 insertions(+), 2 deletions(-) - ---- gregkh-2.6.orig/drivers/base/dd.c -+++ gregkh-2.6/drivers/base/dd.c -@@ -65,7 +65,8 @@ void device_bind_driver(struct device * - * This function returns 1 if a match is found, an error if one - * occurs (that is not -ENODEV or -ENXIO), and 0 otherwise. - * -- * This function must be called with @dev->sem held. -+ * This function must be called with @dev->sem held. When called -+ * for a USB interface, @dev->parent->sem must be held as well. - */ - int driver_probe_device(struct device_driver * drv, struct device * dev) - { -@@ -123,6 +124,8 @@ static int __device_attach(struct device - * - * Returns 1 if the device was bound to a driver; - * 0 if no matching device was found; error code otherwise. -+ * -+ * When called for a USB interface, @dev->parent->sem must be held. - */ - int device_attach(struct device * dev) - { -@@ -152,10 +155,14 @@ static int __driver_attach(struct device - * is an error. - */ - -+ if (dev->parent) /* Needed for USB */ -+ down(&dev->parent->sem); - down(&dev->sem); - if (!dev->driver) - driver_probe_device(drv, dev); - up(&dev->sem); -+ if (dev->parent) -+ up(&dev->parent->sem); - - return 0; - } -@@ -181,6 +188,8 @@ void driver_attach(struct device_driver - * Manually detach device from driver. - * - * __device_release_driver() must be called with @dev->sem held. -+ * When called for a USB interface, @dev->parent->sem must be held -+ * as well. - */ - - static void __device_release_driver(struct device * dev) -@@ -233,10 +242,14 @@ void driver_detach(struct device_driver - get_device(dev); - spin_unlock(&drv->klist_devices.k_lock); - -+ if (dev->parent) /* Needed for USB */ -+ down(&dev->parent->sem); - down(&dev->sem); - if (dev->driver == drv) - __device_release_driver(dev); - up(&dev->sem); -+ if (dev->parent) -+ up(&dev->parent->sem); - put_device(dev); - } - } ---- gregkh-2.6.orig/drivers/base/bus.c -+++ gregkh-2.6/drivers/base/bus.c -@@ -152,7 +152,11 @@ static ssize_t driver_unbind(struct devi - - dev = bus_find_device(bus, NULL, (void *)buf, driver_helper); - if (dev && dev->driver == drv) { -+ if (dev->parent) /* Needed for USB */ -+ down(&dev->parent->sem); - device_release_driver(dev); -+ if (dev->parent) -+ up(&dev->parent->sem); - err = count; - } - put_device(dev); -@@ -175,9 +179,13 @@ static ssize_t driver_bind(struct device - - dev = bus_find_device(bus, NULL, (void *)buf, driver_helper); - if (dev && dev->driver == NULL) { -+ if (dev->parent) /* Needed for USB */ -+ down(&dev->parent->sem); - down(&dev->sem); - err = driver_probe_device(drv, dev); - up(&dev->sem); -+ if (dev->parent) -+ up(&dev->parent->sem); - } - put_device(dev); - put_bus(bus); -@@ -484,8 +492,13 @@ void bus_remove_driver(struct device_dri - /* Helper for bus_rescan_devices's iter */ - static int bus_rescan_devices_helper(struct device *dev, void *data) - { -- if (!dev->driver) -+ if (!dev->driver) { -+ if (dev->parent) /* Needed for USB */ -+ down(&dev->parent->sem); - device_attach(dev); -+ if (dev->parent) -+ up(&dev->parent->sem); -+ } - return 0; - } - diff --git a/driver/hotplug-always-enabled.patch b/driver/hotplug-always-enabled.patch deleted file mode 100644 index 78133c13aa036..0000000000000 --- a/driver/hotplug-always-enabled.patch +++ /dev/null @@ -1,48 +0,0 @@ -From gregkh@suse.de Wed Nov 16 11:16:30 2005 -Date: Wed, 16 Nov 2005 11:27:07 -0800 -From: Greg Kroah-Hartman <gregkh@suse.de> -Subject: HOTPLUG: always enable the .config option, unless EMBEDDED - -With modules, dynamic /dev, and uevents, people really want -CONFIG_HOTPLUG to be enabled in their kernels. If not, they can still -disable it, but it is discouraged. - - -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> ---- - init/Kconfig | 17 +++++++++-------- - 1 file changed, 9 insertions(+), 8 deletions(-) - ---- gregkh-2.6.orig/init/Kconfig -+++ gregkh-2.6/init/Kconfig -@@ -197,14 +197,6 @@ config AUDITSYSCALL - can be used independently or with another kernel subsystem, - such as SELinux. - --config HOTPLUG -- bool "Support for hot-pluggable devices" if !ARCH_S390 -- default ARCH_S390 -- help -- This option is provided for the case where no in-kernel-tree -- modules require HOTPLUG functionality, but a module built -- outside the kernel tree does. Such modules require Y here. -- - config IKCONFIG - bool "Kernel .config support" - ---help--- -@@ -289,6 +281,15 @@ config KALLSYMS_EXTRA_PASS - you wait for kallsyms to be fixed. - - -+config HOTPLUG -+ bool "Support for hot-pluggable devices" if EMBEDDED -+ default y -+ help -+ This option is provided for the case where no hotplug or uevent -+ capabilities is wanted by the kernel. You should only consider -+ disabling this option for embedded systems that do not use modules, a -+ dynamic /dev tree, or dynamic device discovery. Just say Y. -+ - config PRINTK - default y - bool "Enable support for printk" if EMBEDDED diff --git a/driver/ide-modalias-support-for-autoloading-of-ide-cd-ide-disk.patch b/driver/ide-modalias-support-for-autoloading-of-ide-cd-ide-disk.patch deleted file mode 100644 index c75e196cf8a60..0000000000000 --- a/driver/ide-modalias-support-for-autoloading-of-ide-cd-ide-disk.patch +++ /dev/null @@ -1,181 +0,0 @@ -From kay.sievers@vrfy.org Mon Dec 12 10:16:27 2005 -Date: Mon, 12 Dec 2005 18:03:44 +0100 -From: Kay Sievers <kay.sievers@vrfy.org> -To: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> -Cc: "gregkh@suse.de" <gregkh@suse.de>, akpm@osdl.org -Subject: ide: MODALIAS support for autoloading of ide-cd, ide-disk, ... -Message-ID: <20051212170344.GA24300@vrfy.org> -Content-Disposition: inline - -IDE: MODALIAS support for autoloading of ide-cd, ide-disk, ... - -Add MODULE_ALIAS to IDE midlayer modules: ide-disk, ide-cd, ide-floppy and -ide-tape, to autoload these modules depending on the probed media type of -the IDE device. - -It is used by udev and replaces the former agent shell script of the hotplug -package, which was required to lookup the media type in the proc filesystem. -Using proc was racy, cause the media file is created after the hotplug event -is sent out. - -The module autoloading does not take any effect, until something like the -following udev rule is configured: - SUBSYSTEM=="ide", ACTION=="add", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}" - -The module ide-scsi will not be autoloaded, cause it requires manual -configuration. It can't be, and never was supported for automatic setup in -the hotplug package. Adding a MODULE_ALIAS to ide-scsi for all supported -media types, would just lead to a default blacklist entry anyway. - - $ modinfo ide-disk - filename: /lib/modules/2.6.15-rc4-g1b0997f5/kernel/drivers/ide/ide-disk.ko - description: ATA DISK Driver - alias: ide:*m-disk* - license: GPL - ... - - $ modprobe -vn ide:m-disk - insmod /lib/modules/2.6.15-rc4-g1b0997f5/kernel/drivers/ide/ide-disk.ko - - $ cat /sys/bus/ide/devices/0.0/modalias - ide:m-disk - -It also adds attributes to the IDE device: - $ tree /sys/bus/ide/devices/0.0/ - /sys/bus/ide/devices/0.0/ - |-- bus -> ../../../../../../../bus/ide - |-- drivename - |-- media - |-- modalias - |-- power - | |-- state - | `-- wakeup - `-- uevent - - $ cat /sys/bus/ide/devices/0.0/{modalias,drivename,media} - ide:m-disk - hda - disk - -Signed-off-by: Kay Sievers <kay.sievers@suse.de> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> ---- - drivers/ide/ide-cd.c | 1 - drivers/ide/ide-disk.c | 1 - drivers/ide/ide-floppy.c | 1 - drivers/ide/ide-tape.c | 1 - drivers/ide/ide.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 64 insertions(+) - ---- gregkh-2.6.orig/drivers/ide/ide-cd.c -+++ gregkh-2.6/drivers/ide/ide-cd.c -@@ -3509,6 +3509,7 @@ static int __init ide_cdrom_init(void) - return driver_register(&ide_cdrom_driver.gen_driver); - } - -+MODULE_ALIAS("ide:*m-cdrom*"); - module_init(ide_cdrom_init); - module_exit(ide_cdrom_exit); - MODULE_LICENSE("GPL"); ---- gregkh-2.6.orig/drivers/ide/ide-disk.c -+++ gregkh-2.6/drivers/ide/ide-disk.c -@@ -1271,6 +1271,7 @@ static int __init idedisk_init(void) - return driver_register(&idedisk_driver.gen_driver); - } - -+MODULE_ALIAS("ide:*m-disk*"); - module_init(idedisk_init); - module_exit(idedisk_exit); - MODULE_LICENSE("GPL"); ---- gregkh-2.6.orig/drivers/ide/ide-floppy.c -+++ gregkh-2.6/drivers/ide/ide-floppy.c -@@ -2197,6 +2197,7 @@ static int __init idefloppy_init(void) - return driver_register(&idefloppy_driver.gen_driver); - } - -+MODULE_ALIAS("ide:*m-floppy*"); - module_init(idefloppy_init); - module_exit(idefloppy_exit); - MODULE_LICENSE("GPL"); ---- gregkh-2.6.orig/drivers/ide/ide-tape.c -+++ gregkh-2.6/drivers/ide/ide-tape.c -@@ -4947,6 +4947,7 @@ out: - return error; - } - -+MODULE_ALIAS("ide:*m-tape*"); - module_init(idetape_init); - module_exit(idetape_exit); - MODULE_ALIAS_CHARDEV_MAJOR(IDETAPE_MAJOR); ---- gregkh-2.6.orig/drivers/ide/ide.c -+++ gregkh-2.6/drivers/ide/ide.c -@@ -1904,9 +1904,69 @@ static int ide_bus_match(struct device * - return 1; - } - -+static char *media_string(ide_drive_t *drive) -+{ -+ switch (drive->media) { -+ case ide_disk: -+ return "disk"; -+ case ide_cdrom: -+ return "cdrom"; -+ case ide_tape: -+ return "tape"; -+ case ide_floppy: -+ return "floppy"; -+ default: -+ return "UNKNOWN"; -+ } -+} -+ -+static ssize_t media_show(struct device *dev, struct device_attribute *attr, char *buf) -+{ -+ ide_drive_t *drive = to_ide_device(dev); -+ return sprintf(buf, "%s\n", media_string(drive)); -+} -+ -+static ssize_t drivename_show(struct device *dev, struct device_attribute *attr, char *buf) -+{ -+ ide_drive_t *drive = to_ide_device(dev); -+ return sprintf(buf, "%s\n", drive->name); -+} -+ -+static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf) -+{ -+ ide_drive_t *drive = to_ide_device(dev); -+ return sprintf(buf, "ide:m-%s\n", media_string(drive)); -+} -+ -+static struct device_attribute ide_dev_attrs[] = { -+ __ATTR_RO(media), -+ __ATTR_RO(drivename), -+ __ATTR_RO(modalias), -+ __ATTR_NULL -+}; -+ -+static int ide_uevent(struct device *dev, char **envp, int num_envp, -+ char *buffer, int buffer_size) -+{ -+ ide_drive_t *drive = to_ide_device(dev); -+ int i = 0; -+ int length = 0; -+ -+ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length, -+ "MEDIA=%s", media_string(drive)); -+ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length, -+ "DRIVENAME=%s", drive->name); -+ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length, -+ "MODALIAS=ide:m-%s", media_string(drive)); -+ envp[i] = NULL; -+ return 0; -+} -+ - struct bus_type ide_bus_type = { - .name = "ide", - .match = ide_bus_match, -+ .uevent = ide_uevent, -+ .dev_attrs = ide_dev_attrs, - .suspend = generic_ide_suspend, - .resume = generic_ide_resume, - }; diff --git a/driver/input-add-modalias-support.patch b/driver/input-add-modalias-support.patch deleted file mode 100644 index 1745486251186..0000000000000 --- a/driver/input-add-modalias-support.patch +++ /dev/null @@ -1,289 +0,0 @@ -From kay.sievers@vrfy.org Wed Dec 7 12:41:38 2005 -Date: Wed, 7 Dec 2005 21:40:34 +0100 -From: Kay Sievers <kay.sievers@vrfy.org> -To: Greg KH <greg@kroah.com> -Subject: Input: add modalias support -Message-ID: <20051207204034.GA1777@vrfy.org> -Content-Disposition: inline - -From: Rusty Russell <rusty@rustcorp.com.au> - -Here's the patch for modalias support for input classes. It uses -comma-separated numbers, and doesn't describe all the potential keys (no -module currently cares, and that would make the strings huge). The -changes to input.h are to move the definitions needed by file2alias -outside __KERNEL__. I chose not to move those definitions to -mod_devicetable.h, because there are so many that it might break compile -of something else in the kernel. - -The rest is fairly straightforward. - -Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> -CC: Kay Sievers <kay.sievers@vrfy.org> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> ---- - drivers/input/input.c | 39 +++++++++++++++++++++++ - include/linux/input.h | 79 ++++++++++++++++++++++++----------------------- - scripts/mod/file2alias.c | 62 ++++++++++++++++++++++++++++++++++++ - 3 files changed, 141 insertions(+), 39 deletions(-) - ---- gregkh-2.6.orig/drivers/input/input.c -+++ gregkh-2.6/drivers/input/input.c -@@ -528,10 +528,49 @@ INPUT_DEV_STRING_ATTR_SHOW(name); - INPUT_DEV_STRING_ATTR_SHOW(phys); - INPUT_DEV_STRING_ATTR_SHOW(uniq); - -+static int print_modalias_bits(char *buf, char prefix, unsigned long *arr, -+ unsigned int min, unsigned int max) -+{ -+ int len, i; -+ -+ len = sprintf(buf, "%c", prefix); -+ for (i = min; i < max; i++) -+ if (arr[LONG(i)] & BIT(i)) -+ len += sprintf(buf+len, "%X,", i); -+ return len; -+} -+ -+static ssize_t input_dev_show_modalias(struct class_device *dev, char *buf) -+{ -+ struct input_dev *id = to_input_dev(dev); -+ ssize_t len = 0; -+ -+ len += sprintf(buf+len, "input:b%04Xv%04Xp%04Xe%04X-", -+ id->id.bustype, -+ id->id.vendor, -+ id->id.product, -+ id->id.version); -+ -+ len += print_modalias_bits(buf+len, 'e', id->evbit, 0, EV_MAX); -+ len += print_modalias_bits(buf+len, 'k', id->keybit, -+ KEY_MIN_INTERESTING, KEY_MAX); -+ len += print_modalias_bits(buf+len, 'r', id->relbit, 0, REL_MAX); -+ len += print_modalias_bits(buf+len, 'a', id->absbit, 0, ABS_MAX); -+ len += print_modalias_bits(buf+len, 'm', id->mscbit, 0, MSC_MAX); -+ len += print_modalias_bits(buf+len, 'l', id->ledbit, 0, LED_MAX); -+ len += print_modalias_bits(buf+len, 's', id->sndbit, 0, SND_MAX); -+ len += print_modalias_bits(buf+len, 'f', id->ffbit, 0, FF_MAX); -+ len += print_modalias_bits(buf+len, 'w', id->swbit, 0, SW_MAX); -+ len += sprintf(buf+len, "\n"); -+ return len; -+} -+static CLASS_DEVICE_ATTR(modalias, S_IRUGO, input_dev_show_modalias, NULL); -+ - static struct attribute *input_dev_attrs[] = { - &class_device_attr_name.attr, - &class_device_attr_phys.attr, - &class_device_attr_uniq.attr, -+ &class_device_attr_modalias.attr, - NULL - }; - ---- gregkh-2.6.orig/include/linux/input.h -+++ gregkh-2.6/include/linux/input.h -@@ -18,6 +18,7 @@ - #include <sys/ioctl.h> - #include <asm/types.h> - #endif -+#include <linux/mod_devicetable.h> - - /* - * The event structure itself -@@ -511,6 +512,8 @@ struct input_absinfo { - #define KEY_FN_S 0x1e3 - #define KEY_FN_B 0x1e4 - -+/* We avoid low common keys in module aliases so they don't get huge. */ -+#define KEY_MIN_INTERESTING KEY_MUTE - #define KEY_MAX 0x1ff - - /* -@@ -793,6 +796,44 @@ struct ff_effect { - - #define FF_MAX 0x7f - -+struct input_device_id { -+ -+ kernel_ulong_t flags; -+ -+ struct input_id id; -+ -+ kernel_ulong_t evbit[EV_MAX/BITS_PER_LONG+1]; -+ kernel_ulong_t keybit[KEY_MAX/BITS_PER_LONG+1]; -+ kernel_ulong_t relbit[REL_MAX/BITS_PER_LONG+1]; -+ kernel_ulong_t absbit[ABS_MAX/BITS_PER_LONG+1]; -+ kernel_ulong_t mscbit[MSC_MAX/BITS_PER_LONG+1]; -+ kernel_ulong_t ledbit[LED_MAX/BITS_PER_LONG+1]; -+ kernel_ulong_t sndbit[SND_MAX/BITS_PER_LONG+1]; -+ kernel_ulong_t ffbit[FF_MAX/BITS_PER_LONG+1]; -+ kernel_ulong_t swbit[SW_MAX/BITS_PER_LONG+1]; -+ -+ kernel_ulong_t driver_info; -+}; -+ -+/* -+ * Structure for hotplug & device<->driver matching. -+ */ -+ -+#define INPUT_DEVICE_ID_MATCH_BUS 1 -+#define INPUT_DEVICE_ID_MATCH_VENDOR 2 -+#define INPUT_DEVICE_ID_MATCH_PRODUCT 4 -+#define INPUT_DEVICE_ID_MATCH_VERSION 8 -+ -+#define INPUT_DEVICE_ID_MATCH_EVBIT 0x010 -+#define INPUT_DEVICE_ID_MATCH_KEYBIT 0x020 -+#define INPUT_DEVICE_ID_MATCH_RELBIT 0x040 -+#define INPUT_DEVICE_ID_MATCH_ABSBIT 0x080 -+#define INPUT_DEVICE_ID_MATCH_MSCIT 0x100 -+#define INPUT_DEVICE_ID_MATCH_LEDBIT 0x200 -+#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x400 -+#define INPUT_DEVICE_ID_MATCH_FFBIT 0x800 -+#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000 -+ - #ifdef __KERNEL__ - - /* -@@ -901,49 +942,11 @@ struct input_dev { - }; - #define to_input_dev(d) container_of(d, struct input_dev, cdev) - --/* -- * Structure for hotplug & device<->driver matching. -- */ -- --#define INPUT_DEVICE_ID_MATCH_BUS 1 --#define INPUT_DEVICE_ID_MATCH_VENDOR 2 --#define INPUT_DEVICE_ID_MATCH_PRODUCT 4 --#define INPUT_DEVICE_ID_MATCH_VERSION 8 -- --#define INPUT_DEVICE_ID_MATCH_EVBIT 0x010 --#define INPUT_DEVICE_ID_MATCH_KEYBIT 0x020 --#define INPUT_DEVICE_ID_MATCH_RELBIT 0x040 --#define INPUT_DEVICE_ID_MATCH_ABSBIT 0x080 --#define INPUT_DEVICE_ID_MATCH_MSCIT 0x100 --#define INPUT_DEVICE_ID_MATCH_LEDBIT 0x200 --#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x400 --#define INPUT_DEVICE_ID_MATCH_FFBIT 0x800 --#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000 -- - #define INPUT_DEVICE_ID_MATCH_DEVICE\ - (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT) - #define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION\ - (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION) - --struct input_device_id { -- -- unsigned long flags; -- -- struct input_id id; -- -- unsigned long evbit[NBITS(EV_MAX)]; -- unsigned long keybit[NBITS(KEY_MAX)]; -- unsigned long relbit[NBITS(REL_MAX)]; -- unsigned long absbit[NBITS(ABS_MAX)]; -- unsigned long mscbit[NBITS(MSC_MAX)]; -- unsigned long ledbit[NBITS(LED_MAX)]; -- unsigned long sndbit[NBITS(SND_MAX)]; -- unsigned long ffbit[NBITS(FF_MAX)]; -- unsigned long swbit[NBITS(SW_MAX)]; -- -- unsigned long driver_info; --}; -- - struct input_handle; - - struct input_handler { ---- gregkh-2.6.orig/scripts/mod/file2alias.c -+++ gregkh-2.6/scripts/mod/file2alias.c -@@ -16,8 +16,10 @@ - * use either stdint.h or inttypes.h for the rest. */ - #if KERNEL_ELFCLASS == ELFCLASS32 - typedef Elf32_Addr kernel_ulong_t; -+#define BITS_PER_LONG 32 - #else - typedef Elf64_Addr kernel_ulong_t; -+#define BITS_PER_LONG 64 - #endif - #ifdef __sun__ - #include <inttypes.h> -@@ -35,6 +37,7 @@ typedef unsigned char __u8; - * even potentially has different endianness and word sizes, since - * we handle those differences explicitly below */ - #include "../../include/linux/mod_devicetable.h" -+#include "../../include/linux/input.h" - - #define ADD(str, sep, cond, field) \ - do { \ -@@ -366,6 +369,61 @@ static int do_i2c_entry(const char *file - return 1; - } - -+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) -+ -+static void do_input(char *alias, -+ kernel_ulong_t *arr, unsigned int min, unsigned int max) -+{ -+ unsigned int i; -+ for (i = min; i < max; i++) { -+ if (arr[i/BITS_PER_LONG] & (1 << (i%BITS_PER_LONG))) -+ sprintf(alias+strlen(alias), "%X,*", i); -+ } -+} -+ -+/* input:b0v0p0e0-eXkXrXaXmXlXsXfXwX where X is comma-separated %02X. */ -+static int do_input_entry(const char *filename, struct input_device_id *id, -+ char *alias) -+{ -+ sprintf(alias, "input:"); -+ -+ ADD(alias, "b", id->flags&INPUT_DEVICE_ID_MATCH_BUS, id->id.bustype); -+ ADD(alias, "v", id->flags&INPUT_DEVICE_ID_MATCH_VENDOR, id->id.vendor); -+ ADD(alias, "p", id->flags&INPUT_DEVICE_ID_MATCH_PRODUCT, -+ id->id.product); -+ ADD(alias, "e", id->flags&INPUT_DEVICE_ID_MATCH_VERSION, -+ id->id.version); -+ -+ sprintf(alias + strlen(alias), "-e*"); -+ if (id->flags&INPUT_DEVICE_ID_MATCH_EVBIT) -+ do_input(alias, id->evbit, 0, EV_MAX); -+ sprintf(alias + strlen(alias), "k*"); -+ if (id->flags&INPUT_DEVICE_ID_MATCH_KEYBIT) -+ do_input(alias, id->keybit, KEY_MIN_INTERESTING, KEY_MAX); -+ sprintf(alias + strlen(alias), "r*"); -+ if (id->flags&INPUT_DEVICE_ID_MATCH_RELBIT) -+ do_input(alias, id->relbit, 0, REL_MAX); -+ sprintf(alias + strlen(alias), "a*"); -+ if (id->flags&INPUT_DEVICE_ID_MATCH_ABSBIT) -+ do_input(alias, id->absbit, 0, ABS_MAX); -+ sprintf(alias + strlen(alias), "m*"); -+ if (id->flags&INPUT_DEVICE_ID_MATCH_MSCIT) -+ do_input(alias, id->mscbit, 0, MSC_MAX); -+ sprintf(alias + strlen(alias), "l*"); -+ if (id->flags&INPUT_DEVICE_ID_MATCH_LEDBIT) -+ do_input(alias, id->ledbit, 0, LED_MAX); -+ sprintf(alias + strlen(alias), "s*"); -+ if (id->flags&INPUT_DEVICE_ID_MATCH_SNDBIT) -+ do_input(alias, id->sndbit, 0, SND_MAX); -+ sprintf(alias + strlen(alias), "f*"); -+ if (id->flags&INPUT_DEVICE_ID_MATCH_FFBIT) -+ do_input(alias, id->ffbit, 0, SND_MAX); -+ sprintf(alias + strlen(alias), "w*"); -+ if (id->flags&INPUT_DEVICE_ID_MATCH_SWBIT) -+ do_input(alias, id->swbit, 0, SW_MAX); -+ return 1; -+} -+ - /* Ignore any prefix, eg. v850 prepends _ */ - static inline int sym_is(const char *symbol, const char *name) - { -@@ -453,7 +511,9 @@ void handle_moddevtable(struct module *m - else if (sym_is(symname, "__mod_i2c_device_table")) - do_table(symval, sym->st_size, sizeof(struct i2c_device_id), - do_i2c_entry, mod); -- -+ else if (sym_is(symname, "__mod_input_device_table")) -+ do_table(symval, sym->st_size, sizeof(struct input_device_id), -+ do_input_entry, mod); - } - - /* Now add out buffered information to the generated C source */ diff --git a/driver/input-fix-add-modalias-support-build-error.patch b/driver/input-fix-add-modalias-support-build-error.patch deleted file mode 100644 index 7037f5471b4db..0000000000000 --- a/driver/input-fix-add-modalias-support-build-error.patch +++ /dev/null @@ -1,38 +0,0 @@ -From rusty@rustcorp.com.au Sat Dec 10 03:52:45 2005 -From: Rusty Russell <rusty@rustcorp.com.au> -Subject: Input: fix add modalias support build error -To: Andrew Morton <akpm@osdl.org> -Cc: Greg KH <greg@kroah.com> -Date: Sat, 10 Dec 2005 22:48:20 +1100 -Message-Id: <1134215301.30143.15.camel@localhost.localdomain> - -Fix build when scripts/mod/file2alias.c includes linux/input.h, which -tries to include /usr/include/linux/mod_devicetable.h: - - In file included from scripts/mod/file2alias.c:40: - include/linux/input.h:21:35: linux/mod_devicetable.h: No such file or directory - make[2]: *** [scripts/mod/file2alias.o] Error 1 - -Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - include/linux/input.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- gregkh-2.6.orig/include/linux/input.h -+++ gregkh-2.6/include/linux/input.h -@@ -13,12 +13,12 @@ - #include <linux/time.h> - #include <linux/list.h> - #include <linux/device.h> -+#include <linux/mod_devicetable.h> - #else - #include <sys/time.h> - #include <sys/ioctl.h> - #include <asm/types.h> - #endif --#include <linux/mod_devicetable.h> - - /* - * The event structure itself diff --git a/driver/kill-hotplug-word-from-driver-core.patch b/driver/kill-hotplug-word-from-driver-core.patch deleted file mode 100644 index fd18a8c467f64..0000000000000 --- a/driver/kill-hotplug-word-from-driver-core.patch +++ /dev/null @@ -1,2079 +0,0 @@ -Author: Kay Sievers <kay.sievers@suse.de> -Date: Wed Nov 16 09:00:00 2005 +0100 - -driver core: replace "hotplug" by "uevent" - -Leave the overloaded "hotplug" word to susbsystems which are handling -real devices. The driver core does not "plug" anything, it just exports -the state to userspace and generates events. - -Signed-off-by: Kay Sievers <kay.sievers@suse.de> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> ---- - Documentation/powerpc/eeh-pci-error-recovery.txt | 31 ++++---- - arch/powerpc/kernel/vio.c | 2 - block/genhd.c | 48 ++++++------ - drivers/acpi/container.c | 8 +- - drivers/acpi/processor_core.c | 8 +- - drivers/acpi/scan.c | 14 +-- - drivers/base/Kconfig | 4 - - drivers/base/class.c | 68 +++++++++--------- - drivers/base/core.c | 42 +++++------ - drivers/base/cpu.c | 4 - - drivers/base/firmware_class.c | 45 +++++------- - drivers/base/memory.c | 12 +-- - drivers/ieee1394/nodemgr.c | 20 ++--- - drivers/infiniband/core/sysfs.c | 16 ++-- - drivers/input/input.c | 14 +-- - drivers/input/serio/serio.c | 22 ++--- - drivers/macintosh/macio_asic.c | 4 - - drivers/mmc/mmc_sysfs.c | 4 - - drivers/pci/hotplug.c | 44 +++++------ - drivers/pci/pci-driver.c | 6 - - drivers/pci/pci.h | 4 - - drivers/pcmcia/cs.c | 10 +- - drivers/pcmcia/ds.c | 50 ++++++------- - drivers/scsi/ipr.c | 2 - drivers/usb/core/usb.c | 86 ++++++++++------------- - drivers/usb/host/hc_crisv10.c | 2 - drivers/w1/w1.c | 14 +-- - fs/partitions/check.c | 6 - - include/linux/device.h | 14 +-- - include/linux/firmware.h | 2 - include/linux/kobject.h | 40 +++++----- - include/linux/sysctl.h | 2 - include/linux/usb.h | 2 - kernel/ksysfs.c | 14 +-- - kernel/sysctl.c | 4 - - lib/kobject.c | 4 - - lib/kobject_uevent.c | 64 ++++++++--------- - net/bluetooth/hci_sysfs.c | 4 - - net/bridge/br_sysfs_if.c | 4 - - net/core/net-sysfs.c | 8 +- - 40 files changed, 373 insertions(+), 379 deletions(-) - ---- gregkh-2.6.orig/Documentation/powerpc/eeh-pci-error-recovery.txt -+++ gregkh-2.6/Documentation/powerpc/eeh-pci-error-recovery.txt -@@ -115,7 +115,7 @@ Current PPC64 Linux EEH Implementation - At this time, a generic EEH recovery mechanism has been implemented, - so that individual device drivers do not need to be modified to support - EEH recovery. This generic mechanism piggy-backs on the PCI hotplug --infrastructure, and percolates events up through the hotplug/udev -+infrastructure, and percolates events up through the userspace/udev - infrastructure. Followiing is a detailed description of how this is - accomplished. - -@@ -172,7 +172,7 @@ A handler for the EEH notifier_block eve - drivers/pci/hotplug/pSeries_pci.c, called handle_eeh_events(). - It saves the device BAR's and then calls rpaphp_unconfig_pci_adapter(). - This last call causes the device driver for the card to be stopped, --which causes hotplug events to go out to user space. This triggers -+which causes uevents to go out to user space. This triggers - user-space scripts that might issue commands such as "ifdown eth0" - for ethernet cards, and so on. This handler then sleeps for 5 seconds, - hoping to give the user-space scripts enough time to complete. -@@ -258,29 +258,30 @@ rpa_php_unconfig_pci_adapter() { - calls - pci_destroy_dev (struct pci_dev *) { - calls -- device_unregister (&dev->dev) { // in /drivers/base/core.c -+ device_unregister (&dev->dev) { // in /drivers/base/core.c - calls -- device_del(struct device * dev) { // in /drivers/base/core.c -+ device_del(struct device * dev) { // in /drivers/base/core.c - calls -- kobject_del() { //in /libs/kobject.c -+ kobject_del() { //in /libs/kobject.c - calls -- kobject_hotplug() { // in /libs/kobject.c -+ kobject_uevent() { // in /libs/kobject.c - calls -- kset_hotplug() { // in /lib/kobject.c -+ kset_uevent() { // in /lib/kobject.c - calls -- kset->hotplug_ops->hotplug() which is really just -+ kset->uevent_ops->uevent() // which is really just - a call to -- dev_hotplug() { // in /drivers/base/core.c -+ dev_uevent() { // in /drivers/base/core.c - calls -- dev->bus->hotplug() which is really just a call to -- pci_hotplug () { // in drivers/pci/hotplug.c -+ dev->bus->uevent() which is really just a call to -+ pci_uevent () { // in drivers/pci/hotplug.c - which prints device name, etc.... - } - } -- then kset_hotplug() calls -- call_usermodehelper () with -- argv[0]=hotplug_path[] which is "/sbin/hotplug" -- --> event to userspace, -+ then kobject_uevent() sends a netlink uevent to userspace -+ --> userspace uevent -+ (during early boot, nobody listens to netlink events and -+ kobject_uevent() executes uevent_helper[], which runs the -+ event process /sbin/hotplug) - } - } - kobject_del() then calls sysfs_remove_dir(), which would ---- gregkh-2.6.orig/block/genhd.c -+++ gregkh-2.6/block/genhd.c -@@ -358,7 +358,7 @@ static struct sysfs_ops disk_sysfs_ops = - static ssize_t disk_uevent_store(struct gendisk * disk, - const char *buf, size_t count) - { -- kobject_hotplug(&disk->kobj, KOBJ_ADD); -+ kobject_uevent(&disk->kobj, KOBJ_ADD); - return count; - } - static ssize_t disk_dev_read(struct gendisk * disk, char *page) -@@ -455,14 +455,14 @@ static struct kobj_type ktype_block = { - - extern struct kobj_type ktype_part; - --static int block_hotplug_filter(struct kset *kset, struct kobject *kobj) -+static int block_uevent_filter(struct kset *kset, struct kobject *kobj) - { - struct kobj_type *ktype = get_ktype(kobj); - - return ((ktype == &ktype_block) || (ktype == &ktype_part)); - } - --static int block_hotplug(struct kset *kset, struct kobject *kobj, char **envp, -+static int block_uevent(struct kset *kset, struct kobject *kobj, char **envp, - int num_envp, char *buffer, int buffer_size) - { - struct kobj_type *ktype = get_ktype(kobj); -@@ -474,40 +474,40 @@ static int block_hotplug(struct kset *ks - - if (ktype == &ktype_block) { - disk = container_of(kobj, struct gendisk, kobj); -- add_hotplug_env_var(envp, num_envp, &i, buffer, buffer_size, -- &length, "MINOR=%u", disk->first_minor); -+ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, -+ &length, "MINOR=%u", disk->first_minor); - } else if (ktype == &ktype_part) { - disk = container_of(kobj->parent, struct gendisk, kobj); - part = container_of(kobj, struct hd_struct, kobj); -- add_hotplug_env_var(envp, num_envp, &i, buffer, buffer_size, -- &length, "MINOR=%u", -- disk->first_minor + part->partno); -+ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, -+ &length, "MINOR=%u", -+ disk->first_minor + part->partno); - } else - return 0; - -- add_hotplug_env_var(envp, num_envp, &i, buffer, buffer_size, &length, -- "MAJOR=%u", disk->major); -+ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length, -+ "MAJOR=%u", disk->major); - - /* add physical device, backing this device */ - physdev = disk->driverfs_dev; - if (physdev) { - char *path = kobject_get_path(&physdev->kobj, GFP_KERNEL); - -- add_hotplug_env_var(envp, num_envp, &i, buffer, buffer_size, -- &length, "PHYSDEVPATH=%s", path); -+ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, -+ &length, "PHYSDEVPATH=%s", path); - kfree(path); - - if (physdev->bus) -- add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "PHYSDEVBUS=%s", -- physdev->bus->name); -+ add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "PHYSDEVBUS=%s", -+ physdev->bus->name); - - if (physdev->driver) -- add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "PHYSDEVDRIVER=%s", -- physdev->driver->name); -+ add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "PHYSDEVDRIVER=%s", -+ physdev->driver->name); - } - - /* terminate, set to next free slot, shrink available space */ -@@ -520,13 +520,13 @@ static int block_hotplug(struct kset *ks - return 0; - } - --static struct kset_hotplug_ops block_hotplug_ops = { -- .filter = block_hotplug_filter, -- .hotplug = block_hotplug, -+static struct kset_uevent_ops block_uevent_ops = { -+ .filter = block_uevent_filter, -+ .uevent = block_uevent, - }; - - /* declare block_subsys. */ --static decl_subsys(block, &ktype_block, &block_hotplug_ops); -+static decl_subsys(block, &ktype_block, &block_uevent_ops); - - - /* ---- gregkh-2.6.orig/drivers/acpi/container.c -+++ gregkh-2.6/drivers/acpi/container.c -@@ -172,21 +172,21 @@ static void container_notify_cb(acpi_han - if (ACPI_FAILURE(status) || !device) { - result = container_device_add(&device, handle); - if (!result) -- kobject_hotplug(&device->kobj, -- KOBJ_ONLINE); -+ kobject_uevent(&device->kobj, -+ KOBJ_ONLINE); - else - printk("Failed to add container\n"); - } - } else { - if (ACPI_SUCCESS(status)) { - /* device exist and this is a remove request */ -- kobject_hotplug(&device->kobj, KOBJ_OFFLINE); -+ kobject_uevent(&device->kobj, KOBJ_OFFLINE); - } - } - break; - case ACPI_NOTIFY_EJECT_REQUEST: - if (!acpi_bus_get_device(handle, &device) && device) { -- kobject_hotplug(&device->kobj, KOBJ_OFFLINE); -+ kobject_uevent(&device->kobj, KOBJ_OFFLINE); - } - break; - default: ---- gregkh-2.6.orig/drivers/acpi/processor_core.c -+++ gregkh-2.6/drivers/acpi/processor_core.c -@@ -748,7 +748,7 @@ int acpi_processor_device_add(acpi_handl - return_VALUE(-ENODEV); - - if ((pr->id >= 0) && (pr->id < NR_CPUS)) { -- kobject_hotplug(&(*device)->kobj, KOBJ_ONLINE); -+ kobject_uevent(&(*device)->kobj, KOBJ_ONLINE); - } - return_VALUE(0); - } -@@ -788,13 +788,13 @@ acpi_processor_hotplug_notify(acpi_handl - } - - if (pr->id >= 0 && (pr->id < NR_CPUS)) { -- kobject_hotplug(&device->kobj, KOBJ_OFFLINE); -+ kobject_uevent(&device->kobj, KOBJ_OFFLINE); - break; - } - - result = acpi_processor_start(device); - if ((!result) && ((pr->id >= 0) && (pr->id < NR_CPUS))) { -- kobject_hotplug(&device->kobj, KOBJ_ONLINE); -+ kobject_uevent(&device->kobj, KOBJ_ONLINE); - } else { - ACPI_DEBUG_PRINT((ACPI_DB_ERROR, - "Device [%s] failed to start\n", -@@ -818,7 +818,7 @@ acpi_processor_hotplug_notify(acpi_handl - } - - if ((pr->id < NR_CPUS) && (cpu_present(pr->id))) -- kobject_hotplug(&device->kobj, KOBJ_OFFLINE); -+ kobject_uevent(&device->kobj, KOBJ_OFFLINE); - break; - default: - ACPI_DEBUG_PRINT((ACPI_DB_INFO, ---- gregkh-2.6.orig/drivers/acpi/scan.c -+++ gregkh-2.6/drivers/acpi/scan.c -@@ -78,7 +78,7 @@ static struct kobj_type ktype_acpi_ns = - .release = acpi_device_release, - }; - --static int namespace_hotplug(struct kset *kset, struct kobject *kobj, -+static int namespace_uevent(struct kset *kset, struct kobject *kobj, - char **envp, int num_envp, char *buffer, - int buffer_size) - { -@@ -89,8 +89,8 @@ static int namespace_hotplug(struct kset - if (!dev->driver) - return 0; - -- if (add_hotplug_env_var(envp, num_envp, &i, buffer, buffer_size, &len, -- "PHYSDEVDRIVER=%s", dev->driver->name)) -+ if (add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len, -+ "PHYSDEVDRIVER=%s", dev->driver->name)) - return -ENOMEM; - - envp[i] = NULL; -@@ -98,8 +98,8 @@ static int namespace_hotplug(struct kset - return 0; - } - --static struct kset_hotplug_ops namespace_hotplug_ops = { -- .hotplug = &namespace_hotplug, -+static struct kset_uevent_ops namespace_uevent_ops = { -+ .uevent = &namespace_uevent, - }; - - static struct kset acpi_namespace_kset = { -@@ -108,7 +108,7 @@ static struct kset acpi_namespace_kset = - }, - .subsys = &acpi_subsys, - .ktype = &ktype_acpi_ns, -- .hotplug_ops = &namespace_hotplug_ops, -+ .uevent_ops = &namespace_uevent_ops, - }; - - static void acpi_device_register(struct acpi_device *device, -@@ -347,7 +347,7 @@ static int acpi_bus_get_wakeup_device_fl - } - - /* -------------------------------------------------------------------------- -- ACPI hotplug sysfs device file support -+ ACPI sysfs device file support - -------------------------------------------------------------------------- */ - static ssize_t acpi_eject_store(struct acpi_device *device, - const char *buf, size_t count); ---- gregkh-2.6.orig/drivers/base/Kconfig -+++ gregkh-2.6/drivers/base/Kconfig -@@ -19,11 +19,11 @@ config PREVENT_FIRMWARE_BUILD - If unsure say Y here. - - config FW_LOADER -- tristate "Hotplug firmware loading support" -+ tristate "Userspace firmware loading support" - select HOTPLUG - ---help--- - This option is provided for the case where no in-kernel-tree modules -- require hotplug firmware loading support, but a module built outside -+ require userspace firmware loading support, but a module built outside - the kernel tree does. - - config DEBUG_DRIVER ---- gregkh-2.6.orig/drivers/base/class.c -+++ gregkh-2.6/drivers/base/class.c -@@ -178,7 +178,7 @@ static void class_device_create_release( - } - - /* needed to allow these devices to have parent class devices */ --static int class_device_create_hotplug(struct class_device *class_dev, -+static int class_device_create_uevent(struct class_device *class_dev, - char **envp, int num_envp, - char *buffer, int buffer_size) - { -@@ -331,7 +331,7 @@ static struct kobj_type ktype_class_devi - .release = class_dev_release, - }; - --static int class_hotplug_filter(struct kset *kset, struct kobject *kobj) -+static int class_uevent_filter(struct kset *kset, struct kobject *kobj) - { - struct kobj_type *ktype = get_ktype(kobj); - -@@ -343,14 +343,14 @@ static int class_hotplug_filter(struct k - return 0; - } - --static const char *class_hotplug_name(struct kset *kset, struct kobject *kobj) -+static const char *class_uevent_name(struct kset *kset, struct kobject *kobj) - { - struct class_device *class_dev = to_class_dev(kobj); - - return class_dev->class->name; - } - --static int class_hotplug(struct kset *kset, struct kobject *kobj, char **envp, -+static int class_uevent(struct kset *kset, struct kobject *kobj, char **envp, - int num_envp, char *buffer, int buffer_size) - { - struct class_device *class_dev = to_class_dev(kobj); -@@ -365,29 +365,29 @@ static int class_hotplug(struct kset *ks - struct device *dev = class_dev->dev; - char *path = kobject_get_path(&dev->kobj, GFP_KERNEL); - -- add_hotplug_env_var(envp, num_envp, &i, buffer, buffer_size, -- &length, "PHYSDEVPATH=%s", path); -+ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, -+ &length, "PHYSDEVPATH=%s", path); - kfree(path); - - if (dev->bus) -- add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "PHYSDEVBUS=%s", dev->bus->name); -+ add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "PHYSDEVBUS=%s", dev->bus->name); - - if (dev->driver) -- add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "PHYSDEVDRIVER=%s", dev->driver->name); -+ add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "PHYSDEVDRIVER=%s", dev->driver->name); - } - - if (MAJOR(class_dev->devt)) { -- add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "MAJOR=%u", MAJOR(class_dev->devt)); -- -- add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "MINOR=%u", MINOR(class_dev->devt)); -+ add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "MAJOR=%u", MAJOR(class_dev->devt)); -+ -+ add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "MINOR=%u", MINOR(class_dev->devt)); - } - - /* terminate, set to next free slot, shrink available space */ -@@ -397,30 +397,30 @@ static int class_hotplug(struct kset *ks - buffer = &buffer[length]; - buffer_size -= length; - -- if (class_dev->hotplug) { -+ if (class_dev->uevent) { - /* have the class device specific function add its stuff */ -- retval = class_dev->hotplug(class_dev, envp, num_envp, -+ retval = class_dev->uevent(class_dev, envp, num_envp, - buffer, buffer_size); - if (retval) -- pr_debug("class_dev->hotplug() returned %d\n", retval); -- } else if (class_dev->class->hotplug) { -+ pr_debug("class_dev->uevent() returned %d\n", retval); -+ } else if (class_dev->class->uevent) { - /* have the class specific function add its stuff */ -- retval = class_dev->class->hotplug(class_dev, envp, num_envp, -+ retval = class_dev->class->uevent(class_dev, envp, num_envp, - buffer, buffer_size); - if (retval) -- pr_debug("class->hotplug() returned %d\n", retval); -+ pr_debug("class->uevent() returned %d\n", retval); - } - - return retval; - } - --static struct kset_hotplug_ops class_hotplug_ops = { -- .filter = class_hotplug_filter, -- .name = class_hotplug_name, -- .hotplug = class_hotplug, -+static struct kset_uevent_ops class_uevent_ops = { -+ .filter = class_uevent_filter, -+ .name = class_uevent_name, -+ .uevent = class_uevent, - }; - --static decl_subsys(class_obj, &ktype_class_device, &class_hotplug_ops); -+static decl_subsys(class_obj, &ktype_class_device, &class_uevent_ops); - - - static int class_device_add_attrs(struct class_device * cd) -@@ -464,7 +464,7 @@ static ssize_t show_dev(struct class_dev - static ssize_t store_uevent(struct class_device *class_dev, - const char *buf, size_t count) - { -- kobject_hotplug(&class_dev->kobj, KOBJ_ADD); -+ kobject_uevent(&class_dev->kobj, KOBJ_ADD); - return count; - } - -@@ -559,7 +559,7 @@ int class_device_add(struct class_device - class_name); - } - -- kobject_hotplug(&class_dev->kobj, KOBJ_ADD); -+ kobject_uevent(&class_dev->kobj, KOBJ_ADD); - - /* notify any interfaces this device is now here */ - if (parent_class) { -@@ -632,7 +632,7 @@ struct class_device *class_device_create - class_dev->class = cls; - class_dev->parent = parent; - class_dev->release = class_device_create_release; -- class_dev->hotplug = class_device_create_hotplug; -+ class_dev->uevent = class_device_create_uevent; - - va_start(args, fmt); - vsnprintf(class_dev->class_id, BUS_ID_SIZE, fmt, args); -@@ -674,7 +674,7 @@ void class_device_del(struct class_devic - class_device_remove_file(class_dev, class_dev->devt_attr); - class_device_remove_attrs(class_dev); - -- kobject_hotplug(&class_dev->kobj, KOBJ_REMOVE); -+ kobject_uevent(&class_dev->kobj, KOBJ_REMOVE); - kobject_del(&class_dev->kobj); - - class_device_put(parent_device); ---- gregkh-2.6.orig/drivers/base/core.c -+++ gregkh-2.6/drivers/base/core.c -@@ -90,7 +90,7 @@ static struct kobj_type ktype_device = { - }; - - --static int dev_hotplug_filter(struct kset *kset, struct kobject *kobj) -+static int dev_uevent_filter(struct kset *kset, struct kobject *kobj) - { - struct kobj_type *ktype = get_ktype(kobj); - -@@ -102,14 +102,14 @@ static int dev_hotplug_filter(struct kse - return 0; - } - --static const char *dev_hotplug_name(struct kset *kset, struct kobject *kobj) -+static const char *dev_uevent_name(struct kset *kset, struct kobject *kobj) - { - struct device *dev = to_dev(kobj); - - return dev->bus->name; - } - --static int dev_hotplug(struct kset *kset, struct kobject *kobj, char **envp, -+static int dev_uevent(struct kset *kset, struct kobject *kobj, char **envp, - int num_envp, char *buffer, int buffer_size) - { - struct device *dev = to_dev(kobj); -@@ -119,15 +119,15 @@ static int dev_hotplug(struct kset *kset - - /* add bus name of physical device */ - if (dev->bus) -- add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "PHYSDEVBUS=%s", dev->bus->name); -+ add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "PHYSDEVBUS=%s", dev->bus->name); - - /* add driver name of physical device */ - if (dev->driver) -- add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "PHYSDEVDRIVER=%s", dev->driver->name); -+ add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "PHYSDEVDRIVER=%s", dev->driver->name); - - /* terminate, set to next free slot, shrink available space */ - envp[i] = NULL; -@@ -136,11 +136,11 @@ static int dev_hotplug(struct kset *kset - buffer = &buffer[length]; - buffer_size -= length; - -- if (dev->bus && dev->bus->hotplug) { -+ if (dev->bus && dev->bus->uevent) { - /* have the bus specific function add its stuff */ -- retval = dev->bus->hotplug (dev, envp, num_envp, buffer, buffer_size); -+ retval = dev->bus->uevent(dev, envp, num_envp, buffer, buffer_size); - if (retval) { -- pr_debug ("%s - hotplug() returned %d\n", -+ pr_debug ("%s - uevent() returned %d\n", - __FUNCTION__, retval); - } - } -@@ -148,16 +148,16 @@ static int dev_hotplug(struct kset *kset - return retval; - } - --static struct kset_hotplug_ops device_hotplug_ops = { -- .filter = dev_hotplug_filter, -- .name = dev_hotplug_name, -- .hotplug = dev_hotplug, -+static struct kset_uevent_ops device_uevent_ops = { -+ .filter = dev_uevent_filter, -+ .name = dev_uevent_name, -+ .uevent = dev_uevent, - }; - - static ssize_t store_uevent(struct device *dev, struct device_attribute *attr, - const char *buf, size_t count) - { -- kobject_hotplug(&dev->kobj, KOBJ_ADD); -+ kobject_uevent(&dev->kobj, KOBJ_ADD); - return count; - } - -@@ -165,7 +165,7 @@ static ssize_t store_uevent(struct devic - * device_subsys - structure to be registered with kobject core. - */ - --decl_subsys(devices, &ktype_device, &device_hotplug_ops); -+decl_subsys(devices, &ktype_device, &device_uevent_ops); - - - /** -@@ -274,7 +274,7 @@ int device_add(struct device *dev) - dev->uevent_attr.store = store_uevent; - device_create_file(dev, &dev->uevent_attr); - -- kobject_hotplug(&dev->kobj, KOBJ_ADD); -+ kobject_uevent(&dev->kobj, KOBJ_ADD); - if ((error = device_pm_add(dev))) - goto PMError; - if ((error = bus_add_device(dev))) -@@ -291,7 +291,7 @@ int device_add(struct device *dev) - BusError: - device_pm_remove(dev); - PMError: -- kobject_hotplug(&dev->kobj, KOBJ_REMOVE); -+ kobject_uevent(&dev->kobj, KOBJ_REMOVE); - kobject_del(&dev->kobj); - Error: - if (parent) -@@ -374,7 +374,7 @@ void device_del(struct device * dev) - platform_notify_remove(dev); - bus_remove_device(dev); - device_pm_remove(dev); -- kobject_hotplug(&dev->kobj, KOBJ_REMOVE); -+ kobject_uevent(&dev->kobj, KOBJ_REMOVE); - kobject_del(&dev->kobj); - if (parent) - put_device(parent); ---- gregkh-2.6.orig/drivers/base/cpu.c -+++ gregkh-2.6/drivers/base/cpu.c -@@ -41,14 +41,14 @@ static ssize_t store_online(struct sys_d - case '0': - ret = cpu_down(cpu->sysdev.id); - if (!ret) -- kobject_hotplug(&dev->kobj, KOBJ_OFFLINE); -+ kobject_uevent(&dev->kobj, KOBJ_OFFLINE); - break; - case '1': - ret = smp_prepare_cpu(cpu->sysdev.id); - if (!ret) - ret = cpu_up(cpu->sysdev.id); - if (!ret) -- kobject_hotplug(&dev->kobj, KOBJ_ONLINE); -+ kobject_uevent(&dev->kobj, KOBJ_ONLINE); - break; - default: - ret = -EINVAL; ---- gregkh-2.6.orig/drivers/base/firmware_class.c -+++ gregkh-2.6/drivers/base/firmware_class.c -@@ -85,17 +85,17 @@ firmware_timeout_store(struct class *cla - static CLASS_ATTR(timeout, 0644, firmware_timeout_show, firmware_timeout_store); - - static void fw_class_dev_release(struct class_device *class_dev); --int firmware_class_hotplug(struct class_device *dev, char **envp, -+int firmware_class_uevent(struct class_device *dev, char **envp, - int num_envp, char *buffer, int buffer_size); - - static struct class firmware_class = { - .name = "firmware", -- .hotplug = firmware_class_hotplug, -+ .uevent = firmware_class_uevent, - .release = fw_class_dev_release, - }; - - int --firmware_class_hotplug(struct class_device *class_dev, char **envp, -+firmware_class_uevent(struct class_device *class_dev, char **envp, - int num_envp, char *buffer, int buffer_size) - { - struct firmware_priv *fw_priv = class_get_devdata(class_dev); -@@ -104,13 +104,12 @@ firmware_class_hotplug(struct class_devi - if (!test_bit(FW_STATUS_READY, &fw_priv->status)) - return -ENODEV; - -- if (add_hotplug_env_var(envp, num_envp, &i, buffer, buffer_size, &len, -- "FIRMWARE=%s", fw_priv->fw_id)) -+ if (add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len, -+ "FIRMWARE=%s", fw_priv->fw_id)) - return -ENOMEM; -- if (add_hotplug_env_var(envp, num_envp, &i, buffer, buffer_size, &len, -- "TIMEOUT=%i", loading_timeout)) -+ if (add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &len, -+ "TIMEOUT=%i", loading_timeout)) - return -ENOMEM; -- - envp[i] = NULL; - - return 0; -@@ -352,7 +351,7 @@ error_kfree: - - static int - fw_setup_class_device(struct firmware *fw, struct class_device **class_dev_p, -- const char *fw_name, struct device *device, int hotplug) -+ const char *fw_name, struct device *device, int uevent) - { - struct class_device *class_dev; - struct firmware_priv *fw_priv; -@@ -384,7 +383,7 @@ fw_setup_class_device(struct firmware *f - goto error_unreg; - } - -- if (hotplug) -+ if (uevent) - set_bit(FW_STATUS_READY, &fw_priv->status); - else - set_bit(FW_STATUS_READY_NOHOTPLUG, &fw_priv->status); -@@ -399,7 +398,7 @@ out: - - static int - _request_firmware(const struct firmware **firmware_p, const char *name, -- struct device *device, int hotplug) -+ struct device *device, int uevent) - { - struct class_device *class_dev; - struct firmware_priv *fw_priv; -@@ -418,19 +417,19 @@ _request_firmware(const struct firmware - } - - retval = fw_setup_class_device(firmware, &class_dev, name, device, -- hotplug); -+ uevent); - if (retval) - goto error_kfree_fw; - - fw_priv = class_get_devdata(class_dev); - -- if (hotplug) { -+ if (uevent) { - if (loading_timeout > 0) { - fw_priv->timeout.expires = jiffies + loading_timeout * HZ; - add_timer(&fw_priv->timeout); - } - -- kobject_hotplug(&class_dev->kobj, KOBJ_ADD); -+ kobject_uevent(&class_dev->kobj, KOBJ_ADD); - wait_for_completion(&fw_priv->completion); - set_bit(FW_STATUS_DONE, &fw_priv->status); - del_timer_sync(&fw_priv->timeout); -@@ -456,7 +455,7 @@ out: - } - - /** -- * request_firmware: - request firmware to hotplug and wait for it -+ * request_firmware: - send firmware request and wait for it - * @firmware_p: pointer to firmware image - * @name: name of firmware file - * @device: device for which firmware is being loaded -@@ -466,7 +465,7 @@ out: - * - * Should be called from user context where sleeping is allowed. - * -- * @name will be used as $FIRMWARE in the hotplug environment and -+ * @name will be used as $FIRMWARE in the uevent environment and - * should be distinctive enough not to be confused with any other - * firmware image for this or any other device. - **/ -@@ -474,8 +473,8 @@ int - request_firmware(const struct firmware **firmware_p, const char *name, - struct device *device) - { -- int hotplug = 1; -- return _request_firmware(firmware_p, name, device, hotplug); -+ int uevent = 1; -+ return _request_firmware(firmware_p, name, device, uevent); - } - - /** -@@ -518,7 +517,7 @@ struct firmware_work { - struct device *device; - void *context; - void (*cont)(const struct firmware *fw, void *context); -- int hotplug; -+ int uevent; - }; - - static int -@@ -533,7 +532,7 @@ request_firmware_work_func(void *arg) - } - daemonize("%s/%s", "firmware", fw_work->name); - ret = _request_firmware(&fw, fw_work->name, fw_work->device, -- fw_work->hotplug); -+ fw_work->uevent); - if (ret < 0) - fw_work->cont(NULL, fw_work->context); - else { -@@ -548,7 +547,7 @@ request_firmware_work_func(void *arg) - /** - * request_firmware_nowait: asynchronous version of request_firmware - * @module: module requesting the firmware -- * @hotplug: invokes hotplug event to copy the firmware image if this flag -+ * @uevent: sends uevent to copy the firmware image if this flag - * is non-zero else the firmware copy must be done manually. - * @name: name of firmware file - * @device: device for which firmware is being loaded -@@ -562,7 +561,7 @@ request_firmware_work_func(void *arg) - **/ - int - request_firmware_nowait( -- struct module *module, int hotplug, -+ struct module *module, int uevent, - const char *name, struct device *device, void *context, - void (*cont)(const struct firmware *fw, void *context)) - { -@@ -583,7 +582,7 @@ request_firmware_nowait( - .device = device, - .context = context, - .cont = cont, -- .hotplug = hotplug, -+ .uevent = uevent, - }; - - ret = kernel_thread(request_firmware_work_func, fw_work, ---- gregkh-2.6.orig/drivers/base/memory.c -+++ gregkh-2.6/drivers/base/memory.c -@@ -29,12 +29,12 @@ static struct sysdev_class memory_sysdev - set_kset_name(MEMORY_CLASS_NAME), - }; - --static char *memory_hotplug_name(struct kset *kset, struct kobject *kobj) -+static const char *memory_uevent_name(struct kset *kset, struct kobject *kobj) - { - return MEMORY_CLASS_NAME; - } - --static int memory_hotplug(struct kset *kset, struct kobject *kobj, char **envp, -+static int memory_uevent(struct kset *kset, struct kobject *kobj, char **envp, - int num_envp, char *buffer, int buffer_size) - { - int retval = 0; -@@ -42,9 +42,9 @@ static int memory_hotplug(struct kset *k - return retval; - } - --static struct kset_hotplug_ops memory_hotplug_ops = { -- .name = memory_hotplug_name, -- .hotplug = memory_hotplug, -+static struct kset_uevent_ops memory_uevent_ops = { -+ .name = memory_uevent_name, -+ .uevent = memory_uevent, - }; - - static struct notifier_block *memory_chain; -@@ -431,7 +431,7 @@ int __init memory_dev_init(void) - unsigned int i; - int ret; - -- memory_sysdev_class.kset.hotplug_ops = &memory_hotplug_ops; -+ memory_sysdev_class.kset.uevent_ops = &memory_uevent_ops; - ret = sysdev_class_register(&memory_sysdev_class); - - /* ---- gregkh-2.6.orig/drivers/ieee1394/nodemgr.c -+++ gregkh-2.6/drivers/ieee1394/nodemgr.c -@@ -121,8 +121,8 @@ struct host_info { - }; - - static int nodemgr_bus_match(struct device * dev, struct device_driver * drv); --static int nodemgr_hotplug(struct class_device *cdev, char **envp, int num_envp, -- char *buffer, int buffer_size); -+static int nodemgr_uevent(struct class_device *cdev, char **envp, int num_envp, -+ char *buffer, int buffer_size); - static void nodemgr_resume_ne(struct node_entry *ne); - static void nodemgr_remove_ne(struct node_entry *ne); - static struct node_entry *find_entry_by_guid(u64 guid); -@@ -162,7 +162,7 @@ static void ud_cls_release(struct class_ - static struct class nodemgr_ud_class = { - .name = "ieee1394", - .release = ud_cls_release, -- .hotplug = nodemgr_hotplug, -+ .uevent = nodemgr_uevent, - }; - - static struct hpsb_highlevel nodemgr_highlevel; -@@ -966,7 +966,7 @@ static struct unit_directory *nodemgr_pr - if (ud_child == NULL) - break; - -- /* inherit unspecified values so hotplug picks it up */ -+ /* inherit unspecified values, the driver core picks it up */ - if ((ud->flags & UNIT_DIRECTORY_MODEL_ID) && - !(ud_child->flags & UNIT_DIRECTORY_MODEL_ID)) - { -@@ -1062,8 +1062,8 @@ static void nodemgr_process_root_directo - - #ifdef CONFIG_HOTPLUG - --static int nodemgr_hotplug(struct class_device *cdev, char **envp, int num_envp, -- char *buffer, int buffer_size) -+static int nodemgr_uevent(struct class_device *cdev, char **envp, int num_envp, -+ char *buffer, int buffer_size) - { - struct unit_directory *ud; - int i = 0; -@@ -1112,8 +1112,8 @@ do { \ - - #else - --static int nodemgr_hotplug(struct class_device *cdev, char **envp, int num_envp, -- char *buffer, int buffer_size) -+static int nodemgr_uevent(struct class_device *cdev, char **envp, int num_envp, -+ char *buffer, int buffer_size) - { - return -ENODEV; - } -@@ -1618,8 +1618,8 @@ static int nodemgr_host_thread(void *__h - - /* Scan our nodes to get the bus options and create node - * entries. This does not do the sysfs stuff, since that -- * would trigger hotplug callbacks and such, which is a -- * bad idea at this point. */ -+ * would trigger uevents and such, which is a bad idea at -+ * this point. */ - nodemgr_node_scan(hi, generation); - - /* This actually does the full probe, with sysfs ---- gregkh-2.6.orig/drivers/infiniband/core/sysfs.c -+++ gregkh-2.6/drivers/infiniband/core/sysfs.c -@@ -434,24 +434,24 @@ static void ib_device_release(struct cla - kfree(dev); - } - --static int ib_device_hotplug(struct class_device *cdev, char **envp, -- int num_envp, char *buf, int size) -+static int ib_device_uevent(struct class_device *cdev, char **envp, -+ int num_envp, char *buf, int size) - { - struct ib_device *dev = container_of(cdev, struct ib_device, class_dev); - int i = 0, len = 0; - -- if (add_hotplug_env_var(envp, num_envp, &i, buf, size, &len, -- "NAME=%s", dev->name)) -+ if (add_uevent_var(envp, num_envp, &i, buf, size, &len, -+ "NAME=%s", dev->name)) - return -ENOMEM; - - /* -- * It might be nice to pass the node GUID to hotplug, but -+ * It might be nice to pass the node GUID with the event, but - * right now the only way to get it is to query the device - * provider, and this can crash during device removal because - * we are will be running after driver removal has started. - * We could add a node_guid field to struct ib_device, or we -- * could just let the hotplug script read the node GUID from -- * sysfs when devices are added. -+ * could just let userspace read the node GUID from sysfs when -+ * devices are added. - */ - - envp[i] = NULL; -@@ -653,7 +653,7 @@ static struct class_device_attribute *ib - static struct class ib_class = { - .name = "infiniband", - .release = ib_device_release, -- .hotplug = ib_device_hotplug, -+ .uevent = ib_device_uevent, - }; - - int ib_device_register_sysfs(struct ib_device *device) ---- gregkh-2.6.orig/drivers/input/input.c -+++ gregkh-2.6/drivers/input/input.c -@@ -610,10 +610,10 @@ static void input_dev_release(struct cla - } - - /* -- * Input hotplugging interface - loading event handlers based on -+ * Input uevent interface - loading event handlers based on - * device bitfields. - */ --static int input_add_hotplug_bm_var(char **envp, int num_envp, int *cur_index, -+static int input_add_uevent_bm_var(char **envp, int num_envp, int *cur_index, - char *buffer, int buffer_size, int *cur_len, - const char *name, unsigned long *bitmap, int max) - { -@@ -638,7 +638,7 @@ static int input_add_hotplug_bm_var(char - - #define INPUT_ADD_HOTPLUG_VAR(fmt, val...) \ - do { \ -- int err = add_hotplug_env_var(envp, num_envp, &i, \ -+ int err = add_uevent_var(envp, num_envp, &i, \ - buffer, buffer_size, &len, \ - fmt, val); \ - if (err) \ -@@ -647,15 +647,15 @@ static int input_add_hotplug_bm_var(char - - #define INPUT_ADD_HOTPLUG_BM_VAR(name, bm, max) \ - do { \ -- int err = input_add_hotplug_bm_var(envp, num_envp, &i, \ -+ int err = input_add_uevent_bm_var(envp, num_envp, &i, \ - buffer, buffer_size, &len, \ - name, bm, max); \ - if (err) \ - return err; \ - } while (0) - --static int input_dev_hotplug(struct class_device *cdev, char **envp, -- int num_envp, char *buffer, int buffer_size) -+static int input_dev_uevent(struct class_device *cdev, char **envp, -+ int num_envp, char *buffer, int buffer_size) - { - struct input_dev *dev = to_input_dev(cdev); - int i = 0; -@@ -697,7 +697,7 @@ static int input_dev_hotplug(struct clas - struct class input_class = { - .name = "input", - .release = input_dev_release, -- .hotplug = input_dev_hotplug, -+ .uevent = input_dev_uevent, - }; - - struct input_dev *input_allocate_device(void) ---- gregkh-2.6.orig/drivers/input/serio/serio.c -+++ gregkh-2.6/drivers/input/serio/serio.c -@@ -800,16 +800,16 @@ static int serio_bus_match(struct device - - #ifdef CONFIG_HOTPLUG - --#define SERIO_ADD_HOTPLUG_VAR(fmt, val...) \ -+#define SERIO_ADD_UEVENT_VAR(fmt, val...) \ - do { \ -- int err = add_hotplug_env_var(envp, num_envp, &i, \ -+ int err = add_uevent_var(envp, num_envp, &i, \ - buffer, buffer_size, &len, \ - fmt, val); \ - if (err) \ - return err; \ - } while (0) - --static int serio_hotplug(struct device *dev, char **envp, int num_envp, char *buffer, int buffer_size) -+static int serio_uevent(struct device *dev, char **envp, int num_envp, char *buffer, int buffer_size) - { - struct serio *serio; - int i = 0; -@@ -820,21 +820,21 @@ static int serio_hotplug(struct device * - - serio = to_serio_port(dev); - -- SERIO_ADD_HOTPLUG_VAR("SERIO_TYPE=%02x", serio->id.type); -- SERIO_ADD_HOTPLUG_VAR("SERIO_PROTO=%02x", serio->id.proto); -- SERIO_ADD_HOTPLUG_VAR("SERIO_ID=%02x", serio->id.id); -- SERIO_ADD_HOTPLUG_VAR("SERIO_EXTRA=%02x", serio->id.extra); -- SERIO_ADD_HOTPLUG_VAR("MODALIAS=serio:ty%02Xpr%02Xid%02Xex%02X", -+ SERIO_ADD_UEVENT_VAR("SERIO_TYPE=%02x", serio->id.type); -+ SERIO_ADD_UEVENT_VAR("SERIO_PROTO=%02x", serio->id.proto); -+ SERIO_ADD_UEVENT_VAR("SERIO_ID=%02x", serio->id.id); -+ SERIO_ADD_UEVENT_VAR("SERIO_EXTRA=%02x", serio->id.extra); -+ SERIO_ADD_UEVENT_VAR("MODALIAS=serio:ty%02Xpr%02Xid%02Xex%02X", - serio->id.type, serio->id.proto, serio->id.id, serio->id.extra); - envp[i] = NULL; - - return 0; - } --#undef SERIO_ADD_HOTPLUG_VAR -+#undef SERIO_ADD_UEVENT_VAR - - #else - --static int serio_hotplug(struct device *dev, char **envp, int num_envp, char *buffer, int buffer_size) -+static int serio_uevent(struct device *dev, char **envp, int num_envp, char *buffer, int buffer_size) - { - return -ENODEV; - } -@@ -908,7 +908,7 @@ static int __init serio_init(void) - serio_bus.dev_attrs = serio_device_attrs; - serio_bus.drv_attrs = serio_driver_attrs; - serio_bus.match = serio_bus_match; -- serio_bus.hotplug = serio_hotplug; -+ serio_bus.uevent = serio_uevent; - serio_bus.resume = serio_resume; - bus_register(&serio_bus); - ---- gregkh-2.6.orig/drivers/mmc/mmc_sysfs.c -+++ gregkh-2.6/drivers/mmc/mmc_sysfs.c -@@ -80,7 +80,7 @@ static int mmc_bus_match(struct device * - } - - static int --mmc_bus_hotplug(struct device *dev, char **envp, int num_envp, char *buf, -+mmc_bus_uevent(struct device *dev, char **envp, int num_envp, char *buf, - int buf_size) - { - struct mmc_card *card = dev_to_mmc_card(dev); -@@ -140,7 +140,7 @@ static struct bus_type mmc_bus_type = { - .name = "mmc", - .dev_attrs = mmc_dev_attrs, - .match = mmc_bus_match, -- .hotplug = mmc_bus_hotplug, -+ .uevent = mmc_bus_uevent, - .suspend = mmc_bus_suspend, - .resume = mmc_bus_resume, - }; ---- gregkh-2.6.orig/drivers/pci/hotplug.c -+++ gregkh-2.6/drivers/pci/hotplug.c -@@ -3,8 +3,8 @@ - #include <linux/module.h> - #include "pci.h" - --int pci_hotplug (struct device *dev, char **envp, int num_envp, -- char *buffer, int buffer_size) -+int pci_uevent(struct device *dev, char **envp, int num_envp, -+ char *buffer, int buffer_size) - { - struct pci_dev *pdev; - int i = 0; -@@ -17,34 +17,34 @@ int pci_hotplug (struct device *dev, cha - if (!pdev) - return -ENODEV; - -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "PCI_CLASS=%04X", pdev->class)) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "PCI_CLASS=%04X", pdev->class)) - return -ENOMEM; - -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "PCI_ID=%04X:%04X", pdev->vendor, pdev->device)) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "PCI_ID=%04X:%04X", pdev->vendor, pdev->device)) - return -ENOMEM; - -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "PCI_SUBSYS_ID=%04X:%04X", pdev->subsystem_vendor, -- pdev->subsystem_device)) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "PCI_SUBSYS_ID=%04X:%04X", pdev->subsystem_vendor, -+ pdev->subsystem_device)) - return -ENOMEM; - -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "PCI_SLOT_NAME=%s", pci_name(pdev))) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "PCI_SLOT_NAME=%s", pci_name(pdev))) - return -ENOMEM; - -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "MODALIAS=pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02x", -- pdev->vendor, pdev->device, -- pdev->subsystem_vendor, pdev->subsystem_device, -- (u8)(pdev->class >> 16), (u8)(pdev->class >> 8), -- (u8)(pdev->class))) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "MODALIAS=pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02x", -+ pdev->vendor, pdev->device, -+ pdev->subsystem_vendor, pdev->subsystem_device, -+ (u8)(pdev->class >> 16), (u8)(pdev->class >> 8), -+ (u8)(pdev->class))) - return -ENOMEM; - - envp[i] = NULL; ---- gregkh-2.6.orig/drivers/pci/pci-driver.c -+++ gregkh-2.6/drivers/pci/pci-driver.c -@@ -502,8 +502,8 @@ void pci_dev_put(struct pci_dev *dev) - } - - #ifndef CONFIG_HOTPLUG --int pci_hotplug (struct device *dev, char **envp, int num_envp, -- char *buffer, int buffer_size) -+int pci_uevent(struct device *dev, char **envp, int num_envp, -+ char *buffer, int buffer_size) - { - return -ENODEV; - } -@@ -512,7 +512,7 @@ int pci_hotplug (struct device *dev, cha - struct bus_type pci_bus_type = { - .name = "pci", - .match = pci_bus_match, -- .hotplug = pci_hotplug, -+ .uevent = pci_uevent, - .suspend = pci_device_suspend, - .resume = pci_device_resume, - .dev_attrs = pci_dev_attrs, ---- gregkh-2.6.orig/drivers/pci/pci.h -+++ gregkh-2.6/drivers/pci/pci.h -@@ -1,7 +1,7 @@ - /* Functions internal to the PCI core code */ - --extern int pci_hotplug (struct device *dev, char **envp, int num_envp, -- char *buffer, int buffer_size); -+extern int pci_uevent(struct device *dev, char **envp, int num_envp, -+ char *buffer, int buffer_size); - extern int pci_create_sysfs_dev_files(struct pci_dev *pdev); - extern void pci_remove_sysfs_dev_files(struct pci_dev *pdev); - extern void pci_cleanup_rom(struct pci_dev *dev); ---- gregkh-2.6.orig/drivers/pcmcia/cs.c -+++ gregkh-2.6/drivers/pcmcia/cs.c -@@ -901,14 +901,14 @@ int pcmcia_insert_card(struct pcmcia_soc - EXPORT_SYMBOL(pcmcia_insert_card); - - --static int pcmcia_socket_hotplug(struct class_device *dev, char **envp, -- int num_envp, char *buffer, int buffer_size) -+static int pcmcia_socket_uevent(struct class_device *dev, char **envp, -+ int num_envp, char *buffer, int buffer_size) - { - struct pcmcia_socket *s = container_of(dev, struct pcmcia_socket, dev); - int i = 0, length = 0; - -- if (add_hotplug_env_var(envp, num_envp, &i, buffer, buffer_size, -- &length, "SOCKET_NO=%u", s->sock)) -+ if (add_uevent_var(envp, num_envp, &i, buffer, buffer_size, -+ &length, "SOCKET_NO=%u", s->sock)) - return -ENOMEM; - - envp[i] = NULL; -@@ -927,7 +927,7 @@ static void pcmcia_release_socket_class( - - struct class pcmcia_socket_class = { - .name = "pcmcia_socket", -- .hotplug = pcmcia_socket_hotplug, -+ .uevent = pcmcia_socket_uevent, - .release = pcmcia_release_socket, - .class_release = pcmcia_release_socket_class, - }; ---- gregkh-2.6.orig/drivers/pcmcia/ds.c -+++ gregkh-2.6/drivers/pcmcia/ds.c -@@ -779,8 +779,8 @@ static int pcmcia_bus_match(struct devic - - #ifdef CONFIG_HOTPLUG - --static int pcmcia_bus_hotplug(struct device *dev, char **envp, int num_envp, -- char *buffer, int buffer_size) -+static int pcmcia_bus_uevent(struct device *dev, char **envp, int num_envp, -+ char *buffer, int buffer_size) - { - struct pcmcia_device *p_dev; - int i, length = 0; -@@ -800,31 +800,31 @@ static int pcmcia_bus_hotplug(struct dev - - i = 0; - -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "SOCKET_NO=%u", -- p_dev->socket->sock)) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "SOCKET_NO=%u", -+ p_dev->socket->sock)) - return -ENOMEM; - -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "DEVICE_NO=%02X", -- p_dev->device_no)) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "DEVICE_NO=%02X", -+ p_dev->device_no)) - return -ENOMEM; - -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "MODALIAS=pcmcia:m%04Xc%04Xf%02Xfn%02Xpfn%02X" -- "pa%08Xpb%08Xpc%08Xpd%08X", -- p_dev->has_manf_id ? p_dev->manf_id : 0, -- p_dev->has_card_id ? p_dev->card_id : 0, -- p_dev->has_func_id ? p_dev->func_id : 0, -- p_dev->func, -- p_dev->device_no, -- hash[0], -- hash[1], -- hash[2], -- hash[3])) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "MODALIAS=pcmcia:m%04Xc%04Xf%02Xfn%02Xpfn%02X" -+ "pa%08Xpb%08Xpc%08Xpd%08X", -+ p_dev->has_manf_id ? p_dev->manf_id : 0, -+ p_dev->has_card_id ? p_dev->card_id : 0, -+ p_dev->has_func_id ? p_dev->func_id : 0, -+ p_dev->func, -+ p_dev->device_no, -+ hash[0], -+ hash[1], -+ hash[2], -+ hash[3])) - return -ENOMEM; - - envp[i] = NULL; -@@ -834,7 +834,7 @@ static int pcmcia_bus_hotplug(struct dev - - #else - --static int pcmcia_bus_hotplug(struct device *dev, char **envp, int num_envp, -+static int pcmcia_bus_uevent(struct device *dev, char **envp, int num_envp, - char *buffer, int buffer_size) - { - return -ENODEV; -@@ -1223,7 +1223,7 @@ static struct class_interface pcmcia_bus - - struct bus_type pcmcia_bus_type = { - .name = "pcmcia", -- .hotplug = pcmcia_bus_hotplug, -+ .uevent = pcmcia_bus_uevent, - .match = pcmcia_bus_match, - .dev_attrs = pcmcia_dev_attrs, - }; ---- gregkh-2.6.orig/drivers/scsi/ipr.c -+++ gregkh-2.6/drivers/scsi/ipr.c -@@ -2132,7 +2132,7 @@ restart: - } - - spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); -- kobject_hotplug(&ioa_cfg->host->shost_classdev.kobj, KOBJ_CHANGE); -+ kobject_uevent(&ioa_cfg->host->shost_classdev.kobj, KOBJ_CHANGE); - LEAVE; - } - ---- gregkh-2.6.orig/drivers/usb/core/usb.c -+++ gregkh-2.6/drivers/usb/core/usb.c -@@ -363,8 +363,7 @@ void usb_driver_release_interface(struct - * Most USB device drivers will use this indirectly, through the usb core, - * but some layered driver frameworks use it directly. - * These device tables are exported with MODULE_DEVICE_TABLE, through -- * modutils and "modules.usbmap", to support the driver loading -- * functionality of USB hotplugging. -+ * modutils, to support the driver loading functionality of USB hotplugging. - * - * What Matches: - * -@@ -545,10 +544,7 @@ static int usb_device_match (struct devi - #ifdef CONFIG_HOTPLUG - - /* -- * USB hotplugging invokes what /proc/sys/kernel/hotplug says -- * (normally /sbin/hotplug) when USB devices get added or removed. -- * -- * This invokes a user mode policy agent, typically helping to load driver -+ * This sends an uevent to userspace, typically helping to load driver - * or other modules, configure the device, and more. Drivers can provide - * a MODULE_DEVICE_TABLE to help with module loading subtasks. - * -@@ -557,8 +553,8 @@ static int usb_device_match (struct devi - * delays in event delivery. Use sysfs (and DEVPATH) to make sure the - * device (and this configuration!) are still present. - */ --static int usb_hotplug (struct device *dev, char **envp, int num_envp, -- char *buffer, int buffer_size) -+static int usb_uevent(struct device *dev, char **envp, int num_envp, -+ char *buffer, int buffer_size) - { - struct usb_interface *intf; - struct usb_device *usb_dev; -@@ -570,7 +566,7 @@ static int usb_hotplug (struct device *d - return -ENODEV; - - /* driver is often null here; dev_dbg() would oops */ -- pr_debug ("usb %s: hotplug\n", dev->bus_id); -+ pr_debug ("usb %s: uevent\n", dev->bus_id); - - /* Must check driver_data here, as on remove driver is always NULL */ - if ((dev->driver == &usb_generic_driver) || -@@ -597,51 +593,51 @@ static int usb_hotplug (struct device *d - * - * FIXME reduce hardwired intelligence here - */ -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "DEVICE=/proc/bus/usb/%03d/%03d", -- usb_dev->bus->busnum, usb_dev->devnum)) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "DEVICE=/proc/bus/usb/%03d/%03d", -+ usb_dev->bus->busnum, usb_dev->devnum)) - return -ENOMEM; - #endif - - /* per-device configurations are common */ -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "PRODUCT=%x/%x/%x", -- le16_to_cpu(usb_dev->descriptor.idVendor), -- le16_to_cpu(usb_dev->descriptor.idProduct), -- le16_to_cpu(usb_dev->descriptor.bcdDevice))) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "PRODUCT=%x/%x/%x", -+ le16_to_cpu(usb_dev->descriptor.idVendor), -+ le16_to_cpu(usb_dev->descriptor.idProduct), -+ le16_to_cpu(usb_dev->descriptor.bcdDevice))) - return -ENOMEM; - - /* class-based driver binding models */ -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "TYPE=%d/%d/%d", -- usb_dev->descriptor.bDeviceClass, -- usb_dev->descriptor.bDeviceSubClass, -- usb_dev->descriptor.bDeviceProtocol)) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "TYPE=%d/%d/%d", -+ usb_dev->descriptor.bDeviceClass, -+ usb_dev->descriptor.bDeviceSubClass, -+ usb_dev->descriptor.bDeviceProtocol)) - return -ENOMEM; - -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "INTERFACE=%d/%d/%d", -- alt->desc.bInterfaceClass, -- alt->desc.bInterfaceSubClass, -- alt->desc.bInterfaceProtocol)) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "INTERFACE=%d/%d/%d", -+ alt->desc.bInterfaceClass, -+ alt->desc.bInterfaceSubClass, -+ alt->desc.bInterfaceProtocol)) - return -ENOMEM; - -- if (add_hotplug_env_var(envp, num_envp, &i, -- buffer, buffer_size, &length, -- "MODALIAS=usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02X", -- le16_to_cpu(usb_dev->descriptor.idVendor), -- le16_to_cpu(usb_dev->descriptor.idProduct), -- le16_to_cpu(usb_dev->descriptor.bcdDevice), -- usb_dev->descriptor.bDeviceClass, -- usb_dev->descriptor.bDeviceSubClass, -- usb_dev->descriptor.bDeviceProtocol, -- alt->desc.bInterfaceClass, -- alt->desc.bInterfaceSubClass, -- alt->desc.bInterfaceProtocol)) -+ if (add_uevent_var(envp, num_envp, &i, -+ buffer, buffer_size, &length, -+ "MODALIAS=usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02X", -+ le16_to_cpu(usb_dev->descriptor.idVendor), -+ le16_to_cpu(usb_dev->descriptor.idProduct), -+ le16_to_cpu(usb_dev->descriptor.bcdDevice), -+ usb_dev->descriptor.bDeviceClass, -+ usb_dev->descriptor.bDeviceSubClass, -+ usb_dev->descriptor.bDeviceProtocol, -+ alt->desc.bInterfaceClass, -+ alt->desc.bInterfaceSubClass, -+ alt->desc.bInterfaceProtocol)) - return -ENOMEM; - - envp[i] = NULL; -@@ -651,7 +647,7 @@ static int usb_hotplug (struct device *d - - #else - --static int usb_hotplug (struct device *dev, char **envp, -+static int usb_uevent(struct device *dev, char **envp, - int num_envp, char *buffer, int buffer_size) - { - return -ENODEV; -@@ -1491,7 +1487,7 @@ static int usb_generic_resume(struct dev - struct bus_type usb_bus_type = { - .name = "usb", - .match = usb_device_match, -- .hotplug = usb_hotplug, -+ .uevent = usb_uevent, - .suspend = usb_generic_suspend, - .resume = usb_generic_resume, - }; ---- gregkh-2.6.orig/drivers/usb/host/hc_crisv10.c -+++ gregkh-2.6/drivers/usb/host/hc_crisv10.c -@@ -4397,7 +4397,7 @@ static int __init etrax_usb_hc_init(void - device_initialize(&fake_device); - kobject_set_name(&fake_device.kobj, "etrax_usb"); - kobject_add(&fake_device.kobj); -- kobject_hotplug(&fake_device.kobj, KOBJ_ADD); -+ kobject_uevent(&fake_device.kobj, KOBJ_ADD); - hc->bus->controller = &fake_device; - usb_register_bus(hc->bus); - ---- gregkh-2.6.orig/drivers/w1/w1.c -+++ gregkh-2.6/drivers/w1/w1.c -@@ -142,12 +142,12 @@ static struct bin_attribute w1_slave_att - /* Default family */ - static struct w1_family w1_default_family; - --static int w1_hotplug(struct device *dev, char **envp, int num_envp, char *buffer, int buffer_size); -+static int w1_uevent(struct device *dev, char **envp, int num_envp, char *buffer, int buffer_size); - - static struct bus_type w1_bus_type = { - .name = "w1", - .match = w1_master_match, -- .hotplug = w1_hotplug, -+ .uevent = w1_uevent, - }; - - struct device_driver w1_master_driver = { -@@ -361,7 +361,7 @@ void w1_destroy_master_attributes(struct - } - - #ifdef CONFIG_HOTPLUG --static int w1_hotplug(struct device *dev, char **envp, int num_envp, char *buffer, int buffer_size) -+static int w1_uevent(struct device *dev, char **envp, int num_envp, char *buffer, int buffer_size) - { - struct w1_master *md = NULL; - struct w1_slave *sl = NULL; -@@ -377,7 +377,7 @@ static int w1_hotplug(struct device *dev - event_owner = "slave"; - name = sl->name; - } else { -- dev_dbg(dev, "Unknown hotplug event.\n"); -+ dev_dbg(dev, "Unknown event.\n"); - return -EINVAL; - } - -@@ -386,18 +386,18 @@ static int w1_hotplug(struct device *dev - if (dev->driver != &w1_slave_driver || !sl) - return 0; - -- err = add_hotplug_env_var(envp, num_envp, &cur_index, buffer, buffer_size, &cur_len, "W1_FID=%02X", sl->reg_num.family); -+ err = add_uevent_var(envp, num_envp, &cur_index, buffer, buffer_size, &cur_len, "W1_FID=%02X", sl->reg_num.family); - if (err) - return err; - -- err = add_hotplug_env_var(envp, num_envp, &cur_index, buffer, buffer_size, &cur_len, "W1_SLAVE_ID=%024LX", (u64)sl->reg_num.id); -+ err = add_uevent_var(envp, num_envp, &cur_index, buffer, buffer_size, &cur_len, "W1_SLAVE_ID=%024LX", (u64)sl->reg_num.id); - if (err) - return err; - - return 0; - }; - #else --static int w1_hotplug(struct device *dev, char **envp, int num_envp, char *buffer, int buffer_size) -+static int w1_uevent(struct device *dev, char **envp, int num_envp, char *buffer, int buffer_size) - { - return 0; - } ---- gregkh-2.6.orig/fs/partitions/check.c -+++ gregkh-2.6/fs/partitions/check.c -@@ -226,7 +226,7 @@ static struct sysfs_ops part_sysfs_ops = - static ssize_t part_uevent_store(struct hd_struct * p, - const char *page, size_t count) - { -- kobject_hotplug(&p->kobj, KOBJ_ADD); -+ kobject_uevent(&p->kobj, KOBJ_ADD); - return count; - } - static ssize_t part_dev_read(struct hd_struct * p, char *page) -@@ -360,7 +360,7 @@ void register_disk(struct gendisk *disk) - if ((err = kobject_add(&disk->kobj))) - return; - disk_sysfs_symlinks(disk); -- kobject_hotplug(&disk->kobj, KOBJ_ADD); -+ kobject_uevent(&disk->kobj, KOBJ_ADD); - - /* No minors to use for partitions */ - if (disk->minors == 1) { -@@ -465,6 +465,6 @@ void del_gendisk(struct gendisk *disk) - sysfs_remove_link(&disk->driverfs_dev->kobj, "block"); - put_device(disk->driverfs_dev); - } -- kobject_hotplug(&disk->kobj, KOBJ_REMOVE); -+ kobject_uevent(&disk->kobj, KOBJ_REMOVE); - kobject_del(&disk->kobj); - } ---- gregkh-2.6.orig/include/linux/device.h -+++ gregkh-2.6/include/linux/device.h -@@ -47,8 +47,8 @@ struct bus_type { - struct driver_attribute * drv_attrs; - - int (*match)(struct device * dev, struct device_driver * drv); -- int (*hotplug) (struct device *dev, char **envp, -- int num_envp, char *buffer, int buffer_size); -+ int (*uevent)(struct device *dev, char **envp, -+ int num_envp, char *buffer, int buffer_size); - int (*suspend)(struct device * dev, pm_message_t state); - int (*resume)(struct device * dev); - }; -@@ -151,7 +151,7 @@ struct class { - struct class_attribute * class_attrs; - struct class_device_attribute * class_dev_attrs; - -- int (*hotplug)(struct class_device *dev, char **envp, -+ int (*uevent)(struct class_device *dev, char **envp, - int num_envp, char *buffer, int buffer_size); - - void (*release)(struct class_device *dev); -@@ -209,9 +209,9 @@ extern int class_device_create_file(stru - * set, this will be called instead of the class specific release function. - * Only use this if you want to override the default release function, like - * when you are nesting class_device structures. -- * @hotplug: pointer to a hotplug function for this struct class_device. If -- * set, this will be called instead of the class specific hotplug function. -- * Only use this if you want to override the default hotplug function, like -+ * @uevent: pointer to a uevent function for this struct class_device. If -+ * set, this will be called instead of the class specific uevent function. -+ * Only use this if you want to override the default uevent function, like - * when you are nesting class_device structures. - */ - struct class_device { -@@ -227,7 +227,7 @@ struct class_device { - struct class_device *parent; /* parent of this child device, if there is one */ - - void (*release)(struct class_device *dev); -- int (*hotplug)(struct class_device *dev, char **envp, -+ int (*uevent)(struct class_device *dev, char **envp, - int num_envp, char *buffer, int buffer_size); - char class_id[BUS_ID_SIZE]; /* unique to this class */ - }; ---- gregkh-2.6.orig/include/linux/firmware.h -+++ gregkh-2.6/include/linux/firmware.h -@@ -14,7 +14,7 @@ struct device; - int request_firmware(const struct firmware **fw, const char *name, - struct device *device); - int request_firmware_nowait( -- struct module *module, int hotplug, -+ struct module *module, int uevent, - const char *name, struct device *device, void *context, - void (*cont)(const struct firmware *fw, void *context)); - ---- gregkh-2.6.orig/include/linux/kobject.h -+++ gregkh-2.6/include/linux/kobject.h -@@ -26,15 +26,14 @@ - #include <linux/kernel.h> - #include <asm/atomic.h> - --#define KOBJ_NAME_LEN 20 -- --#define HOTPLUG_PATH_LEN 256 -+#define KOBJ_NAME_LEN 20 -+#define UEVENT_HELPER_PATH_LEN 256 - - /* path to the userspace helper executed on an event */ --extern char hotplug_path[]; -+extern char uevent_helper[]; - --/* counter to tag the hotplug event, read only except for the kobject core */ --extern u64 hotplug_seqnum; -+/* counter to tag the uevent, read only except for the kobject core */ -+extern u64 uevent_seqnum; - - /* the actions here must match the proper string in lib/kobject_uevent.c */ - typedef int __bitwise kobject_action_t; -@@ -101,15 +100,14 @@ struct kobj_type { - * of object; multiple ksets can belong to one subsystem. All - * ksets of a subsystem share the subsystem's lock. - * -- * Each kset can support hotplugging; if it does, it will be given -- * the opportunity to filter out specific kobjects from being -- * reported, as well as to add its own "data" elements to the -- * environment being passed to the hotplug helper. -+ * Each kset can support specific event variables; it can -+ * supress the event generation or add subsystem specific -+ * variables carried with the event. - */ --struct kset_hotplug_ops { -+struct kset_uevent_ops { - int (*filter)(struct kset *kset, struct kobject *kobj); - const char *(*name)(struct kset *kset, struct kobject *kobj); -- int (*hotplug)(struct kset *kset, struct kobject *kobj, char **envp, -+ int (*uevent)(struct kset *kset, struct kobject *kobj, char **envp, - int num_envp, char *buffer, int buffer_size); - }; - -@@ -119,7 +117,7 @@ struct kset { - struct list_head list; - spinlock_t list_lock; - struct kobject kobj; -- struct kset_hotplug_ops * hotplug_ops; -+ struct kset_uevent_ops * uevent_ops; - }; - - -@@ -167,20 +165,20 @@ struct subsystem { - struct rw_semaphore rwsem; - }; - --#define decl_subsys(_name,_type,_hotplug_ops) \ -+#define decl_subsys(_name,_type,_uevent_ops) \ - struct subsystem _name##_subsys = { \ - .kset = { \ - .kobj = { .name = __stringify(_name) }, \ - .ktype = _type, \ -- .hotplug_ops =_hotplug_ops, \ -+ .uevent_ops =_uevent_ops, \ - } \ - } --#define decl_subsys_name(_varname,_name,_type,_hotplug_ops) \ -+#define decl_subsys_name(_varname,_name,_type,_uevent_ops) \ - struct subsystem _varname##_subsys = { \ - .kset = { \ - .kobj = { .name = __stringify(_name) }, \ - .ktype = _type, \ -- .hotplug_ops =_hotplug_ops, \ -+ .uevent_ops =_uevent_ops, \ - } \ - } - -@@ -256,16 +254,16 @@ extern int subsys_create_file(struct sub - extern void subsys_remove_file(struct subsystem * , struct subsys_attribute *); - - #ifdef CONFIG_HOTPLUG --void kobject_hotplug(struct kobject *kobj, enum kobject_action action); -+void kobject_uevent(struct kobject *kobj, enum kobject_action action); - --int add_hotplug_env_var(char **envp, int num_envp, int *cur_index, -+int add_uevent_var(char **envp, int num_envp, int *cur_index, - char *buffer, int buffer_size, int *cur_len, - const char *format, ...) - __attribute__((format (printf, 7, 8))); - #else --static inline void kobject_hotplug(struct kobject *kobj, enum kobject_action action) { } -+static inline void kobject_uevent(struct kobject *kobj, enum kobject_action action) { } - --static inline int add_hotplug_env_var(char **envp, int num_envp, int *cur_index, -+static inline int add_uevent_var(char **envp, int num_envp, int *cur_index, - char *buffer, int buffer_size, int *cur_len, - const char *format, ...) - { return 0; } ---- gregkh-2.6.orig/include/linux/sysctl.h -+++ gregkh-2.6/include/linux/sysctl.h -@@ -124,7 +124,7 @@ enum - KERN_OVERFLOWUID=46, /* int: overflow UID */ - KERN_OVERFLOWGID=47, /* int: overflow GID */ - KERN_SHMPATH=48, /* string: path to shm fs */ -- KERN_HOTPLUG=49, /* string: path to hotplug policy agent */ -+ KERN_HOTPLUG=49, /* string: path to uevent helper (deprecated) */ - KERN_IEEE_EMULATION_WARNINGS=50, /* int: unimplemented ieee instructions */ - KERN_S390_USER_DEBUG_LOGGING=51, /* int: dumps of user faults */ - KERN_CORE_USES_PID=52, /* int: use core or core.%pid */ ---- gregkh-2.6.orig/include/linux/usb.h -+++ gregkh-2.6/include/linux/usb.h -@@ -225,7 +225,7 @@ struct usb_interface_cache { - * Device drivers should not attempt to activate configurations. The choice - * of which configuration to install is a policy decision based on such - * considerations as available power, functionality provided, and the user's -- * desires (expressed through hotplug scripts). However, drivers can call -+ * desires (expressed through userspace tools). However, drivers can call - * usb_reset_configuration() to reinitialize the current configuration and - * all its interfaces. - */ ---- gregkh-2.6.orig/kernel/ksysfs.c -+++ gregkh-2.6/kernel/ksysfs.c -@@ -26,23 +26,23 @@ static struct subsys_attribute _name##_a - /* current uevent sequence number */ - static ssize_t uevent_seqnum_show(struct subsystem *subsys, char *page) - { -- return sprintf(page, "%llu\n", (unsigned long long)hotplug_seqnum); -+ return sprintf(page, "%llu\n", (unsigned long long)uevent_seqnum); - } - KERNEL_ATTR_RO(uevent_seqnum); - - /* uevent helper program, used during early boo */ - static ssize_t uevent_helper_show(struct subsystem *subsys, char *page) - { -- return sprintf(page, "%s\n", hotplug_path); -+ return sprintf(page, "%s\n", uevent_helper); - } - static ssize_t uevent_helper_store(struct subsystem *subsys, const char *page, size_t count) - { -- if (count+1 > HOTPLUG_PATH_LEN) -+ if (count+1 > UEVENT_HELPER_PATH_LEN) - return -ENOENT; -- memcpy(hotplug_path, page, count); -- hotplug_path[count] = '\0'; -- if (count && hotplug_path[count-1] == '\n') -- hotplug_path[count-1] = '\0'; -+ memcpy(uevent_helper, page, count); -+ uevent_helper[count] = '\0'; -+ if (count && uevent_helper[count-1] == '\n') -+ uevent_helper[count-1] = '\0'; - return count; - } - KERNEL_ATTR_RW(uevent_helper); ---- gregkh-2.6.orig/kernel/sysctl.c -+++ gregkh-2.6/kernel/sysctl.c -@@ -395,8 +395,8 @@ static ctl_table kern_table[] = { - { - .ctl_name = KERN_HOTPLUG, - .procname = "hotplug", -- .data = &hotplug_path, -- .maxlen = HOTPLUG_PATH_LEN, -+ .data = &uevent_helper, -+ .maxlen = UEVENT_HELPER_PATH_LEN, - .mode = 0644, - .proc_handler = &proc_dostring, - .strategy = &sysctl_string, ---- gregkh-2.6.orig/lib/kobject.c -+++ gregkh-2.6/lib/kobject.c -@@ -208,7 +208,7 @@ int kobject_register(struct kobject * ko - kobject_name(kobj),error); - dump_stack(); - } else -- kobject_hotplug(kobj, KOBJ_ADD); -+ kobject_uevent(kobj, KOBJ_ADD); - } else - error = -EINVAL; - return error; -@@ -313,7 +313,7 @@ void kobject_del(struct kobject * kobj) - void kobject_unregister(struct kobject * kobj) - { - pr_debug("kobject %s: unregistering\n",kobject_name(kobj)); -- kobject_hotplug(kobj, KOBJ_REMOVE); -+ kobject_uevent(kobj, KOBJ_REMOVE); - kobject_del(kobj); - kobject_put(kobj); - } ---- gregkh-2.6.orig/lib/kobject_uevent.c -+++ gregkh-2.6/lib/kobject_uevent.c -@@ -22,12 +22,12 @@ - #include <linux/kobject.h> - #include <net/sock.h> - --#define BUFFER_SIZE 1024 /* buffer for the hotplug env */ -+#define BUFFER_SIZE 1024 /* buffer for the variables */ - #define NUM_ENVP 32 /* number of env pointers */ - - #if defined(CONFIG_HOTPLUG) --char hotplug_path[HOTPLUG_PATH_LEN] = "/sbin/hotplug"; --u64 hotplug_seqnum; -+char uevent_helper[UEVENT_HELPER_PATH_LEN] = "/sbin/hotplug"; -+u64 uevent_seqnum; - static DEFINE_SPINLOCK(sequence_lock); - static struct sock *uevent_sock; - -@@ -50,12 +50,12 @@ static char *action_to_string(enum kobje - } - - /** -- * kobject_hotplug - notify userspace by executing /sbin/hotplug -+ * kobject_uevent - notify userspace by ending an uevent - * -- * @action: action that is happening (usually "ADD" or "REMOVE") -+ * @action: action that is happening (usually KOBJ_ADD and KOBJ_REMOVE) - * @kobj: struct kobject that the action is happening to - */ --void kobject_hotplug(struct kobject *kobj, enum kobject_action action) -+void kobject_uevent(struct kobject *kobj, enum kobject_action action) - { - char **envp; - char *buffer; -@@ -65,7 +65,7 @@ void kobject_hotplug(struct kobject *kob - const char *subsystem; - struct kobject *top_kobj; - struct kset *kset; -- struct kset_hotplug_ops *hotplug_ops; -+ struct kset_uevent_ops *uevent_ops; - u64 seq; - char *seq_buff; - int i = 0; -@@ -88,11 +88,11 @@ void kobject_hotplug(struct kobject *kob - return; - - kset = top_kobj->kset; -- hotplug_ops = kset->hotplug_ops; -+ uevent_ops = kset->uevent_ops; - - /* skip the event, if the filter returns zero. */ -- if (hotplug_ops && hotplug_ops->filter) -- if (!hotplug_ops->filter(kset, kobj)) -+ if (uevent_ops && uevent_ops->filter) -+ if (!uevent_ops->filter(kset, kobj)) - return; - - /* environment index */ -@@ -111,8 +111,8 @@ void kobject_hotplug(struct kobject *kob - goto exit; - - /* originating subsystem */ -- if (hotplug_ops && hotplug_ops->name) -- subsystem = hotplug_ops->name(kset, kobj); -+ if (uevent_ops && uevent_ops->name) -+ subsystem = uevent_ops->name(kset, kobj); - else - subsystem = kobject_name(&kset->kobj); - -@@ -134,12 +134,12 @@ void kobject_hotplug(struct kobject *kob - scratch += strlen("SEQNUM=18446744073709551616") + 1; - - /* let the kset specific function add its stuff */ -- if (hotplug_ops && hotplug_ops->hotplug) { -- retval = hotplug_ops->hotplug (kset, kobj, -+ if (uevent_ops && uevent_ops->uevent) { -+ retval = uevent_ops->uevent(kset, kobj, - &envp[i], NUM_ENVP - i, scratch, - BUFFER_SIZE - (scratch - buffer)); - if (retval) { -- pr_debug ("%s - hotplug() returned %d\n", -+ pr_debug ("%s - uevent() returned %d\n", - __FUNCTION__, retval); - goto exit; - } -@@ -147,7 +147,7 @@ void kobject_hotplug(struct kobject *kob - - /* we will send an event, request a new sequence number */ - spin_lock(&sequence_lock); -- seq = ++hotplug_seqnum; -+ seq = ++uevent_seqnum; - spin_unlock(&sequence_lock); - sprintf(seq_buff, "SEQNUM=%llu", (unsigned long long)seq); - -@@ -177,10 +177,10 @@ void kobject_hotplug(struct kobject *kob - } - - /* call uevent_helper, usually only enabled during early boot */ -- if (hotplug_path[0]) { -+ if (uevent_helper[0]) { - char *argv [3]; - -- argv [0] = hotplug_path; -+ argv [0] = uevent_helper; - argv [1] = (char *)subsystem; - argv [2] = NULL; - call_usermodehelper (argv[0], argv, envp, 0); -@@ -192,39 +192,39 @@ exit: - kfree(envp); - return; - } --EXPORT_SYMBOL(kobject_hotplug); -+EXPORT_SYMBOL_GPL(kobject_uevent); - - /** -- * add_hotplug_env_var - helper for creating hotplug environment variables -+ * add_uevent_var - helper for creating event variables - * @envp: Pointer to table of environment variables, as passed into -- * hotplug() method. -+ * uevent() method. - * @num_envp: Number of environment variable slots available, as -- * passed into hotplug() method. -+ * passed into uevent() method. - * @cur_index: Pointer to current index into @envp. It should be -- * initialized to 0 before the first call to add_hotplug_env_var(), -+ * initialized to 0 before the first call to add_uevent_var(), - * and will be incremented on success. - * @buffer: Pointer to buffer for environment variables, as passed -- * into hotplug() method. -- * @buffer_size: Length of @buffer, as passed into hotplug() method. -+ * into uevent() method. -+ * @buffer_size: Length of @buffer, as passed into uevent() method. - * @cur_len: Pointer to current length of space used in @buffer. - * Should be initialized to 0 before the first call to -- * add_hotplug_env_var(), and will be incremented on success. -+ * add_uevent_var(), and will be incremented on success. - * @format: Format for creating environment variable (of the form - * "XXX=%x") for snprintf(). - * - * Returns 0 if environment variable was added successfully or -ENOMEM - * if no space was available. - */ --int add_hotplug_env_var(char **envp, int num_envp, int *cur_index, -- char *buffer, int buffer_size, int *cur_len, -- const char *format, ...) -+int add_uevent_var(char **envp, int num_envp, int *cur_index, -+ char *buffer, int buffer_size, int *cur_len, -+ const char *format, ...) - { - va_list args; - - /* - * We check against num_envp - 1 to make sure there is at -- * least one slot left after we return, since the hotplug -- * method needs to set the last slot to NULL. -+ * least one slot left after we return, since kobject_uevent() -+ * needs to set the last slot to NULL. - */ - if (*cur_index >= num_envp - 1) - return -ENOMEM; -@@ -243,7 +243,7 @@ int add_hotplug_env_var(char **envp, int - (*cur_index)++; - return 0; - } --EXPORT_SYMBOL(add_hotplug_env_var); -+EXPORT_SYMBOL_GPL(add_uevent_var); - - static int __init kobject_uevent_init(void) - { ---- gregkh-2.6.orig/net/bluetooth/hci_sysfs.c -+++ gregkh-2.6/net/bluetooth/hci_sysfs.c -@@ -78,7 +78,7 @@ static struct class_device_attribute *bt - }; - - #ifdef CONFIG_HOTPLUG --static int bt_hotplug(struct class_device *cdev, char **envp, int num_envp, char *buf, int size) -+static int bt_uevent(struct class_device *cdev, char **envp, int num_envp, char *buf, int size) - { - struct hci_dev *hdev = class_get_devdata(cdev); - int n, i = 0; -@@ -107,7 +107,7 @@ struct class bt_class = { - .name = "bluetooth", - .release = bt_release, - #ifdef CONFIG_HOTPLUG -- .hotplug = bt_hotplug, -+ .uevent = bt_uevent, - #endif - }; - ---- gregkh-2.6.orig/net/bridge/br_sysfs_if.c -+++ gregkh-2.6/net/bridge/br_sysfs_if.c -@@ -248,7 +248,7 @@ int br_sysfs_addif(struct net_bridge_por - if (err) - goto out2; - -- kobject_hotplug(&p->kobj, KOBJ_ADD); -+ kobject_uevent(&p->kobj, KOBJ_ADD); - return 0; - out2: - kobject_del(&p->kobj); -@@ -260,7 +260,7 @@ void br_sysfs_removeif(struct net_bridge - { - pr_debug("br_sysfs_removeif\n"); - sysfs_remove_link(&p->br->ifobj, p->dev->name); -- kobject_hotplug(&p->kobj, KOBJ_REMOVE); -+ kobject_uevent(&p->kobj, KOBJ_REMOVE); - kobject_del(&p->kobj); - } - ---- gregkh-2.6.orig/net/core/net-sysfs.c -+++ gregkh-2.6/net/core/net-sysfs.c -@@ -369,14 +369,14 @@ static struct attribute_group wireless_g - #endif - - #ifdef CONFIG_HOTPLUG --static int netdev_hotplug(struct class_device *cd, char **envp, -- int num_envp, char *buf, int size) -+static int netdev_uevent(struct class_device *cd, char **envp, -+ int num_envp, char *buf, int size) - { - struct net_device *dev = to_net_dev(cd); - int i = 0; - int n; - -- /* pass interface in env to hotplug. */ -+ /* pass interface to uevent. */ - envp[i++] = buf; - n = snprintf(buf, size, "INTERFACE=%s", dev->name) + 1; - buf += n; -@@ -408,7 +408,7 @@ static struct class net_class = { - .name = "net", - .release = netdev_release, - #ifdef CONFIG_HOTPLUG -- .hotplug = netdev_hotplug, -+ .uevent = netdev_uevent, - #endif - }; - ---- gregkh-2.6.orig/arch/powerpc/kernel/vio.c -+++ gregkh-2.6/arch/powerpc/kernel/vio.c -@@ -293,6 +293,6 @@ static int vio_hotplug(struct device *de - - struct bus_type vio_bus_type = { - .name = "vio", -- .hotplug = vio_hotplug, -+ .uevent = vio_hotplug, - .match = vio_bus_match, - }; ---- gregkh-2.6.orig/drivers/macintosh/macio_asic.c -+++ gregkh-2.6/drivers/macintosh/macio_asic.c -@@ -128,7 +128,7 @@ static int macio_device_resume(struct de - return 0; - } - --static int macio_hotplug (struct device *dev, char **envp, int num_envp, -+static int macio_uevent(struct device *dev, char **envp, int num_envp, - char *buffer, int buffer_size) - { - struct macio_dev * macio_dev; -@@ -203,7 +203,7 @@ extern struct device_attribute macio_dev - struct bus_type macio_bus_type = { - .name = "macio", - .match = macio_bus_match, -- .hotplug = macio_hotplug, -+ .uevent = macio_uevent, - .suspend = macio_device_suspend, - .resume = macio_device_resume, - .dev_attrs = macio_dev_attrs, diff --git a/driver/klist-fix-broken-kref-counting-in-find-functions.patch b/driver/klist-fix-broken-kref-counting-in-find-functions.patch deleted file mode 100644 index 8895fcb543899..0000000000000 --- a/driver/klist-fix-broken-kref-counting-in-find-functions.patch +++ /dev/null @@ -1,38 +0,0 @@ -From akpm@osdl.org Sat Nov 26 20:52:06 2005 -Message-Id: <200511270448.jAR4mj6g000778@shell0.pdx.osdl.net> -From: Frank Pavlic <pavlic@de.ibm.com> -Subject: klist: Fix broken kref counting in find functions -Date: Sat, 26 Nov 2005 20:48:40 -0800 - -The klist reference counting in the find functions that use -klist_iter_init_node is broken. If the function (for example -driver_find_device) is called with a NULL start object then everything is -fine, the first call to next_device()/klist_next increases the ref-count of -the first node on the list and does nothing for the start object which is -NULL. - -If they are called with a valid start object then klist_next will decrement -the ref-count for the start object but nobody has incremented it. Logical -place to fix this would be klist_iter_init_node because the function puts a -reference of the object into the klist_iter struct. - -Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> -Signed-off-by: Frank Pavlic <pavlic@de.ibm.com> -Cc: Patrick Mochel <mochel@digitalimplant.org> -Signed-off-by: Andrew Morton <akpm@osdl.org> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> ---- - lib/klist.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- gregkh-2.6.orig/lib/klist.c -+++ gregkh-2.6/lib/klist.c -@@ -199,6 +199,8 @@ void klist_iter_init_node(struct klist * - i->i_klist = k; - i->i_head = &k->k_list; - i->i_cur = n; -+ if (n) -+ kref_get(&n->n_ref); - } - - EXPORT_SYMBOL_GPL(klist_iter_init_node); diff --git a/driver/kobject_uevent-config_net-n-fix.patch b/driver/kobject_uevent-config_net-n-fix.patch deleted file mode 100644 index f0e9f6d4b3096..0000000000000 --- a/driver/kobject_uevent-config_net-n-fix.patch +++ /dev/null @@ -1,71 +0,0 @@ -From akpm@osdl.org Tue Nov 22 23:40:53 2005 -Message-Id: <200511230736.jAN7aLdF025347@shell0.pdx.osdl.net> -From: Andrew Morton <akpm@osdl.org> -Subject: kobject_uevent CONFIG_NET=n fix -To: akpm@osdl.org, greg@kroah.com -From: akpm@osdl.org -Date: Tue, 22 Nov 2005 23:36:13 -0800 - - -lib/lib.a(kobject_uevent.o)(.text+0x25f): In function `kobject_uevent': -: undefined reference to `__alloc_skb' -lib/lib.a(kobject_uevent.o)(.text+0x2a1): In function `kobject_uevent': -: undefined reference to `skb_over_panic' -lib/lib.a(kobject_uevent.o)(.text+0x31d): In function `kobject_uevent': -: undefined reference to `skb_over_panic' -lib/lib.a(kobject_uevent.o)(.text+0x356): In function `kobject_uevent': -: undefined reference to `netlink_broadcast' -lib/lib.a(kobject_uevent.o)(.init.text+0x9): In function `kobject_uevent_init': -: undefined reference to `netlink_kernel_create' -make: *** [.tmp_vmlinux1] Error 1 - -Netlink is unconditionally enabled if CONFIG_NET, so that's OK. - -kobject_uevent.o is compiled even if !CONFIG_HOTPLUG, which is lazy. - -Let's compound the sin. - -Signed-off-by: Andrew Morton <akpm@osdl.org> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> ---- - include/linux/kobject.h | 2 +- - kernel/ksysfs.c | 3 +++ - lib/kobject_uevent.c | 4 +--- - 3 files changed, 5 insertions(+), 4 deletions(-) - ---- gregkh-2.6.orig/lib/kobject_uevent.c -+++ gregkh-2.6/lib/kobject_uevent.c -@@ -25,9 +25,7 @@ - #define BUFFER_SIZE 1024 /* buffer for the variables */ - #define NUM_ENVP 32 /* number of env pointers */ - --#if defined(CONFIG_HOTPLUG) --char uevent_helper[UEVENT_HELPER_PATH_LEN] = "/sbin/hotplug"; --u64 uevent_seqnum; -+#if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET) - static DEFINE_SPINLOCK(sequence_lock); - static struct sock *uevent_sock; - ---- gregkh-2.6.orig/include/linux/kobject.h -+++ gregkh-2.6/include/linux/kobject.h -@@ -253,7 +253,7 @@ struct subsys_attribute { - extern int subsys_create_file(struct subsystem * , struct subsys_attribute *); - extern void subsys_remove_file(struct subsystem * , struct subsys_attribute *); - --#ifdef CONFIG_HOTPLUG -+#if defined(CONFIG_HOTPLUG) & defined(CONFIG_NET) - void kobject_uevent(struct kobject *kobj, enum kobject_action action); - - int add_uevent_var(char **envp, int num_envp, int *cur_index, ---- gregkh-2.6.orig/kernel/ksysfs.c -+++ gregkh-2.6/kernel/ksysfs.c -@@ -15,6 +15,9 @@ - #include <linux/module.h> - #include <linux/init.h> - -+u64 uevent_seqnum; -+char uevent_helper[UEVENT_HELPER_PATH_LEN] = "/sbin/hotplug"; -+ - #define KERNEL_ATTR_RO(_name) \ - static struct subsys_attribute _name##_attr = __ATTR_RO(_name) - diff --git a/driver/merge-hotplug-and-uevent.patch b/driver/merge-hotplug-and-uevent.patch deleted file mode 100644 index 051ddb26e25b1..0000000000000 --- a/driver/merge-hotplug-and-uevent.patch +++ /dev/null @@ -1,449 +0,0 @@ -diff-tree 20b725254d8afa5e167e17df73a653fb8b8211e6 (from 6ff0b7d6d7ef2da3a03c24d936aa3812f33f148a) -Author: Kay Sievers <kay.sievers@suse.de> -Date: Fri Nov 11 14:43:07 2005 +0100 - -merge kobject_uevent and kobject_hotplug - -The distinction between hotplug and uevent does not make sense these -days, netlink events are the default. - -udev depends entirely on netlink uevents. Only during early boot and -in initramfs, /sbin/hotplug is needed. So merge the two functions and -provide only one interface without all the options. - -The netlink layer got a nice generic interface with named slots -recently, which is probably a better facility to plug events for -subsystem specific events. -Also the new poll() interface to /proc/mounts is a nicer way to -notify about changes than sending events through the core. -The uevents should only be used for driver core related requests to -userspace now. - -Signed-off-by: Kay Sievers <kay.sievers@suse.de> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/scsi/ipr.c | 2 - include/linux/kobject.h | 27 +--- - lib/kobject_uevent.c | 283 ++++++++++++++++-------------------------------- - 3 files changed, 104 insertions(+), 208 deletions(-) - ---- gregkh-2.6.orig/drivers/scsi/ipr.c -+++ gregkh-2.6/drivers/scsi/ipr.c -@@ -2132,7 +2132,7 @@ restart: - } - - spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); -- kobject_uevent(&ioa_cfg->host->shost_classdev.kobj, KOBJ_CHANGE, NULL); -+ kobject_hotplug(&ioa_cfg->host->shost_classdev.kobj, KOBJ_CHANGE); - LEAVE; - } - ---- gregkh-2.6.orig/include/linux/kobject.h -+++ gregkh-2.6/include/linux/kobject.h -@@ -39,11 +39,11 @@ extern u64 hotplug_seqnum; - /* the actions here must match the proper string in lib/kobject_uevent.c */ - typedef int __bitwise kobject_action_t; - enum kobject_action { -- KOBJ_ADD = (__force kobject_action_t) 0x01, /* add event, for hotplug */ -- KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* remove event, for hotplug */ -- KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* a sysfs attribute file has changed */ -- KOBJ_OFFLINE = (__force kobject_action_t) 0x04, /* offline event for hotplug devices */ -- KOBJ_ONLINE = (__force kobject_action_t) 0x05, /* online event for hotplug devices */ -+ KOBJ_ADD = (__force kobject_action_t) 0x01, /* exclusive to core */ -+ KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* exclusive to core */ -+ KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* device state change */ -+ KOBJ_OFFLINE = (__force kobject_action_t) 0x04, /* device offline */ -+ KOBJ_ONLINE = (__force kobject_action_t) 0x05, /* device online */ - }; - - struct kobject { -@@ -262,28 +262,13 @@ int add_hotplug_env_var(char **envp, int - char *buffer, int buffer_size, int *cur_len, - const char *format, ...) - __attribute__((format (printf, 7, 8))); -- --int kobject_uevent(struct kobject *kobj, -- enum kobject_action action, -- struct attribute *attr); --int kobject_uevent_atomic(struct kobject *kobj, -- enum kobject_action action, -- struct attribute *attr); -- - #else - static inline void kobject_hotplug(struct kobject *kobj, enum kobject_action action) { } -+ - static inline int add_hotplug_env_var(char **envp, int num_envp, int *cur_index, - char *buffer, int buffer_size, int *cur_len, - const char *format, ...) - { return 0; } --int kobject_uevent(struct kobject *kobj, -- enum kobject_action action, -- struct attribute *attr) --{ return 0; } --int kobject_uevent_atomic(struct kobject *kobj, -- enum kobject_action action, -- struct attribute *attr) --{ return 0; } - #endif - - #endif /* __KERNEL__ */ ---- gregkh-2.6.orig/lib/kobject_uevent.c -+++ gregkh-2.6/lib/kobject_uevent.c -@@ -29,6 +29,7 @@ - char hotplug_path[HOTPLUG_PATH_LEN] = "/sbin/hotplug"; - u64 hotplug_seqnum; - static DEFINE_SPINLOCK(sequence_lock); -+static struct sock *uevent_sock; - - static char *action_to_string(enum kobject_action action) - { -@@ -48,123 +49,6 @@ static char *action_to_string(enum kobje - } - } - --static struct sock *uevent_sock; -- --/** -- * send_uevent - notify userspace by sending event through netlink socket -- * -- * @signal: signal name -- * @obj: object path (kobject) -- * @envp: possible hotplug environment to pass with the message -- * @gfp_mask: -- */ --static int send_uevent(const char *signal, const char *obj, -- char **envp, gfp_t gfp_mask) --{ -- struct sk_buff *skb; -- char *pos; -- int len; -- -- if (!uevent_sock) -- return -EIO; -- -- len = strlen(signal) + 1; -- len += strlen(obj) + 1; -- -- /* allocate buffer with the maximum possible message size */ -- skb = alloc_skb(len + BUFFER_SIZE, gfp_mask); -- if (!skb) -- return -ENOMEM; -- -- pos = skb_put(skb, len); -- sprintf(pos, "%s@%s", signal, obj); -- -- /* copy the environment key by key to our continuous buffer */ -- if (envp) { -- int i; -- -- for (i = 2; envp[i]; i++) { -- len = strlen(envp[i]) + 1; -- pos = skb_put(skb, len); -- strcpy(pos, envp[i]); -- } -- } -- -- NETLINK_CB(skb).dst_group = 1; -- return netlink_broadcast(uevent_sock, skb, 0, 1, gfp_mask); --} -- --static int do_kobject_uevent(struct kobject *kobj, enum kobject_action action, -- struct attribute *attr, gfp_t gfp_mask) --{ -- char *path; -- char *attrpath; -- char *signal; -- int len; -- int rc = -ENOMEM; -- -- path = kobject_get_path(kobj, gfp_mask); -- if (!path) -- return -ENOMEM; -- -- signal = action_to_string(action); -- if (!signal) -- return -EINVAL; -- -- if (attr) { -- len = strlen(path); -- len += strlen(attr->name) + 2; -- attrpath = kmalloc(len, gfp_mask); -- if (!attrpath) -- goto exit; -- sprintf(attrpath, "%s/%s", path, attr->name); -- rc = send_uevent(signal, attrpath, NULL, gfp_mask); -- kfree(attrpath); -- } else -- rc = send_uevent(signal, path, NULL, gfp_mask); -- --exit: -- kfree(path); -- return rc; --} -- --/** -- * kobject_uevent - notify userspace by sending event through netlink socket -- * -- * @signal: signal name -- * @kobj: struct kobject that the event is happening to -- * @attr: optional struct attribute the event belongs to -- */ --int kobject_uevent(struct kobject *kobj, enum kobject_action action, -- struct attribute *attr) --{ -- return do_kobject_uevent(kobj, action, attr, GFP_KERNEL); --} --EXPORT_SYMBOL_GPL(kobject_uevent); -- --int kobject_uevent_atomic(struct kobject *kobj, enum kobject_action action, -- struct attribute *attr) --{ -- return do_kobject_uevent(kobj, action, attr, GFP_ATOMIC); --} --EXPORT_SYMBOL_GPL(kobject_uevent_atomic); -- --static int __init kobject_uevent_init(void) --{ -- uevent_sock = netlink_kernel_create(NETLINK_KOBJECT_UEVENT, 1, NULL, -- THIS_MODULE); -- -- if (!uevent_sock) { -- printk(KERN_ERR -- "kobject_uevent: unable to create netlink socket!\n"); -- return -ENODEV; -- } -- -- return 0; --} -- --postcore_initcall(kobject_uevent_init); -- - /** - * kobject_hotplug - notify userspace by executing /sbin/hotplug - * -@@ -173,95 +57,84 @@ postcore_initcall(kobject_uevent_init); - */ - void kobject_hotplug(struct kobject *kobj, enum kobject_action action) - { -- char *argv [3]; -- char **envp = NULL; -- char *buffer = NULL; -- char *seq_buff; -+ char **envp; -+ char *buffer; - char *scratch; -+ const char *action_string; -+ const char *devpath = NULL; -+ const char *subsystem; -+ struct kobject *top_kobj; -+ struct kset *kset; -+ struct kset_hotplug_ops *hotplug_ops; -+ u64 seq; -+ char *seq_buff; - int i = 0; - int retval; -- char *kobj_path = NULL; -- const char *name = NULL; -- char *action_string; -- u64 seq; -- struct kobject *top_kobj = kobj; -- struct kset *kset; -- static struct kset_hotplug_ops null_hotplug_ops; -- struct kset_hotplug_ops *hotplug_ops = &null_hotplug_ops; - -- /* If this kobj does not belong to a kset, -- try to find a parent that does. */ -+ pr_debug("%s\n", __FUNCTION__); -+ -+ action_string = action_to_string(action); -+ if (!action_string) -+ return; -+ -+ /* search the kset we belong to */ -+ top_kobj = kobj; - if (!top_kobj->kset && top_kobj->parent) { - do { - top_kobj = top_kobj->parent; - } while (!top_kobj->kset && top_kobj->parent); - } -- -- if (top_kobj->kset) -- kset = top_kobj->kset; -- else -+ if (!top_kobj->kset) - return; - -- if (kset->hotplug_ops) -- hotplug_ops = kset->hotplug_ops; -+ kset = top_kobj->kset; -+ hotplug_ops = kset->hotplug_ops; - -- /* If the kset has a filter operation, call it. -- Skip the event, if the filter returns zero. */ -- if (hotplug_ops->filter) { -+ /* skip the event, if the filter returns zero. */ -+ if (hotplug_ops && hotplug_ops->filter) - if (!hotplug_ops->filter(kset, kobj)) - return; -- } -- -- pr_debug ("%s\n", __FUNCTION__); -- -- action_string = action_to_string(action); -- if (!action_string) -- return; - -- envp = kmalloc(NUM_ENVP * sizeof (char *), GFP_KERNEL); -+ /* environment index */ -+ envp = kzalloc(NUM_ENVP * sizeof (char *), GFP_KERNEL); - if (!envp) - return; -- memset (envp, 0x00, NUM_ENVP * sizeof (char *)); - -+ /* environment values */ - buffer = kmalloc(BUFFER_SIZE, GFP_KERNEL); - if (!buffer) - goto exit; - -- if (hotplug_ops->name) -- name = hotplug_ops->name(kset, kobj); -- if (name == NULL) -- name = kobject_name(&kset->kobj); -- -- argv [0] = hotplug_path; -- argv [1] = (char *)name; /* won't be changed but 'const' has to go */ -- argv [2] = NULL; -- -- /* minimal command environment */ -- envp [i++] = "HOME=/"; -- envp [i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin"; -+ /* complete object path */ -+ devpath = kobject_get_path(kobj, GFP_KERNEL); -+ if (!devpath) -+ goto exit; - -- scratch = buffer; -+ /* originating subsystem */ -+ if (hotplug_ops && hotplug_ops->name) -+ subsystem = hotplug_ops->name(kset, kobj); -+ else -+ subsystem = kobject_name(&kset->kobj); - -+ /* event environemnt for helper process only */ -+ envp[i++] = "HOME=/"; -+ envp[i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin"; -+ -+ /* default keys */ -+ scratch = buffer; - envp [i++] = scratch; - scratch += sprintf(scratch, "ACTION=%s", action_string) + 1; -- -- kobj_path = kobject_get_path(kobj, GFP_KERNEL); -- if (!kobj_path) -- goto exit; -- - envp [i++] = scratch; -- scratch += sprintf (scratch, "DEVPATH=%s", kobj_path) + 1; -- -+ scratch += sprintf (scratch, "DEVPATH=%s", devpath) + 1; - envp [i++] = scratch; -- scratch += sprintf(scratch, "SUBSYSTEM=%s", name) + 1; -+ scratch += sprintf(scratch, "SUBSYSTEM=%s", subsystem) + 1; - -- /* reserve space for the sequence, -- * put the real one in after the hotplug call */ -+ /* just reserve the space, overwrite it after kset call has returned */ - envp[i++] = seq_buff = scratch; - scratch += strlen("SEQNUM=18446744073709551616") + 1; - -- if (hotplug_ops->hotplug) { -- /* have the kset specific function add its stuff */ -+ /* let the kset specific function add its stuff */ -+ if (hotplug_ops && hotplug_ops->hotplug) { - retval = hotplug_ops->hotplug (kset, kobj, - &envp[i], NUM_ENVP - i, scratch, - BUFFER_SIZE - (scratch - buffer)); -@@ -272,27 +145,49 @@ void kobject_hotplug(struct kobject *kob - } - } - -+ /* we will send an event, request a new sequence number */ - spin_lock(&sequence_lock); - seq = ++hotplug_seqnum; - spin_unlock(&sequence_lock); - sprintf(seq_buff, "SEQNUM=%llu", (unsigned long long)seq); - -- pr_debug ("%s: %s %s seq=%llu %s %s %s %s %s\n", -- __FUNCTION__, argv[0], argv[1], (unsigned long long)seq, -- envp[0], envp[1], envp[2], envp[3], envp[4]); -+ /* send netlink message */ -+ if (uevent_sock) { -+ struct sk_buff *skb; -+ size_t len; -+ -+ /* allocate message with the maximum possible size */ -+ len = strlen(action_string) + strlen(devpath) + 2; -+ skb = alloc_skb(len + BUFFER_SIZE, GFP_KERNEL); -+ if (skb) { -+ /* add header */ -+ scratch = skb_put(skb, len); -+ sprintf(scratch, "%s@%s", action_string, devpath); -+ -+ /* copy keys to our continuous event payload buffer */ -+ for (i = 2; envp[i]; i++) { -+ len = strlen(envp[i]) + 1; -+ scratch = skb_put(skb, len); -+ strcpy(scratch, envp[i]); -+ } - -- send_uevent(action_string, kobj_path, envp, GFP_KERNEL); -- -- if (!hotplug_path[0]) -- goto exit; -+ NETLINK_CB(skb).dst_group = 1; -+ netlink_broadcast(uevent_sock, skb, 0, 1, GFP_KERNEL); -+ } -+ } - -- retval = call_usermodehelper (argv[0], argv, envp, 0); -- if (retval) -- pr_debug ("%s - call_usermodehelper returned %d\n", -- __FUNCTION__, retval); -+ /* call uevent_helper, usually only enabled during early boot */ -+ if (hotplug_path[0]) { -+ char *argv [3]; -+ -+ argv [0] = hotplug_path; -+ argv [1] = (char *)subsystem; -+ argv [2] = NULL; -+ call_usermodehelper (argv[0], argv, envp, 0); -+ } - - exit: -- kfree(kobj_path); -+ kfree(devpath); - kfree(buffer); - kfree(envp); - return; -@@ -350,4 +245,20 @@ int add_hotplug_env_var(char **envp, int - } - EXPORT_SYMBOL(add_hotplug_env_var); - -+static int __init kobject_uevent_init(void) -+{ -+ uevent_sock = netlink_kernel_create(NETLINK_KOBJECT_UEVENT, 1, NULL, -+ THIS_MODULE); -+ -+ if (!uevent_sock) { -+ printk(KERN_ERR -+ "kobject_uevent: unable to create netlink socket!\n"); -+ return -ENODEV; -+ } -+ -+ return 0; -+} -+ -+postcore_initcall(kobject_uevent_init); -+ - #endif /* CONFIG_HOTPLUG */ diff --git a/driver/move-pnpbios-usermod_helper.patch b/driver/move-pnpbios-usermod_helper.patch deleted file mode 100644 index 56e344f194b81..0000000000000 --- a/driver/move-pnpbios-usermod_helper.patch +++ /dev/null @@ -1,52 +0,0 @@ -diff-tree 1939c18b67e60ded9e4151bca6bfe89a5b5d2d60 (from 6e6ece5dc6022e8086c565498d23511bbceda811) -Author: Kay Sievers <kay.sievers@suse.de> -Date: Fri Nov 11 04:25:06 2005 +0100 - -keep pnpbios usermod_helper away from hotplug_path[] - -These days we use udev to manage all kernel events. /proc/sys/kernel/hotplug -will usually be disabled by an init-script. pnpnbios is not integrated with -the driver core and should stay away from the now disabled /sbin/hotplug. - -Set the helper to /sbin/phpbios, even when there is probably no current -user of this faciliy. If it's needed, it should definitely get proper driver -core integration instead of forking binaries from the kernel. - -Signed-off-by: Kay Sievers <kay.sievers@suse.de> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/pnp/pnpbios/core.c | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) - ---- gregkh-2.6.orig/drivers/pnp/pnpbios/core.c -+++ gregkh-2.6/drivers/pnp/pnpbios/core.c -@@ -56,7 +56,6 @@ - #include <linux/mm.h> - #include <linux/smp.h> - #include <linux/slab.h> --#include <linux/kobject_uevent.h> - #include <linux/completion.h> - #include <linux/spinlock.h> - #include <linux/dmi.h> -@@ -106,8 +105,6 @@ static int pnp_dock_event(int dock, stru - char *argv [3], **envp, *buf, *scratch; - int i = 0, value; - -- if (!hotplug_path [0]) -- return -ENOENT; - if (!current->fs->root) { - return -EAGAIN; - } -@@ -119,8 +116,9 @@ static int pnp_dock_event(int dock, stru - return -ENOMEM; - } - -- /* only one standardized param to hotplug command: type */ -- argv [0] = hotplug_path; -+ /* FIXME: if there are actual users of this, it should be integrated into -+ * the driver core and use the usual infrastructure like sysfs and uevents */ -+ argv [0] = "/sbin/pnpbios"; - argv [1] = "dock"; - argv [2] = NULL; - diff --git a/driver/net-swich-device-attribute-creation-to-default-attrs.patch b/driver/net-swich-device-attribute-creation-to-default-attrs.patch deleted file mode 100644 index 0484f2431fca5..0000000000000 --- a/driver/net-swich-device-attribute-creation-to-default-attrs.patch +++ /dev/null @@ -1,159 +0,0 @@ -From kay.sievers@vrfy.org Sun Dec 18 16:47:03 2005 -Date: Mon, 19 Dec 2005 01:42:56 +0100 -From: Kay Sievers <kay.sievers@vrfy.org> -Cc: Greg KH <greg@kroah.com> -Subject: net: swich device attribute creation to default attrs -Message-ID: <20051219004256.GA29285@vrfy.org> -Content-Disposition: inline - -Recent udev versions don't longer cover bad sysfs timing with built-in -logic. Explicit rules are required to do that. For net devices, the -following is needed: - ACTION=="add", SUBSYSTEM=="net", WAIT_FOR_SYSFS="address" -to handle access to net device properties from an event handler without -races. - -This patch changes the main net attributes to be created by the driver -core, which is done _before_ the event is sent out and will not require -the stat() loop of the WAIT_FOR_SYSFS key. - -Signed-off-by: Kay Sievers <kay.sievers@suse.de> -Acked-by: David S. Miller <davem@davemloft.net> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> ---- - net/core/net-sysfs.c | 68 +++++++++++++++------------------------------------ - 1 file changed, 21 insertions(+), 47 deletions(-) - ---- gregkh-2.6.orig/net/core/net-sysfs.c -+++ gregkh-2.6/net/core/net-sysfs.c -@@ -84,16 +84,11 @@ static ssize_t netdev_store(struct class - return ret; - } - --/* generate a read-only network device class attribute */ --#define NETDEVICE_ATTR(field, format_string) \ --NETDEVICE_SHOW(field, format_string) \ --static CLASS_DEVICE_ATTR(field, S_IRUGO, show_##field, NULL) \ -- --NETDEVICE_ATTR(addr_len, fmt_dec); --NETDEVICE_ATTR(iflink, fmt_dec); --NETDEVICE_ATTR(ifindex, fmt_dec); --NETDEVICE_ATTR(features, fmt_long_hex); --NETDEVICE_ATTR(type, fmt_dec); -+NETDEVICE_SHOW(addr_len, fmt_dec); -+NETDEVICE_SHOW(iflink, fmt_dec); -+NETDEVICE_SHOW(ifindex, fmt_dec); -+NETDEVICE_SHOW(features, fmt_long_hex); -+NETDEVICE_SHOW(type, fmt_dec); - - /* use same locking rules as GIFHWADDR ioctl's */ - static ssize_t format_addr(char *buf, const unsigned char *addr, int len) -@@ -136,10 +131,6 @@ static ssize_t show_carrier(struct class - return -EINVAL; - } - --static CLASS_DEVICE_ATTR(address, S_IRUGO, show_address, NULL); --static CLASS_DEVICE_ATTR(broadcast, S_IRUGO, show_broadcast, NULL); --static CLASS_DEVICE_ATTR(carrier, S_IRUGO, show_carrier, NULL); -- - /* read-write attributes */ - NETDEVICE_SHOW(mtu, fmt_dec); - -@@ -153,8 +144,6 @@ static ssize_t store_mtu(struct class_de - return netdev_store(dev, buf, len, change_mtu); - } - --static CLASS_DEVICE_ATTR(mtu, S_IRUGO | S_IWUSR, show_mtu, store_mtu); -- - NETDEVICE_SHOW(flags, fmt_hex); - - static int change_flags(struct net_device *net, unsigned long new_flags) -@@ -167,8 +156,6 @@ static ssize_t store_flags(struct class_ - return netdev_store(dev, buf, len, change_flags); - } - --static CLASS_DEVICE_ATTR(flags, S_IRUGO | S_IWUSR, show_flags, store_flags); -- - NETDEVICE_SHOW(tx_queue_len, fmt_ulong); - - static int change_tx_queue_len(struct net_device *net, unsigned long new_len) -@@ -182,9 +169,6 @@ static ssize_t store_tx_queue_len(struct - return netdev_store(dev, buf, len, change_tx_queue_len); - } - --static CLASS_DEVICE_ATTR(tx_queue_len, S_IRUGO | S_IWUSR, show_tx_queue_len, -- store_tx_queue_len); -- - NETDEVICE_SHOW(weight, fmt_dec); - - static int change_weight(struct net_device *net, unsigned long new_weight) -@@ -198,24 +182,21 @@ static ssize_t store_weight(struct class - return netdev_store(dev, buf, len, change_weight); - } - --static CLASS_DEVICE_ATTR(weight, S_IRUGO | S_IWUSR, show_weight, -- store_weight); -- -- --static struct class_device_attribute *net_class_attributes[] = { -- &class_device_attr_ifindex, -- &class_device_attr_iflink, -- &class_device_attr_addr_len, -- &class_device_attr_tx_queue_len, -- &class_device_attr_features, -- &class_device_attr_mtu, -- &class_device_attr_flags, -- &class_device_attr_weight, -- &class_device_attr_type, -- &class_device_attr_address, -- &class_device_attr_broadcast, -- &class_device_attr_carrier, -- NULL -+static struct class_device_attribute net_class_attributes[] = { -+ __ATTR(addr_len, S_IRUGO, show_addr_len, NULL), -+ __ATTR(iflink, S_IRUGO, show_iflink, NULL), -+ __ATTR(ifindex, S_IRUGO, show_ifindex, NULL), -+ __ATTR(features, S_IRUGO, show_features, NULL), -+ __ATTR(type, S_IRUGO, show_type, NULL), -+ __ATTR(address, S_IRUGO, show_address, NULL), -+ __ATTR(broadcast, S_IRUGO, show_broadcast, NULL), -+ __ATTR(carrier, S_IRUGO, show_carrier, NULL), -+ __ATTR(mtu, S_IRUGO | S_IWUSR, show_mtu, store_mtu), -+ __ATTR(flags, S_IRUGO | S_IWUSR, show_flags, store_flags), -+ __ATTR(tx_queue_len, S_IRUGO | S_IWUSR, show_tx_queue_len, -+ store_tx_queue_len), -+ __ATTR(weight, S_IRUGO | S_IWUSR, show_weight, store_weight), -+ {} - }; - - /* Show a given an attribute in the statistics group */ -@@ -407,6 +388,7 @@ static void netdev_release(struct class_ - static struct class net_class = { - .name = "net", - .release = netdev_release, -+ .class_dev_attrs = net_class_attributes, - #ifdef CONFIG_HOTPLUG - .uevent = netdev_uevent, - #endif -@@ -431,8 +413,6 @@ void netdev_unregister_sysfs(struct net_ - int netdev_register_sysfs(struct net_device *net) - { - struct class_device *class_dev = &(net->class_dev); -- int i; -- struct class_device_attribute *attr; - int ret; - - class_dev->class = &net_class; -@@ -442,12 +422,6 @@ int netdev_register_sysfs(struct net_dev - if ((ret = class_device_register(class_dev))) - goto out; - -- for (i = 0; (attr = net_class_attributes[i]) != NULL; i++) { -- if ((ret = class_device_create_file(class_dev, attr))) -- goto out_unreg; -- } -- -- - if (net->get_stats && - (ret = sysfs_create_group(&class_dev->kobj, &netstat_group))) - goto out_unreg; diff --git a/driver/platform-device-del.patch b/driver/platform-device-del.patch deleted file mode 100644 index de62f234b5534..0000000000000 --- a/driver/platform-device-del.patch +++ /dev/null @@ -1,106 +0,0 @@ -From dtor_core@ameritech.net Fri Dec 9 22:55:02 2005 -Message-Id: <20051210064750.775640000.dtor_core@ameritech.net> -Date: Sat, 10 Dec 2005 01:36:27 -0500 -From: Dmitry Torokhov <dtor_core@ameritech.net> -To: Greg KH <greg@kroah.com> -Cc: Russell King <rmk+lkml@arm.linux.org.uk>, Jean Delvare <khali@linux-fr.org> -Subject: Driver Core: Add platform_device_del() -Content-Disposition: inline; filename=platform-device-del.patch - -Driver core: add platform_device_del function - -Having platform_device_del90 allows more straightforward error -handling code in drivers registering platform devices. - -Signed-off-by: Dmitry Torokhov <dtor@mail.ru> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> ---- - drivers/base/platform.c | 45 ++++++++++++++++++++++++++-------------- - include/linux/platform_device.h | 1 - 2 files changed, 31 insertions(+), 15 deletions(-) - ---- gregkh-2.6.orig/drivers/base/platform.c -+++ gregkh-2.6/drivers/base/platform.c -@@ -168,7 +168,7 @@ struct platform_device *platform_device_ - pa->pdev.dev.release = platform_device_release; - } - -- return pa ? &pa->pdev : NULL; -+ return pa ? &pa->pdev : NULL; - } - EXPORT_SYMBOL_GPL(platform_device_alloc); - -@@ -282,24 +282,13 @@ int platform_device_add(struct platform_ - EXPORT_SYMBOL_GPL(platform_device_add); - - /** -- * platform_device_register - add a platform-level device -- * @pdev: platform device we're adding -- * -- */ --int platform_device_register(struct platform_device * pdev) --{ -- device_initialize(&pdev->dev); -- return platform_device_add(pdev); --} -- --/** -- * platform_device_unregister - remove a platform-level device -+ * platform_device_del - remove a platform-level device - * @pdev: platform device we're removing - * - * Note that this function will also release all memory- and port-based - * resources owned by the device (@dev->resource). - */ --void platform_device_unregister(struct platform_device * pdev) -+void platform_device_del(struct platform_device *pdev) - { - int i; - -@@ -310,9 +299,35 @@ void platform_device_unregister(struct p - release_resource(r); - } - -- device_unregister(&pdev->dev); -+ device_del(&pdev->dev); - } - } -+EXPORT_SYMBOL_GPL(platform_device_del); -+ -+/** -+ * platform_device_register - add a platform-level device -+ * @pdev: platform device we're adding -+ * -+ */ -+int platform_device_register(struct platform_device * pdev) -+{ -+ device_initialize(&pdev->dev); -+ return platform_device_add(pdev); -+} -+ -+/** -+ * platform_device_unregister - unregister a platform-level device -+ * @pdev: platform device we're unregistering -+ * -+ * Unregistration is done in 2 steps. Fisrt we release all resources -+ * and remove it from the sybsystem, then we drop reference count by -+ * calling platform_device_put(). -+ */ -+void platform_device_unregister(struct platform_device * pdev) -+{ -+ platform_device_del(pdev); -+ platform_device_put(pdev); -+} - - /** - * platform_device_register_simple ---- gregkh-2.6.orig/include/linux/platform_device.h -+++ gregkh-2.6/include/linux/platform_device.h -@@ -41,6 +41,7 @@ extern struct platform_device *platform_ - extern int platform_device_add_resources(struct platform_device *pdev, struct resource *res, unsigned int num); - extern int platform_device_add_data(struct platform_device *pdev, void *data, size_t size); - extern int platform_device_add(struct platform_device *pdev); -+extern void platform_device_del(struct platform_device *pdev); - extern void platform_device_put(struct platform_device *pdev); - - struct platform_driver { diff --git a/driver/platform-rearange-exports.patch b/driver/platform-rearange-exports.patch deleted file mode 100644 index c02bb88ba024b..0000000000000 --- a/driver/platform-rearange-exports.patch +++ /dev/null @@ -1,118 +0,0 @@ -From dtor_core@ameritech.net Fri Dec 9 22:54:49 2005 -Message-Id: <20051210064750.889604000.dtor_core@ameritech.net> -Date: Sat, 10 Dec 2005 01:36:28 -0500 -From: Dmitry Torokhov <dtor_core@ameritech.net> -To: Greg KH <greg@kroah.com> -Cc: Russell King <rmk+lkml@arm.linux.org.uk>, Jean Delvare <khali@linux-fr.org> -Subject: Driver Core: Rearrange exports in platform.c -Content-Disposition: inline; filename=platform-rearange-exports.patch - -Driver core: rearrange exports in platform.c - -The new way is to specify export right after symbol definition. -Rearrange exports to follow new style to avoid mixing two styles -in one file. - -Signed-off-by: Dmitry Torokhov <dtor@mail.ru> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> ---- - drivers/base/platform.c | 21 ++++++++++----------- - 1 file changed, 10 insertions(+), 11 deletions(-) - ---- gregkh-2.6.orig/drivers/base/platform.c -+++ gregkh-2.6/drivers/base/platform.c -@@ -25,6 +25,7 @@ - struct device platform_bus = { - .bus_id = "platform", - }; -+EXPORT_SYMBOL_GPL(platform_bus); - - /** - * platform_get_resource - get a resource for a device -@@ -49,6 +50,7 @@ platform_get_resource(struct platform_de - } - return NULL; - } -+EXPORT_SYMBOL_GPL(platform_get_resource); - - /** - * platform_get_irq - get an IRQ for a device -@@ -61,6 +63,7 @@ int platform_get_irq(struct platform_dev - - return r ? r->start : 0; - } -+EXPORT_SYMBOL_GPL(platform_get_irq); - - /** - * platform_get_resource_byname - get a resource for a device by name -@@ -84,6 +87,7 @@ platform_get_resource_byname(struct plat - } - return NULL; - } -+EXPORT_SYMBOL_GPL(platform_get_resource_byname); - - /** - * platform_get_irq - get an IRQ for a device -@@ -96,6 +100,7 @@ int platform_get_irq_byname(struct platf - - return r ? r->start : 0; - } -+EXPORT_SYMBOL_GPL(platform_get_irq_byname); - - /** - * platform_add_devices - add a numbers of platform devices -@@ -117,6 +122,7 @@ int platform_add_devices(struct platform - - return ret; - } -+EXPORT_SYMBOL_GPL(platform_add_devices); - - struct platform_object { - struct platform_device pdev; -@@ -314,6 +320,7 @@ int platform_device_register(struct plat - device_initialize(&pdev->dev); - return platform_device_add(pdev); - } -+EXPORT_SYMBOL_GPL(platform_device_register); - - /** - * platform_device_unregister - unregister a platform-level device -@@ -328,6 +335,7 @@ void platform_device_unregister(struct p - platform_device_del(pdev); - platform_device_put(pdev); - } -+EXPORT_SYMBOL_GPL(platform_device_unregister); - - /** - * platform_device_register_simple -@@ -370,6 +378,7 @@ error: - platform_device_put(pdev); - return ERR_PTR(retval); - } -+EXPORT_SYMBOL_GPL(platform_device_register_simple); - - static int platform_drv_probe(struct device *_dev) - { -@@ -491,6 +500,7 @@ struct bus_type platform_bus_type = { - .suspend = platform_suspend, - .resume = platform_resume, - }; -+EXPORT_SYMBOL_GPL(platform_bus_type); - - int __init platform_bus_init(void) - { -@@ -519,14 +529,3 @@ u64 dma_get_required_mask(struct device - } - EXPORT_SYMBOL_GPL(dma_get_required_mask); - #endif -- --EXPORT_SYMBOL_GPL(platform_bus); --EXPORT_SYMBOL_GPL(platform_bus_type); --EXPORT_SYMBOL_GPL(platform_add_devices); --EXPORT_SYMBOL_GPL(platform_device_register); --EXPORT_SYMBOL_GPL(platform_device_register_simple); --EXPORT_SYMBOL_GPL(platform_device_unregister); --EXPORT_SYMBOL_GPL(platform_get_irq); --EXPORT_SYMBOL_GPL(platform_get_resource); --EXPORT_SYMBOL_GPL(platform_get_irq_byname); --EXPORT_SYMBOL_GPL(platform_get_resource_byname); diff --git a/driver/remove-KOBJECT_UEVENT.patch b/driver/remove-KOBJECT_UEVENT.patch deleted file mode 100644 index af662254149c9..0000000000000 --- a/driver/remove-KOBJECT_UEVENT.patch +++ /dev/null @@ -1,290 +0,0 @@ -diff-tree cf1b7672a58bb17ea9b1fcdcf5df554099b3a31d (from bf9558fd631a02723c6b154400645a7a17ccaa54) -Author: Kay Sievers <kay.sievers@suse.de> -Date: Fri Nov 11 05:33:52 2005 +0100 - -remove CONFIG_KOBJECT_UEVENT option - -It makes zero sense to have hotplug, but not the netlink -events enabled today. Remove this option and merge the -kobject_uevent.h header into the kobject.h header file. - -Signed-off-by: Kay Sievers <kay.sievers@suse.de> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - MAINTAINERS | 6 ---- - drivers/input/input.c | 1 - drivers/s390/crypto/z90main.c | 1 - include/linux/kobject.h | 35 ++++++++++++++++++++++++- - include/linux/kobject_uevent.h | 57 ----------------------------------------- - init/Kconfig | 19 ------------- - kernel/sysctl.c | 4 -- - lib/kobject_uevent.c | 24 +++-------------- - 8 files changed, 40 insertions(+), 107 deletions(-) - ---- gregkh-2.6.orig/MAINTAINERS -+++ gregkh-2.6/MAINTAINERS -@@ -1476,12 +1476,6 @@ W: http://nfs.sourceforge.net/ - W: http://www.cse.unsw.edu.au/~neilb/patches/linux-devel/ - S: Maintained - --KERNEL EVENT LAYER (KOBJECT_UEVENT) --P: Robert Love --M: rml@novell.com --L: linux-kernel@vger.kernel.org --S: Maintained -- - KEXEC - P: Eric Biederman - P: Randy Dunlap ---- gregkh-2.6.orig/drivers/input/input.c -+++ gregkh-2.6/drivers/input/input.c -@@ -18,7 +18,6 @@ - #include <linux/random.h> - #include <linux/major.h> - #include <linux/proc_fs.h> --#include <linux/kobject_uevent.h> - #include <linux/interrupt.h> - #include <linux/poll.h> - #include <linux/device.h> ---- gregkh-2.6.orig/drivers/s390/crypto/z90main.c -+++ gregkh-2.6/drivers/s390/crypto/z90main.c -@@ -34,7 +34,6 @@ - #include <linux/miscdevice.h> - #include <linux/module.h> - #include <linux/moduleparam.h> --#include <linux/kobject_uevent.h> - #include <linux/proc_fs.h> - #include <linux/syscalls.h> - #include "z90crypt.h" ---- gregkh-2.6.orig/include/linux/kobject.h -+++ gregkh-2.6/include/linux/kobject.h -@@ -23,15 +23,31 @@ - #include <linux/spinlock.h> - #include <linux/rwsem.h> - #include <linux/kref.h> --#include <linux/kobject_uevent.h> - #include <linux/kernel.h> - #include <asm/atomic.h> - - #define KOBJ_NAME_LEN 20 - -+#define HOTPLUG_PATH_LEN 256 -+ -+/* path to the userspace helper executed on an event */ -+extern char hotplug_path[]; -+ - /* counter to tag the hotplug event, read only except for the kobject core */ - extern u64 hotplug_seqnum; - -+/* the actions here must match the proper string in lib/kobject_uevent.c */ -+typedef int __bitwise kobject_action_t; -+enum kobject_action { -+ KOBJ_ADD = (__force kobject_action_t) 0x01, /* add event, for hotplug */ -+ KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* remove event, for hotplug */ -+ KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* a sysfs attribute file has changed */ -+ KOBJ_MOUNT = (__force kobject_action_t) 0x04, /* mount event for block devices */ -+ KOBJ_UMOUNT = (__force kobject_action_t) 0x05, /* umount event for block devices */ -+ KOBJ_OFFLINE = (__force kobject_action_t) 0x06, /* offline event for hotplug devices */ -+ KOBJ_ONLINE = (__force kobject_action_t) 0x07, /* online event for hotplug devices */ -+}; -+ - struct kobject { - const char * k_name; - char name[KOBJ_NAME_LEN]; -@@ -243,16 +259,33 @@ extern void subsys_remove_file(struct su - - #ifdef CONFIG_HOTPLUG - void kobject_hotplug(struct kobject *kobj, enum kobject_action action); -+ - int add_hotplug_env_var(char **envp, int num_envp, int *cur_index, - char *buffer, int buffer_size, int *cur_len, - const char *format, ...) - __attribute__((format (printf, 7, 8))); -+ -+int kobject_uevent(struct kobject *kobj, -+ enum kobject_action action, -+ struct attribute *attr); -+int kobject_uevent_atomic(struct kobject *kobj, -+ enum kobject_action action, -+ struct attribute *attr); -+ - #else - static inline void kobject_hotplug(struct kobject *kobj, enum kobject_action action) { } - static inline int add_hotplug_env_var(char **envp, int num_envp, int *cur_index, - char *buffer, int buffer_size, int *cur_len, - const char *format, ...) - { return 0; } -+int kobject_uevent(struct kobject *kobj, -+ enum kobject_action action, -+ struct attribute *attr) -+{ return 0; } -+int kobject_uevent_atomic(struct kobject *kobj, -+ enum kobject_action action, -+ struct attribute *attr) -+{ return 0; } - #endif - - #endif /* __KERNEL__ */ ---- gregkh-2.6.orig/include/linux/kobject_uevent.h -+++ /dev/null -@@ -1,57 +0,0 @@ --/* -- * kobject_uevent.h - list of kobject user events that can be generated -- * -- * Copyright (C) 2004 IBM Corp. -- * Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com> -- * -- * This file is released under the GPLv2. -- * -- */ -- --#ifndef _KOBJECT_EVENT_H_ --#define _KOBJECT_EVENT_H_ -- --#define HOTPLUG_PATH_LEN 256 -- --/* path to the hotplug userspace helper executed on an event */ --extern char hotplug_path[]; -- --/* -- * If you add an action here, you must also add the proper string to the -- * lib/kobject_uevent.c file. -- */ --typedef int __bitwise kobject_action_t; --enum kobject_action { -- KOBJ_ADD = (__force kobject_action_t) 0x01, /* add event, for hotplug */ -- KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* remove event, for hotplug */ -- KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* a sysfs attribute file has changed */ -- KOBJ_MOUNT = (__force kobject_action_t) 0x04, /* mount event for block devices */ -- KOBJ_UMOUNT = (__force kobject_action_t) 0x05, /* umount event for block devices */ -- KOBJ_OFFLINE = (__force kobject_action_t) 0x06, /* offline event for hotplug devices */ -- KOBJ_ONLINE = (__force kobject_action_t) 0x07, /* online event for hotplug devices */ --}; -- -- --#ifdef CONFIG_KOBJECT_UEVENT --int kobject_uevent(struct kobject *kobj, -- enum kobject_action action, -- struct attribute *attr); --int kobject_uevent_atomic(struct kobject *kobj, -- enum kobject_action action, -- struct attribute *attr); --#else --static inline int kobject_uevent(struct kobject *kobj, -- enum kobject_action action, -- struct attribute *attr) --{ -- return 0; --} --static inline int kobject_uevent_atomic(struct kobject *kobj, -- enum kobject_action action, -- struct attribute *attr) --{ -- return 0; --} --#endif -- --#endif ---- gregkh-2.6.orig/init/Kconfig -+++ gregkh-2.6/init/Kconfig -@@ -205,25 +205,6 @@ config HOTPLUG - modules require HOTPLUG functionality, but a module built - outside the kernel tree does. Such modules require Y here. - --config KOBJECT_UEVENT -- bool "Kernel Userspace Events" if EMBEDDED -- depends on NET -- default y -- help -- This option enables the kernel userspace event layer, which is a -- simple mechanism for kernel-to-user communication over a netlink -- socket. -- The goal of the kernel userspace events layer is to provide a simple -- and efficient events system, that notifies userspace about kobject -- state changes. This will enable applications to just listen for -- events instead of polling system devices and files. -- Hotplug events (kobject addition and removal) are also available on -- the netlink socket in addition to the execution of /sbin/hotplug if -- CONFIG_HOTPLUG is enabled. -- -- Say Y, unless you are building a system requiring minimal memory -- consumption. -- - config IKCONFIG - bool "Kernel .config support" - ---help--- ---- gregkh-2.6.orig/kernel/sysctl.c -+++ gregkh-2.6/kernel/sysctl.c -@@ -31,6 +31,7 @@ - #include <linux/smp_lock.h> - #include <linux/init.h> - #include <linux/kernel.h> -+#include <linux/kobject.h> - #include <linux/net.h> - #include <linux/sysrq.h> - #include <linux/highuid.h> -@@ -83,9 +84,6 @@ static int ngroups_max = NGROUPS_MAX; - #ifdef CONFIG_KMOD - extern char modprobe_path[]; - #endif --#ifdef CONFIG_HOTPLUG --extern char hotplug_path[]; --#endif - #ifdef CONFIG_CHR_DEV_SG - extern int sg_big_buff; - #endif ---- gregkh-2.6.orig/lib/kobject_uevent.c -+++ gregkh-2.6/lib/kobject_uevent.c -@@ -19,14 +19,17 @@ - #include <linux/skbuff.h> - #include <linux/netlink.h> - #include <linux/string.h> --#include <linux/kobject_uevent.h> - #include <linux/kobject.h> - #include <net/sock.h> - - #define BUFFER_SIZE 1024 /* buffer for the hotplug env */ - #define NUM_ENVP 32 /* number of env pointers */ - --#if defined(CONFIG_KOBJECT_UEVENT) || defined(CONFIG_HOTPLUG) -+#if defined(CONFIG_HOTPLUG) -+char hotplug_path[HOTPLUG_PATH_LEN] = "/sbin/hotplug"; -+u64 hotplug_seqnum; -+static DEFINE_SPINLOCK(sequence_lock); -+ - static char *action_to_string(enum kobject_action action) - { - switch (action) { -@@ -48,9 +51,7 @@ static char *action_to_string(enum kobje - return NULL; - } - } --#endif - --#ifdef CONFIG_KOBJECT_UEVENT - static struct sock *uevent_sock; - - /** -@@ -168,21 +169,6 @@ static int __init kobject_uevent_init(vo - - postcore_initcall(kobject_uevent_init); - --#else --static inline int send_uevent(const char *signal, const char *obj, -- char **envp, int gfp_mask) --{ -- return 0; --} -- --#endif /* CONFIG_KOBJECT_UEVENT */ -- -- --#ifdef CONFIG_HOTPLUG --char hotplug_path[HOTPLUG_PATH_LEN] = "/sbin/hotplug"; --u64 hotplug_seqnum; --static DEFINE_SPINLOCK(sequence_lock); -- - /** - * kobject_hotplug - notify userspace by executing /sbin/hotplug - * diff --git a/driver/remove-mount-events.patch b/driver/remove-mount-events.patch deleted file mode 100644 index e0afc3a6d60d8..0000000000000 --- a/driver/remove-mount-events.patch +++ /dev/null @@ -1,90 +0,0 @@ -diff-tree 8fd2fada90130036d411467e047a42f4cdf0fb08 (from cf1b7672a58bb17ea9b1fcdcf5df554099b3a31d) -Author: Kay Sievers <kay.sievers@suse.de> -Date: Fri Nov 11 06:09:55 2005 +0100 - -remove mount/umount uevents from superblock handling - -The names of these events have been confusing from the beginning -on, as they have been more like claim/release events. We needed these -events for noticing HAL if storage devices have been mounted. - -Thanks to Al, we have the proper solution now and can poll() -/proc/mounts instead to get notfied about mount tree changes. - -Signed-off-by: Kay Sievers <kay.sievers@suse.de> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - - ---- - fs/super.c | 15 +-------------- - include/linux/kobject.h | 6 ++---- - lib/kobject_uevent.c | 4 ---- - 3 files changed, 3 insertions(+), 22 deletions(-) - ---- gregkh-2.6.orig/fs/super.c -+++ gregkh-2.6/fs/super.c -@@ -665,16 +665,6 @@ static int test_bdev_super(struct super_ - return (void *)s->s_bdev == data; - } - --static void bdev_uevent(struct block_device *bdev, enum kobject_action action) --{ -- if (bdev->bd_disk) { -- if (bdev->bd_part) -- kobject_uevent(&bdev->bd_part->kobj, action, NULL); -- else -- kobject_uevent(&bdev->bd_disk->kobj, action, NULL); -- } --} -- - struct super_block *get_sb_bdev(struct file_system_type *fs_type, - int flags, const char *dev_name, void *data, - int (*fill_super)(struct super_block *, void *, int)) -@@ -717,10 +707,8 @@ struct super_block *get_sb_bdev(struct f - up_write(&s->s_umount); - deactivate_super(s); - s = ERR_PTR(error); -- } else { -+ } else - s->s_flags |= MS_ACTIVE; -- bdev_uevent(bdev, KOBJ_MOUNT); -- } - } - - return s; -@@ -736,7 +724,6 @@ void kill_block_super(struct super_block - { - struct block_device *bdev = sb->s_bdev; - -- bdev_uevent(bdev, KOBJ_UMOUNT); - generic_shutdown_super(sb); - sync_blockdev(bdev); - close_bdev_excl(bdev); ---- gregkh-2.6.orig/include/linux/kobject.h -+++ gregkh-2.6/include/linux/kobject.h -@@ -42,10 +42,8 @@ enum kobject_action { - KOBJ_ADD = (__force kobject_action_t) 0x01, /* add event, for hotplug */ - KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* remove event, for hotplug */ - KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* a sysfs attribute file has changed */ -- KOBJ_MOUNT = (__force kobject_action_t) 0x04, /* mount event for block devices */ -- KOBJ_UMOUNT = (__force kobject_action_t) 0x05, /* umount event for block devices */ -- KOBJ_OFFLINE = (__force kobject_action_t) 0x06, /* offline event for hotplug devices */ -- KOBJ_ONLINE = (__force kobject_action_t) 0x07, /* online event for hotplug devices */ -+ KOBJ_OFFLINE = (__force kobject_action_t) 0x04, /* offline event for hotplug devices */ -+ KOBJ_ONLINE = (__force kobject_action_t) 0x05, /* online event for hotplug devices */ - }; - - struct kobject { ---- gregkh-2.6.orig/lib/kobject_uevent.c -+++ gregkh-2.6/lib/kobject_uevent.c -@@ -39,10 +39,6 @@ static char *action_to_string(enum kobje - return "remove"; - case KOBJ_CHANGE: - return "change"; -- case KOBJ_MOUNT: -- return "mount"; -- case KOBJ_UMOUNT: -- return "umount"; - case KOBJ_OFFLINE: - return "offline"; - case KOBJ_ONLINE: diff --git a/driver/sysfs-handle-failures-in-sysfs_make_dirent.patch b/driver/sysfs-handle-failures-in-sysfs_make_dirent.patch deleted file mode 100644 index e53362137c8e3..0000000000000 --- a/driver/sysfs-handle-failures-in-sysfs_make_dirent.patch +++ /dev/null @@ -1,33 +0,0 @@ -From rostedt@goodmis.org Wed Nov 23 06:17:26 2005 -Subject: sysfs: handle failures in sysfs_make_dirent -From: Steven Rostedt <rostedt@goodmis.org> -To: <maneesh@in.ibm.com> -Cc: Greg KH <greg@kroah.com>, Ingo Molnar <mingo@elte.hu> -Date: Wed, 23 Nov 2005 09:15:44 -0500 -Message-Id: <1132755344.13395.32.camel@localhost.localdomain> - -I noticed that if sysfs_make_dirent fails to allocate the sd, then a -null will be passed to sysfs_put. - -Signed-off-by: Steven Rostedt <rostedt@goodmis.org> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - fs/sysfs/dir.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - ---- gregkh-2.6.orig/fs/sysfs/dir.c -+++ gregkh-2.6/fs/sysfs/dir.c -@@ -112,7 +112,11 @@ static int create_dir(struct kobject * k - } - } - if (error && (error != -EEXIST)) { -- sysfs_put((*d)->d_fsdata); -+ struct sysfs_dirent *sd = (*d)->d_fsdata; -+ if (sd) { -+ list_del_init(&sd->s_sibling); -+ sysfs_put(sd); -+ } - d_drop(*d); - } - dput(*d); |