aboutsummaryrefslogtreecommitdiffstats
path: root/driver
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2006-05-08 13:55:52 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2006-05-08 13:55:52 -0700
commitd0bb6c8fdd5a5224383304c0e46a4d60ed8b8b38 (patch)
tree6c249eaadcafec83b10b8fc387ce4df9fc7d192d /driver
parent934ae08e56eddae2a8d5810ae1eaf0315653be96 (diff)
downloadpatches-d0bb6c8fdd5a5224383304c0e46a4d60ed8b8b38.tar.gz
2.6.17-rc3-git15 update
Diffstat (limited to 'driver')
-rw-r--r--driver/class-device-add-attribute_group-creation.patch97
-rw-r--r--driver/netdev-create-attribute_groups-with-class_device_add.patch128
-rw-r--r--driver/sysfs-crash-debugging.patch2
3 files changed, 1 insertions, 226 deletions
diff --git a/driver/class-device-add-attribute_group-creation.patch b/driver/class-device-add-attribute_group-creation.patch
deleted file mode 100644
index 4bf2a0d9523f1..0000000000000
--- a/driver/class-device-add-attribute_group-creation.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From shemminger@osdl.org Fri Apr 21 13:03:59 2006
-Date: Fri, 21 Apr 2006 12:52:55 -0700
-From: Stephen Hemminger <shemminger@osdl.org>
-To: Greg KH <greg@kroah.com>, "David S. Miller" <davem@davemloft.net>
-Subject: class device: add attribute_group creation
-Message-ID: <20060421125255.3451959f@localhost.localdomain>
-
-Extend the support of attribute groups in class_device's to allow groups
-to be created as part of the registration process. This allows network device's
-to avoid race between registration and creating groups.
-
-Note that unlike attributes that are a property of the class object, the groups
-are a property of the class_device object. This is done because there are different
-types of network devices (wireless for example).
-
-Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/base/class.c | 32 ++++++++++++++++++++++++++++++++
- include/linux/device.h | 2 ++
- 2 files changed, 34 insertions(+)
-
---- gregkh-2.6.orig/drivers/base/class.c
-+++ gregkh-2.6/drivers/base/class.c
-@@ -456,6 +456,35 @@ static void class_device_remove_attrs(st
- }
- }
-
-+static int class_device_add_groups(struct class_device * cd)
-+{
-+ int i;
-+ int error = 0;
-+
-+ if (cd->groups) {
-+ for (i = 0; cd->groups[i]; i++) {
-+ error = sysfs_create_group(&cd->kobj, cd->groups[i]);
-+ if (error) {
-+ while (--i >= 0)
-+ sysfs_remove_group(&cd->kobj, cd->groups[i]);
-+ goto out;
-+ }
-+ }
-+ }
-+out:
-+ return error;
-+}
-+
-+static void class_device_remove_groups(struct class_device * cd)
-+{
-+ int i;
-+ if (cd->groups) {
-+ for (i = 0; cd->groups[i]; i++) {
-+ sysfs_remove_group(&cd->kobj, cd->groups[i]);
-+ }
-+ }
-+}
-+
- static ssize_t show_dev(struct class_device *class_dev, char *buf)
- {
- return print_dev_t(buf, class_dev->devt);
-@@ -559,6 +588,8 @@ int class_device_add(struct class_device
- class_name);
- }
-
-+ class_device_add_groups(class_dev);
-+
- kobject_uevent(&class_dev->kobj, KOBJ_ADD);
-
- /* notify any interfaces this device is now here */
-@@ -672,6 +703,7 @@ void class_device_del(struct class_devic
- if (class_dev->devt_attr)
- class_device_remove_file(class_dev, class_dev->devt_attr);
- class_device_remove_attrs(class_dev);
-+ class_device_remove_groups(class_dev);
-
- kobject_uevent(&class_dev->kobj, KOBJ_REMOVE);
- kobject_del(&class_dev->kobj);
---- gregkh-2.6.orig/include/linux/device.h
-+++ gregkh-2.6/include/linux/device.h
-@@ -200,6 +200,7 @@ extern int class_device_create_file(stru
- * @node: for internal use by the driver core only.
- * @kobj: for internal use by the driver core only.
- * @devt_attr: for internal use by the driver core only.
-+ * @groups: optional additional groups to be created
- * @dev: if set, a symlink to the struct device is created in the sysfs
- * directory for this struct class device.
- * @class_data: pointer to whatever you want to store here for this struct
-@@ -228,6 +229,7 @@ struct class_device {
- struct device * dev; /* not necessary, but nice to have */
- void * class_data; /* class-specific data */
- struct class_device *parent; /* parent of this child device, if there is one */
-+ struct attribute_group ** groups; /* optional groups */
-
- void (*release)(struct class_device *dev);
- int (*uevent)(struct class_device *dev, char **envp,
diff --git a/driver/netdev-create-attribute_groups-with-class_device_add.patch b/driver/netdev-create-attribute_groups-with-class_device_add.patch
deleted file mode 100644
index 2e03ee7bca403..0000000000000
--- a/driver/netdev-create-attribute_groups-with-class_device_add.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-From shemminger@osdl.org Fri Apr 21 13:03:59 2006
-Date: Fri, 21 Apr 2006 12:54:38 -0700
-From: Stephen Hemminger <shemminger@osdl.org>
-To: Greg KH <greg@kroah.com>, "David S. Miller" <davem@davemloft.net>
-Subject: netdev: create attribute_groups with class_device_add
-Message-ID: <20060421125438.50f93a34@localhost.localdomain>
-
-Atomically create attributes when class device is added. This avoids the
-race between registering class_device (which generates hotplug event),
-and the creation of attribute groups.
-
-Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- include/linux/netdevice.h | 2 +
- net/core/dev.c | 2 -
- net/core/net-sysfs.c | 49 +++++++++++-----------------------------------
- 3 files changed, 15 insertions(+), 38 deletions(-)
-
---- gregkh-2.6.orig/include/linux/netdevice.h
-+++ gregkh-2.6/include/linux/netdevice.h
-@@ -506,6 +506,8 @@ struct net_device
-
- /* class/net/name entry */
- struct class_device class_dev;
-+ /* space for optional statistics and wireless sysfs groups */
-+ struct attribute_group *sysfs_groups[3];
- };
-
- #define NETDEV_ALIGN 32
---- gregkh-2.6.orig/net/core/dev.c
-+++ gregkh-2.6/net/core/dev.c
-@@ -3043,11 +3043,11 @@ void netdev_run_todo(void)
-
- switch(dev->reg_state) {
- case NETREG_REGISTERING:
-- dev->reg_state = NETREG_REGISTERED;
- err = netdev_register_sysfs(dev);
- if (err)
- printk(KERN_ERR "%s: failed sysfs registration (%d)\n",
- dev->name, err);
-+ dev->reg_state = NETREG_REGISTERED;
- break;
-
- case NETREG_UNREGISTERING:
---- gregkh-2.6.orig/net/core/net-sysfs.c
-+++ gregkh-2.6/net/core/net-sysfs.c
-@@ -29,7 +29,7 @@ static const char fmt_ulong[] = "%lu\n";
-
- static inline int dev_isalive(const struct net_device *dev)
- {
-- return dev->reg_state == NETREG_REGISTERED;
-+ return dev->reg_state <= NETREG_REGISTERED;
- }
-
- /* use same locking rules as GIF* ioctl's */
-@@ -445,58 +445,33 @@ static struct class net_class = {
-
- void netdev_unregister_sysfs(struct net_device * net)
- {
-- struct class_device * class_dev = &(net->class_dev);
--
-- if (net->get_stats)
-- sysfs_remove_group(&class_dev->kobj, &netstat_group);
--
--#ifdef WIRELESS_EXT
-- if (net->get_wireless_stats || (net->wireless_handlers &&
-- net->wireless_handlers->get_wireless_stats))
-- sysfs_remove_group(&class_dev->kobj, &wireless_group);
--#endif
-- class_device_del(class_dev);
--
-+ class_device_del(&(net->class_dev));
- }
-
- /* Create sysfs entries for network device. */
- int netdev_register_sysfs(struct net_device *net)
- {
- struct class_device *class_dev = &(net->class_dev);
-- int ret;
-+ struct attribute_group **groups = net->sysfs_groups;
-
-+ class_device_initialize(class_dev);
- class_dev->class = &net_class;
- class_dev->class_data = net;
-+ class_dev->groups = groups;
-
-+ BUILD_BUG_ON(BUS_ID_SIZE < IFNAMSIZ);
- strlcpy(class_dev->class_id, net->name, BUS_ID_SIZE);
-- if ((ret = class_device_register(class_dev)))
-- goto out;
-
-- if (net->get_stats &&
-- (ret = sysfs_create_group(&class_dev->kobj, &netstat_group)))
-- goto out_unreg;
-+ if (net->get_stats)
-+ *groups++ = &netstat_group;
-
- #ifdef WIRELESS_EXT
-- if (net->get_wireless_stats || (net->wireless_handlers &&
-- net->wireless_handlers->get_wireless_stats)) {
-- ret = sysfs_create_group(&class_dev->kobj, &wireless_group);
-- if (ret)
-- goto out_cleanup;
-- }
-- return 0;
--out_cleanup:
-- if (net->get_stats)
-- sysfs_remove_group(&class_dev->kobj, &netstat_group);
--#else
-- return 0;
-+ if (net->get_wireless_stats
-+ || (net->wireless_handlers && net->wireless_handlers->get_wireless_stats))
-+ *groups++ = &wireless_group;
- #endif
-
--out_unreg:
-- printk(KERN_WARNING "%s: sysfs attribute registration failed %d\n",
-- net->name, ret);
-- class_device_unregister(class_dev);
--out:
-- return ret;
-+ return class_device_add(class_dev);
- }
-
- int netdev_sysfs_init(void)
diff --git a/driver/sysfs-crash-debugging.patch b/driver/sysfs-crash-debugging.patch
index d305a4e419a18..7cb020e65747c 100644
--- a/driver/sysfs-crash-debugging.patch
+++ b/driver/sysfs-crash-debugging.patch
@@ -35,7 +35,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
NOTIFY_STOP) {
--- gregkh-2.6.orig/arch/x86_64/kernel/traps.c
+++ gregkh-2.6/arch/x86_64/kernel/traps.c
-@@ -428,6 +428,7 @@ void __kprobes __die(const char * str, s
+@@ -436,6 +436,7 @@ void __kprobes __die(const char * str, s
printk("DEBUG_PAGEALLOC");
#endif
printk("\n");