public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:35 [BK PATCH] " Greg KH
@ 2004-08-25 22:36 ` Greg KH
  2004-08-25 22:36   ` Greg KH
  0 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1803.60.1, 2004/08/02 17:02:58-07:00, greg@kroah.com

KREF: shrink the size of struct kref down to just a single atomic_t

This was based on a patch from Kiran, but tweaked further by me.

Signed-off-by: Ravikiran Thirumalai <kiran@in.ibm.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 include/linux/kref.h |    7 ++-----
 lib/kref.c           |   26 ++++++++++++--------------
 2 files changed, 14 insertions(+), 19 deletions(-)


diff -Nru a/include/linux/kref.h b/include/linux/kref.h
--- a/include/linux/kref.h	2004-08-25 14:58:17 -07:00
+++ b/include/linux/kref.h	2004-08-25 14:58:17 -07:00
@@ -18,15 +18,12 @@
 #include <linux/types.h>
 #include <asm/atomic.h>
 
-
 struct kref {
 	atomic_t refcount;
-	void (*release)(struct kref *kref);
 };
 
-void kref_init(struct kref *kref, void (*release)(struct kref *));
+void kref_init(struct kref *kref);
 struct kref *kref_get(struct kref *kref);
-void kref_put(struct kref *kref);
-
+void kref_put(struct kref *kref, void (*release) (struct kref *kref));
 
 #endif /* _KREF_H_ */
diff -Nru a/lib/kref.c b/lib/kref.c
--- a/lib/kref.c	2004-08-25 14:58:17 -07:00
+++ b/lib/kref.c	2004-08-25 14:58:17 -07:00
@@ -11,23 +11,16 @@
  *
  */
 
-/* #define DEBUG */
-
 #include <linux/kref.h>
 #include <linux/module.h>
 
 /**
  * kref_init - initialize object.
  * @kref: object in question.
- * @release: pointer to a function that will clean up the object
- *	     when the last reference to the object is released.
- *	     This pointer is required.
  */
-void kref_init(struct kref *kref, void (*release)(struct kref *kref))
+void kref_init(struct kref *kref)
 {
-	WARN_ON(release == NULL);
 	atomic_set(&kref->refcount,1);
-	kref->release = release;
 }
 
 /**
@@ -44,15 +37,20 @@
 /**
  * kref_put - decrement refcount for object.
  * @kref: object.
+ * @release: pointer to the function that will clean up the object when the
+ *	     last reference to the object is released.
+ *	     This pointer is required, and it is not acceptable to pass kfree
+ *	     in as this function.
  *
- * Decrement the refcount, and if 0, call kref->release().
+ * Decrement the refcount, and if 0, call release().
  */
-void kref_put(struct kref *kref)
+void kref_put(struct kref *kref, void (*release) (struct kref *kref))
 {
-	if (atomic_dec_and_test(&kref->refcount)) {
-		pr_debug("kref cleaning up\n");
-		kref->release(kref);
-	}
+	WARN_ON(release == NULL);
+	WARN_ON(release == (void (*)(struct kref *))kfree);
+
+	if (atomic_dec_and_test(&kref->refcount))
+		release(kref);
 }
 
 EXPORT_SYMBOL(kref_init);


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36     ` Greg KH
@ 2004-08-25 22:36       ` Greg KH
  2004-08-25 22:36         ` Greg KH
  0 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1803.64.3, 2004/08/10 14:47:24-07:00, olh@suse.de

[PATCH] export legacy pty info via sysfs

You missed that one last year.


export the legacy pty/tty device nodes via sysfs,
so udev has a chance to create them if /dev is in tmpfs.

Signed-off-by: Olaf Hering <olh@suse.de>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 drivers/char/tty_io.c |   22 ++++++++++++++++------
 1 files changed, 16 insertions(+), 6 deletions(-)


diff -Nru a/drivers/char/tty_io.c b/drivers/char/tty_io.c
--- a/drivers/char/tty_io.c	2004-08-25 14:56:56 -07:00
+++ b/drivers/char/tty_io.c	2004-08-25 14:56:56 -07:00
@@ -766,6 +766,17 @@
 	return tty_write(file, buf, count, ppos);
 }
 
+static char ptychar[] = "pqrstuvwxyzabcde";
+
+static inline void pty_line_name(struct tty_driver *driver, int index, char *p)
+{
+	int i = index + driver->name_base;
+	/* ->name is initialized to "ttyp", but "tty" is expected */
+	sprintf(p, "%s%c%x",
+			driver->subtype == PTY_TYPE_SLAVE ? "tty" : driver->name,
+			ptychar[i >> 4 & 0xf], i & 0xf);
+}
+
 static inline void tty_line_name(struct tty_driver *driver, int index, char *p)
 {
 	sprintf(p, "%s%d", driver->name, index + driver->name_base);
@@ -2170,6 +2181,7 @@
 void tty_register_device(struct tty_driver *driver, unsigned index,
 			 struct device *device)
 {
+	char name[64];
 	dev_t dev = MKDEV(driver->major, driver->minor_start) + index;
 
 	if (index >= driver->num) {
@@ -2181,13 +2193,11 @@
 	devfs_mk_cdev(dev, S_IFCHR | S_IRUSR | S_IWUSR,
 			"%s%d", driver->devfs_name, index + driver->name_base);
 
-	/* we don't care about the ptys */
-	/* how nice to hide this behind some crappy interface.. */
-	if (driver->type != TTY_DRIVER_TYPE_PTY) {
-		char name[64];
+	if (driver->type == TTY_DRIVER_TYPE_PTY)
+		pty_line_name(driver, index, name);
+	else
 		tty_line_name(driver, index, name);
-		class_simple_device_add(tty_class, dev, device, name);
-	}
+	class_simple_device_add(tty_class, dev, device, name);
 }
 
 /**


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36           ` Greg KH
@ 2004-08-25 22:36             ` Greg KH
  2004-08-25 22:36               ` Greg KH
  0 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1803.64.6, 2004/08/24 00:09:55-07:00, corbet@lwn.net

[PATCH] Remove struct bus_type->add()

I recently went looking for users of the add() method in struct
bus_type, only to discover that there are none.  A query to Pat
confirmed that it is surplus and should come out.  So here's a patch
that does it.

While I was at it, I updated Documentation/driver-model/bus.txt to at
least get rid of the blatantly untrue stuff; it is still rather far from
being up to date, however.  I may be able to fix that later on.

Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 Documentation/driver-model/bus.txt |   78 ++++++++++---------------------------
 include/linux/device.h             |    1 
 2 files changed, 23 insertions(+), 56 deletions(-)


diff -Nru a/Documentation/driver-model/bus.txt b/Documentation/driver-model/bus.txt
--- a/Documentation/driver-model/bus.txt	2004-08-25 14:55:33 -07:00
+++ b/Documentation/driver-model/bus.txt	2004-08-25 14:55:33 -07:00
@@ -5,20 +5,21 @@
 ~~~~~~~~~~
 
 struct bus_type {
-        char                    * name;
-        rwlock_t                lock;
-        atomic_t                refcount;
-
-        struct list_head        node;
-        struct list_head        devices;
-        struct list_head        drivers;
-
-        struct driver_dir_entry dir;
-        struct driver_dir_entry device_dir;
-        struct driver_dir_entry driver_dir;
+	char			* name;
 
-        int     (*match)        (struct device * dev, struct device_driver * drv);
-	struct device (*add)	(struct device * parent, char * bus_id);
+	struct subsystem	subsys;
+	struct kset		drivers;
+	struct kset		devices;
+
+	struct bus_attribute	* bus_attrs;
+	struct device_attribute	* dev_attrs;
+	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		(*suspend)(struct device * dev, u32 state);
+	int		(*resume)(struct device * dev);
 };
 
 int bus_register(struct bus_type * bus);
@@ -47,7 +48,7 @@
 When a bus driver is initialized, it calls bus_register. This
 initializes the rest of the fields in the bus object and inserts it
 into a global list of bus types. Once the bus object is registered, 
-the fields in it (e.g. the rwlock_t) are usable by the bus driver. 
+the fields in it are usable by the bus driver. 
 
 
 Callbacks
@@ -71,40 +72,6 @@
 iterated over, and the match callback is called for each device that
 does not have a driver associated with it. 
 
-add(): Adding a child device
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The add callback is available to notify the bus about a child device
-at a particular location. 
-
-The parent parameter is the parent device of the child to be added. If
-parent == NULL, the bus should add the device as a child of a default
-parent device or as a child of the root. This policy decision is up to
-the bus driver.
-
-The format of the bus_id field should be consistent with the format of
-the bus_id field of the rest of the devices on the bus. This requires
-the caller to know the format.
-
-On return, the bus driver should return a pointer to the device that
-was created. If the device was not created, the bus driver should
-return an appropriate error code. Refer to include/linux/err.h for
-helper functions to encode errors. Some sample code:
-
-struct device * pci_bus_add(struct device * parent, char * bus_id)
-{
-	...
-	/* the device already exists */
-	return ERR_PTR(-EEXIST);
-	...
-}
-
-The caller can check the return value using IS_ERR():
-
-    struct device * newdev = pci_bus_type.add(parent,bus_id);
-    if (IS_ERR(newdev)) {
-	...
-    }
 
 
 Device and Driver Lists
@@ -118,10 +85,11 @@
 
 The LDM core provides helper functions for iterating over each list.
 
-int bus_for_each_dev(struct bus_type * bus, void * data, 
-		     int (*callback)(struct device * dev, void * data));
-int bus_for_each_drv(struct bus_type * bus, void * data,
-		     int (*callback)(struct device_driver * drv, void * data));
+int bus_for_each_dev(struct bus_type * bus, struct device * start, void * data,
+		     int (*fn)(struct device *, void *));
+
+int bus_for_each_drv(struct bus_type * bus, struct device_driver * start, 
+		     void * data, int (*fn)(struct device_driver *, void *));
 
 These helpers iterate over the respective list, and call the callback
 for each device or driver in the list. All list accesses are
@@ -168,9 +136,9 @@
 Exporting Attributes
 ~~~~~~~~~~~~~~~~~~~~
 struct bus_attribute {
-        struct attribute        attr;
-        ssize_t (*show)(struct bus_type *, char * buf, size_t count, loff_t off);
-        ssize_t (*store)(struct bus_type *, const char * buf, size_t count, loff_t off);
+	struct attribute	attr;
+	ssize_t (*show)(struct bus_type *, char * buf);
+	ssize_t (*store)(struct bus_type *, const char * buf, size_t count);
 };
 
 Bus drivers can export attributes using the BUS_ATTR macro that works
diff -Nru a/include/linux/device.h b/include/linux/device.h
--- a/include/linux/device.h	2004-08-25 14:55:33 -07:00
+++ b/include/linux/device.h	2004-08-25 14:55:33 -07:00
@@ -59,7 +59,6 @@
 	struct driver_attribute	* drv_attrs;
 
 	int		(*match)(struct device * dev, struct device_driver * drv);
-	struct device * (*add)	(struct device * parent, char * bus_id);
 	int		(*hotplug) (struct device *dev, char **envp, 
 				    int num_envp, char *buffer, int buffer_size);
 	int		(*suspend)(struct device * dev, u32 state);


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36       ` Greg KH
@ 2004-08-25 22:36         ` Greg KH
  2004-08-25 22:36           ` Greg KH
  0 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1803.64.4, 2004/08/10 14:49:28-07:00, thomas.koeller@baslerweb.com

[PATCH] Driver Core: fix minor class reference counting issue on the error path

Signed-off-by: Thomas Koeller <thomas.koeller@baslerweb.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 drivers/base/class.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)


diff -Nru a/drivers/base/class.c b/drivers/base/class.c
--- a/drivers/base/class.c	2004-08-25 14:56:30 -07:00
+++ b/drivers/base/class.c	2004-08-25 14:56:30 -07:00
@@ -349,13 +349,18 @@
 
 int class_device_add(struct class_device *class_dev)
 {
-	struct class * parent;
+	struct class * parent = NULL;
 	struct class_interface * class_intf;
 	int error;
 
 	class_dev = class_device_get(class_dev);
-	if (!class_dev || !strlen(class_dev->class_id))
+	if (!class_dev)
 		return -EINVAL;
+
+	if (!strlen(class_dev->class_id)) {
+		error = -EINVAL;
+		goto register_done;
+	}
 
 	parent = class_get(class_dev->class);
 


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36   ` Greg KH
@ 2004-08-25 22:36     ` Greg KH
  2004-08-25 22:36       ` Greg KH
  0 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1803.64.2, 2004/08/06 14:18:50-07:00, rml@ximian.com

[PATCH] KOBJECT: add kobject_get_path

Add a new kobject helper, kobject_get_path(), which is the greatest
function ever.

Signed-Off-By: Robert Love <rml@ximian.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 include/linux/kobject.h |    2 ++
 lib/kobject.c           |   36 +++++++++++++++++++++++++++---------
 2 files changed, 29 insertions(+), 9 deletions(-)


diff -Nru a/include/linux/kobject.h b/include/linux/kobject.h
--- a/include/linux/kobject.h	2004-08-25 14:57:25 -07:00
+++ b/include/linux/kobject.h	2004-08-25 14:57:25 -07:00
@@ -58,6 +58,8 @@
 
 extern void kobject_hotplug(const char *action, struct kobject *);
 
+extern char * kobject_get_path(struct kset *, struct kobject *, int);
+
 struct kobj_type {
 	void (*release)(struct kobject *);
 	struct sysfs_ops	* sysfs_ops;
diff -Nru a/lib/kobject.c b/lib/kobject.c
--- a/lib/kobject.c	2004-08-25 14:57:25 -07:00
+++ b/lib/kobject.c	2004-08-25 14:57:25 -07:00
@@ -58,14 +58,11 @@
 	return error;
 }
 
-
 static inline struct kobject * to_kobj(struct list_head * entry)
 {
 	return container_of(entry,struct kobject,entry);
 }
 
-
-#ifdef CONFIG_HOTPLUG
 static int get_kobj_path_length(struct kset *kset, struct kobject *kobj)
 {
 	int length = 1;
@@ -98,6 +95,31 @@
 	pr_debug("%s: path = '%s'\n",__FUNCTION__,path);
 }
 
+/**
+ * kobject_get_path - generate and return the path associated with a given kobj
+ * and kset pair.  The result must be freed by the caller with kfree().
+ *
+ * @kset:	kset in question, with which to build the path
+ * @kobj:	kobject in question, with which to build the path
+ * @gfp_mask:	the allocation type used to allocate the path
+ */
+char * kobject_get_path(struct kset *kset, struct kobject *kobj, int gfp_mask)
+{
+	char *path;
+	int len;
+
+	len = get_kobj_path_length(kset, kobj);
+	path = kmalloc(len, gfp_mask);
+	if (!path)
+		return NULL;
+	memset(path, 0x00, len);
+	fill_kobj_path(kset, kobj, path, len);
+
+	return path;
+}
+
+#ifdef CONFIG_HOTPLUG
+
 #define BUFFER_SIZE	1024	/* should be enough memory for the env */
 #define NUM_ENVP	32	/* number of env pointers */
 static unsigned long sequence_num;
@@ -112,7 +134,6 @@
 	char *scratch;
 	int i = 0;
 	int retval;
-	int kobj_path_length;
 	char *kobj_path = NULL;
 	char *name = NULL;
 	unsigned long seq;
@@ -163,12 +184,9 @@
 	envp [i++] = scratch;
 	scratch += sprintf(scratch, "SEQNUM=%ld", seq) + 1;
 
-	kobj_path_length = get_kobj_path_length (kset, kobj);
-	kobj_path = kmalloc (kobj_path_length, GFP_KERNEL);
+	kobj_path = kobject_get_path(kset, kobj, GFP_KERNEL);
 	if (!kobj_path)
 		goto exit;
-	memset (kobj_path, 0x00, kobj_path_length);
-	fill_kobj_path (kset, kobj, kobj_path, kobj_path_length);
 
 	envp [i++] = scratch;
 	scratch += sprintf (scratch, "DEVPATH=%s", kobj_path) + 1;
@@ -626,7 +644,7 @@
 	}
 }
 
-
+EXPORT_SYMBOL(kobject_get_path);
 EXPORT_SYMBOL(kobject_init);
 EXPORT_SYMBOL(kobject_register);
 EXPORT_SYMBOL(kobject_unregister);


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36 ` [PATCH] " Greg KH
@ 2004-08-25 22:36   ` Greg KH
  2004-08-25 22:36     ` Greg KH
  0 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1803.60.2, 2004/08/02 17:08:20-07:00, greg@kroah.com

KREF: fix up the current kref users for the changed api.
        
Based on work from Kiran, but fixed up by me to actually build and
link properly.

Signed-off-by: Ravikiran Thirumalai <kiran@in.ibm.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>



 drivers/scsi/sd.c               |    8 +-
 drivers/scsi/sr.c               |    8 +-
 drivers/usb/core/config.c       |    7 +-
 drivers/usb/core/message.c      |    2 
 drivers/usb/core/urb.c          |    4 -
 drivers/usb/core/usb.h          |    1 
 drivers/usb/host/ehci-mem.c     |    4 -
 drivers/usb/serial/usb-serial.c |  130 +++++++++++++++++++---------------------
 8 files changed, 80 insertions(+), 84 deletions(-)


diff -Nru a/drivers/scsi/sd.c b/drivers/scsi/sd.c
--- a/drivers/scsi/sd.c	2004-08-25 14:57:52 -07:00
+++ b/drivers/scsi/sd.c	2004-08-25 14:57:52 -07:00
@@ -188,7 +188,7 @@
 	return sdkp;
 
  out_put:
-	kref_put(&sdkp->kref);
+	kref_put(&sdkp->kref, scsi_disk_release);
  out_sdkp:
 	sdkp = NULL;
  out:
@@ -200,7 +200,7 @@
 {
 	down(&sd_ref_sem);
 	scsi_device_put(sdkp->device);
-	kref_put(&sdkp->kref);
+	kref_put(&sdkp->kref, scsi_disk_release);
 	up(&sd_ref_sem);
 }
 
@@ -1362,7 +1362,7 @@
 		goto out;
 
 	memset (sdkp, 0, sizeof(*sdkp));
-	kref_init(&sdkp->kref, scsi_disk_release);
+	kref_init(&sdkp->kref);
 
 	/* Note: We can accomodate 64 partitions, but the genhd code
 	 * assumes partitions allocate consecutive minors, which they don't.
@@ -1464,7 +1464,7 @@
 	del_gendisk(sdkp->disk);
 	sd_shutdown(dev);
 	down(&sd_ref_sem);
-	kref_put(&sdkp->kref);
+	kref_put(&sdkp->kref, scsi_disk_release);
 	up(&sd_ref_sem);
 
 	return 0;
diff -Nru a/drivers/scsi/sr.c b/drivers/scsi/sr.c
--- a/drivers/scsi/sr.c	2004-08-25 14:57:52 -07:00
+++ b/drivers/scsi/sr.c	2004-08-25 14:57:52 -07:00
@@ -147,7 +147,7 @@
 	goto out;
 
  out_put:
-	kref_put(&cd->kref);
+	kref_put(&cd->kref, sr_kref_release);
  out_null:
 	cd = NULL;
  out:
@@ -159,7 +159,7 @@
 {
 	down(&sr_ref_sem);
 	scsi_device_put(cd->device);
-	kref_put(&cd->kref);
+	kref_put(&cd->kref, sr_kref_release);
 	up(&sr_ref_sem);
 }
 
@@ -576,7 +576,7 @@
 		goto fail;
 	memset(cd, 0, sizeof(*cd));
 
-	kref_init(&cd->kref, sr_kref_release);
+	kref_init(&cd->kref);
 
 	disk = alloc_disk(1);
 	if (!disk)
@@ -937,7 +937,7 @@
 	del_gendisk(cd->disk);
 
 	down(&sr_ref_sem);
-	kref_put(&cd->kref);
+	kref_put(&cd->kref, sr_kref_release);
 	up(&sr_ref_sem);
 
 	return 0;
diff -Nru a/drivers/usb/core/config.c b/drivers/usb/core/config.c
--- a/drivers/usb/core/config.c	2004-08-25 14:57:51 -07:00
+++ b/drivers/usb/core/config.c	2004-08-25 14:57:51 -07:00
@@ -106,7 +106,7 @@
 	return buffer - buffer0 + i;
 }
 
-static void usb_release_interface_cache(struct kref *ref)
+void usb_release_interface_cache(struct kref *ref)
 {
 	struct usb_interface_cache *intfc = ref_to_usb_interface_cache(ref);
 	int j;
@@ -356,7 +356,7 @@
 		if (!intfc)
 			return -ENOMEM;
 		memset(intfc, 0, len);
-		kref_init(&intfc->ref, usb_release_interface_cache);
+		kref_init(&intfc->ref);
 	}
 
 	/* Skip over any Class Specific or Vendor Specific descriptors;
@@ -422,7 +422,8 @@
 
 		for (i = 0; i < cf->desc.bNumInterfaces; i++) {
 			if (cf->intf_cache[i])
-				kref_put(&cf->intf_cache[i]->ref);
+				kref_put(&cf->intf_cache[i]->ref, 
+					  usb_release_interface_cache);
 		}
 	}
 	kfree(dev->config);
diff -Nru a/drivers/usb/core/message.c b/drivers/usb/core/message.c
--- a/drivers/usb/core/message.c	2004-08-25 14:57:51 -07:00
+++ b/drivers/usb/core/message.c	2004-08-25 14:57:51 -07:00
@@ -1195,7 +1195,7 @@
 	struct usb_interface_cache *intfc =
 			altsetting_to_usb_interface_cache(intf->altsetting);
 
-	kref_put(&intfc->ref);
+	kref_put(&intfc->ref, usb_release_interface_cache);
 	kfree(intf);
 }
 
diff -Nru a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c
--- a/drivers/usb/core/urb.c	2004-08-25 14:57:51 -07:00
+++ b/drivers/usb/core/urb.c	2004-08-25 14:57:51 -07:00
@@ -39,7 +39,7 @@
 {
 	if (urb) {
 		memset(urb, 0, sizeof(*urb));
-		kref_init(&urb->kref, urb_destroy);
+		kref_init(&urb->kref);
 		spin_lock_init(&urb->lock);
 	}
 }
@@ -88,7 +88,7 @@
 void usb_free_urb(struct urb *urb)
 {
 	if (urb)
-		kref_put(&urb->kref);
+		kref_put(&urb->kref, urb_destroy);
 }
 
 /**
diff -Nru a/drivers/usb/core/usb.h b/drivers/usb/core/usb.h
--- a/drivers/usb/core/usb.h	2004-08-25 14:57:51 -07:00
+++ b/drivers/usb/core/usb.h	2004-08-25 14:57:51 -07:00
@@ -10,6 +10,7 @@
 extern void usb_disable_endpoint (struct usb_device *dev, unsigned int epaddr);
 extern void usb_disable_interface (struct usb_device *dev,
 		struct usb_interface *intf);
+extern void usb_release_interface_cache(struct kref *ref);
 extern void usb_disable_device (struct usb_device *dev, int skip_ep0);
 
 extern void usb_enable_endpoint (struct usb_device *dev,
diff -Nru a/drivers/usb/host/ehci-mem.c b/drivers/usb/host/ehci-mem.c
--- a/drivers/usb/host/ehci-mem.c	2004-08-25 14:57:52 -07:00
+++ b/drivers/usb/host/ehci-mem.c	2004-08-25 14:57:52 -07:00
@@ -114,7 +114,7 @@
 		return qh;
 
 	memset (qh, 0, sizeof *qh);
-	kref_init(&qh->kref, qh_destroy);
+	kref_init(&qh->kref);
 	qh->ehci = ehci;
 	qh->qh_dma = dma;
 	// INIT_LIST_HEAD (&qh->qh_list);
@@ -139,7 +139,7 @@
 
 static inline void qh_put (struct ehci_qh *qh)
 {
-	kref_put(&qh->kref);
+	kref_put(&qh->kref, qh_destroy);
 }
 
 /*-------------------------------------------------------------------------*/
diff -Nru a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
--- a/drivers/usb/serial/usb-serial.c	2004-08-25 14:57:52 -07:00
+++ b/drivers/usb/serial/usb-serial.c	2004-08-25 14:57:52 -07:00
@@ -421,6 +421,63 @@
 	return;
 }
 
+static void destroy_serial(struct kref *kref)
+{
+	struct usb_serial *serial;
+	struct usb_serial_port *port;
+	int i;
+
+	serial = to_usb_serial(kref);
+
+	dbg ("%s - %s", __FUNCTION__, serial->type->name);
+
+	serial->type->shutdown(serial);
+
+	/* return the minor range that this device had */
+	return_serial(serial);
+
+	for (i = 0; i < serial->num_ports; ++i)
+		serial->port[i]->open_count = 0;
+
+	/* the ports are cleaned up and released in port_release() */
+	for (i = 0; i < serial->num_ports; ++i)
+		if (serial->port[i]->dev.parent != NULL) {
+			device_unregister(&serial->port[i]->dev);
+			serial->port[i] = NULL;
+		}
+
+	/* If this is a "fake" port, we have to clean it up here, as it will
+	 * not get cleaned up in port_release() as it was never registered with
+	 * the driver core */
+	if (serial->num_ports < serial->num_port_pointers) {
+		for (i = serial->num_ports; i < serial->num_port_pointers; ++i) {
+			port = serial->port[i];
+			if (!port)
+				continue;
+			if (port->read_urb) {
+				usb_unlink_urb(port->read_urb);
+				usb_free_urb(port->read_urb);
+			}
+			if (port->write_urb) {
+				usb_unlink_urb(port->write_urb);
+				usb_free_urb(port->write_urb);
+			}
+			if (port->interrupt_in_urb) {
+				usb_unlink_urb(port->interrupt_in_urb);
+				usb_free_urb(port->interrupt_in_urb);
+			}
+			kfree(port->bulk_in_buffer);
+			kfree(port->bulk_out_buffer);
+			kfree(port->interrupt_in_buffer);
+		}
+	}
+
+	usb_put_dev(serial->dev);
+
+	/* free up any memory that we allocated */
+	kfree (serial);
+}
+
 /*****************************************************************************
  * Driver tty interface functions
  *****************************************************************************/
@@ -465,7 +522,7 @@
 		if (retval) {
 			port->open_count = 0;
 			module_put(serial->type->owner);
-			kref_put(&serial->kref);
+			kref_put(&serial->kref, destroy_serial);
 		}
 	}
 bailout:
@@ -496,7 +553,7 @@
 	}
 
 	module_put(port->serial->type->owner);
-	kref_put(&port->serial->kref);
+	kref_put(&port->serial->kref, destroy_serial);
 }
 
 static int serial_write (struct tty_struct * tty, int from_user, const unsigned char *buf, int count)
@@ -654,13 +711,6 @@
 	;
 }
 
-static void serial_shutdown (struct usb_serial *serial)
-{
-	dbg ("%s", __FUNCTION__);
-
-	serial->type->shutdown(serial);
-}
-
 static int serial_read_proc (char *page, char **start, off_t off, int count, int *eof, void *data)
 {
 	struct usb_serial *serial;
@@ -694,7 +744,7 @@
 			begin += length;
 			length = 0;
 		}
-		kref_put(&serial->kref);
+		kref_put(&serial->kref, destroy_serial);
 	}
 	*eof = 1;
 done:
@@ -763,62 +813,6 @@
 	wake_up_interruptible(&tty->write_wait);
 }
 
-static void destroy_serial(struct kref *kref)
-{
-	struct usb_serial *serial;
-	struct usb_serial_port *port;
-	int i;
-
-	serial = to_usb_serial(kref);
-
-	dbg ("%s - %s", __FUNCTION__, serial->type->name);
-	serial_shutdown (serial);
-
-	/* return the minor range that this device had */
-	return_serial(serial);
-
-	for (i = 0; i < serial->num_ports; ++i)
-		serial->port[i]->open_count = 0;
-
-	/* the ports are cleaned up and released in port_release() */
-	for (i = 0; i < serial->num_ports; ++i)
-		if (serial->port[i]->dev.parent != NULL) {
-			device_unregister(&serial->port[i]->dev);
-			serial->port[i] = NULL;
-		}
-
-	/* If this is a "fake" port, we have to clean it up here, as it will
-	 * not get cleaned up in port_release() as it was never registered with
-	 * the driver core */
-	if (serial->num_ports < serial->num_port_pointers) {
-		for (i = serial->num_ports; i < serial->num_port_pointers; ++i) {
-			port = serial->port[i];
-			if (!port)
-				continue;
-			if (port->read_urb) {
-				usb_unlink_urb(port->read_urb);
-				usb_free_urb(port->read_urb);
-			}
-			if (port->write_urb) {
-				usb_unlink_urb(port->write_urb);
-				usb_free_urb(port->write_urb);
-			}
-			if (port->interrupt_in_urb) {
-				usb_unlink_urb(port->interrupt_in_urb);
-				usb_free_urb(port->interrupt_in_urb);
-			}
-			kfree(port->bulk_in_buffer);
-			kfree(port->bulk_out_buffer);
-			kfree(port->interrupt_in_buffer);
-		}
-	}
-
-	usb_put_dev(serial->dev);
-
-	/* free up any memory that we allocated */
-	kfree (serial);
-}
-
 static void port_release(struct device *dev)
 {
 	struct usb_serial_port *port = to_usb_serial_port(dev);
@@ -859,7 +853,7 @@
 	serial->interface = interface;
 	serial->vendor = dev->descriptor.idVendor;
 	serial->product = dev->descriptor.idProduct;
-	kref_init(&serial->kref, destroy_serial);
+	kref_init(&serial->kref);
 
 	return serial;
 }
@@ -1209,7 +1203,7 @@
 	if (serial) {
 		/* let the last holder of this object 
 		 * cause it to be cleaned up */
-		kref_put(&serial->kref);
+		kref_put(&serial->kref, destroy_serial);
 	}
 	dev_info(dev, "device disconnected\n");
 }


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36         ` Greg KH
@ 2004-08-25 22:36           ` Greg KH
  2004-08-25 22:36             ` Greg KH
  0 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1803.64.5, 2004/08/23 13:17:08-07:00, greg@kroah.com

KREF: make kref_get() return void as it makes sense to do so.

Thanks to Kiran for bugging me to do this.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 drivers/scsi/sd.c    |    4 +---
 drivers/scsi/sr.c    |    4 +---
 include/linux/kref.h |    2 +-
 lib/kref.c           |    3 +--
 4 files changed, 4 insertions(+), 9 deletions(-)


diff -Nru a/drivers/scsi/sd.c b/drivers/scsi/sd.c
--- a/drivers/scsi/sd.c	2004-08-25 14:56:03 -07:00
+++ b/drivers/scsi/sd.c	2004-08-25 14:56:03 -07:00
@@ -180,8 +180,7 @@
 	if (disk->private_data == NULL)
 		goto out;
 	sdkp = scsi_disk(disk);
-	if (!kref_get(&sdkp->kref))
-		goto out_sdkp;
+	kref_get(&sdkp->kref);
 	if (scsi_device_get(sdkp->device))
 		goto out_put;
 	up(&sd_ref_sem);
@@ -189,7 +188,6 @@
 
  out_put:
 	kref_put(&sdkp->kref, scsi_disk_release);
- out_sdkp:
 	sdkp = NULL;
  out:
 	up(&sd_ref_sem);
diff -Nru a/drivers/scsi/sr.c b/drivers/scsi/sr.c
--- a/drivers/scsi/sr.c	2004-08-25 14:56:03 -07:00
+++ b/drivers/scsi/sr.c	2004-08-25 14:56:03 -07:00
@@ -140,15 +140,13 @@
 	if (disk->private_data == NULL)
 		goto out;
 	cd = scsi_cd(disk);
-	if (!kref_get(&cd->kref))
-		goto out_null;
+	kref_get(&cd->kref);
 	if (scsi_device_get(cd->device))
 		goto out_put;
 	goto out;
 
  out_put:
 	kref_put(&cd->kref, sr_kref_release);
- out_null:
 	cd = NULL;
  out:
 	up(&sr_ref_sem);
diff -Nru a/include/linux/kref.h b/include/linux/kref.h
--- a/include/linux/kref.h	2004-08-25 14:56:03 -07:00
+++ b/include/linux/kref.h	2004-08-25 14:56:03 -07:00
@@ -23,7 +23,7 @@
 };
 
 void kref_init(struct kref *kref);
-struct kref *kref_get(struct kref *kref);
+void kref_get(struct kref *kref);
 void kref_put(struct kref *kref, void (*release) (struct kref *kref));
 
 #endif /* _KREF_H_ */
diff -Nru a/lib/kref.c b/lib/kref.c
--- a/lib/kref.c	2004-08-25 14:56:03 -07:00
+++ b/lib/kref.c	2004-08-25 14:56:03 -07:00
@@ -27,11 +27,10 @@
  * kref_get - increment refcount for object.
  * @kref: object.
  */
-struct kref *kref_get(struct kref *kref)
+void kref_get(struct kref *kref)
 {
 	WARN_ON(!atomic_read(&kref->refcount));
 	atomic_inc(&kref->refcount);
-	return kref;
 }
 
 /**


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36                     ` Greg KH
@ 2004-08-25 22:36                       ` Greg KH
  2004-08-25 22:36                         ` Greg KH
  0 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1875, 2004/08/25 13:22:38-07:00, khali@linux-fr.org

[PATCH] I2C: update kernel credits/maintainers

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 CREDITS     |    6 ++++++
 MAINTAINERS |   30 ++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+)


diff -Nru a/CREDITS b/CREDITS
--- a/CREDITS	2004-08-25 14:52:44 -07:00
+++ b/CREDITS	2004-08-25 14:52:44 -07:00
@@ -735,6 +735,12 @@
 S: D-69231 Rauenberg
 S: Germany
 
+N: Jean Delvare
+E: khali@linux-fr.org
+W: http://khali.linux-fr.org/
+D: Several hardware monitoring drivers
+S: France
+
 N: Peter Denison
 E: peterd@pnd-pc.demon.co.uk
 W: http://www.pnd-pc.demon.co.uk/promise/
diff -Nru a/MAINTAINERS b/MAINTAINERS
--- a/MAINTAINERS	2004-08-25 14:52:44 -07:00
+++ b/MAINTAINERS	2004-08-25 14:52:44 -07:00
@@ -199,6 +199,12 @@
 W:	http://linux.thorsten-knabe.de
 S:	Maintained
 
+ADM1025 HARDWARE MONITOR DRIVER
+P:	Jean Delvare
+M:	khali@linux-fr.org
+L:	sensors@stimpy.netroedge.com
+S:	Maintained
+
 ADT746X FAN DRIVER
 P:	Colin Leroy
 M:	colin@colino.net
@@ -1327,6 +1333,18 @@
 W:	http://lsm.immunix.org
 S:	Supported
 
+LM83 HARDWARE MONITOR DRIVER
+P:	Jean Delvare
+M:	khali@linux-fr.org
+L:	sensors@stimpy.netroedge.com
+S:	Maintained
+
+LM90 HARDWARE MONITOR DRIVER
+P:	Jean Delvare
+M:	khali@linux-fr.org
+L:	sensors@stimpy.netroedge.com
+S:	Maintained
+
 LOGICAL DISK MANAGER SUPPORT (LDM, Windows 2000/XP Dynamic Disks)
 P:	Richard Russon (FlatCap)
 M:	ldm@flatcap.org
@@ -1906,6 +1924,12 @@
 W:	http://www.winischhofer.net/linuxsisvga.shtml
 S:	Maintained	
 
+SMSC47M1 HARDWARE MONITOR DRIVER
+P:	Jean Delvare
+M:	khali@linux-fr.org
+L:	sensors@stimpy.netroedge.com
+S:	Odd Fixes
+
 SMB FILESYSTEM
 P:	Urban Widmark
 M:	urban@teststation.com
@@ -2409,6 +2433,12 @@
 M:	johnpol@2ka.mipt.ru
 L:	sensors@stimpy.netroedge.com
 S:	Maintained
+
+W83L785TS HARDWARE MONITOR DRIVER
+P:	Jean Delvare
+M:	khali@linux-fr.org
+L:	sensors@stimpy.netroedge.com
+S:	Odd Fixes
 
 WAN ROUTER & SANGOMA WANPIPE DRIVERS & API (X.25, FRAME RELAY, PPP, CISCO HDLC)
 P:	Nenad Corbic


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36             ` Greg KH
@ 2004-08-25 22:36               ` Greg KH
  2004-08-25 22:36                 ` Greg KH
  0 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1803.64.7, 2004/08/24 16:19:31-07:00, dtor_core@ameritech.net

[PATCH] kobject: fix kobject_set_name comment.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 lib/kobject.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


diff -Nru a/lib/kobject.c b/lib/kobject.c
--- a/lib/kobject.c	2004-08-25 14:55:05 -07:00
+++ b/lib/kobject.c	2004-08-25 14:55:05 -07:00
@@ -343,7 +343,7 @@
  *	@kobj:	object.
  *	@name:	name. 
  *
- *	If strlen(name) < KOBJ_NAME_LEN, then use a dynamically allocated
+ *	If strlen(name) >= KOBJ_NAME_LEN, then use a dynamically allocated
  *	string that @kobj->k_name points to. Otherwise, use the static 
  *	@kobj->name array.
  */


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36                   ` Greg KH
@ 2004-08-25 22:36                     ` Greg KH
  2004-08-25 22:36                       ` Greg KH
  2004-08-26  2:04                     ` Benjamin Herrenschmidt
  1 sibling, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1874, 2004/08/25 13:21:59-07:00, khali@linux-fr.org

[PATCH] I2C: rename in0_ref to cpu0_vid

This patch changes all the i2c chip drivers and documentation to use the
name "cpu0_vid" instead of "in0_ref". The name "in0_ref" was an error in
the first place as motherboard manufacturers may fail to follow the chip
manufacturer's recommendation about which "in" channel to use for VCore
monitoring.

The new name leaves room for chips able to monitor more than 1 vid
value, such as the LM93 and, to a lesser extent, the PC87360 family (all
by National Semiconductor). These chips are typically designed for
dual-CPU motherboards.

This breaks the interface (obviously) so libsensors has been updated to
support both names.


Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 Documentation/i2c/sysfs-interface |    2 +-
 drivers/i2c/chips/asb100.c        |    4 ++--
 drivers/i2c/chips/it87.c          |    4 ++--
 drivers/i2c/chips/lm78.c          |    4 ++--
 drivers/i2c/chips/lm85.c          |    4 ++--
 drivers/i2c/chips/w83627hf.c      |    4 ++--
 drivers/i2c/chips/w83781d.c       |    4 ++--
 7 files changed, 13 insertions(+), 13 deletions(-)


diff -Nru a/Documentation/i2c/sysfs-interface b/Documentation/i2c/sysfs-interface
--- a/Documentation/i2c/sysfs-interface	2004-08-25 14:53:11 -07:00
+++ b/Documentation/i2c/sysfs-interface	2004-08-25 14:53:11 -07:00
@@ -104,7 +104,7 @@
 			in7_*	varies
 			in8_*	varies
 
-in0_ref		CPU core reference voltage.
+cpu[0-1]_vid	CPU core reference voltage.
 		Unit: millivolt
 		Read only.
 		Not always correct.
diff -Nru a/drivers/i2c/chips/asb100.c b/drivers/i2c/chips/asb100.c
--- a/drivers/i2c/chips/asb100.c	2004-08-25 14:53:11 -07:00
+++ b/drivers/i2c/chips/asb100.c	2004-08-25 14:53:11 -07:00
@@ -520,9 +520,9 @@
 	return sprintf(buf, "%d\n", vid_from_reg(data->vid, data->vrm));
 }
 
-static DEVICE_ATTR(in0_ref, S_IRUGO, show_vid, NULL);
+static DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid, NULL);
 #define device_create_file_vid(client) \
-device_create_file(&client->dev, &dev_attr_in0_ref)
+device_create_file(&client->dev, &dev_attr_cpu0_vid)
 
 /* VRM */
 static ssize_t show_vrm(struct device *dev, char *buf)
diff -Nru a/drivers/i2c/chips/it87.c b/drivers/i2c/chips/it87.c
--- a/drivers/i2c/chips/it87.c	2004-08-25 14:53:11 -07:00
+++ b/drivers/i2c/chips/it87.c	2004-08-25 14:53:11 -07:00
@@ -571,9 +571,9 @@
 	struct it87_data *data = it87_update_device(dev);
 	return sprintf(buf, "%ld\n", (long) vid_from_reg(data->vid, data->vrm));
 }
-static DEVICE_ATTR(in0_ref, S_IRUGO, show_vid_reg, NULL);
+static DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid_reg, NULL);
 #define device_create_file_vid(client) \
-device_create_file(&client->dev, &dev_attr_in0_ref)
+device_create_file(&client->dev, &dev_attr_cpu0_vid)
 
 /* This function is called when:
      * it87_driver is inserted (when this module is loaded), for each
diff -Nru a/drivers/i2c/chips/lm78.c b/drivers/i2c/chips/lm78.c
--- a/drivers/i2c/chips/lm78.c	2004-08-25 14:53:11 -07:00
+++ b/drivers/i2c/chips/lm78.c	2004-08-25 14:53:11 -07:00
@@ -423,7 +423,7 @@
 	struct lm78_data *data = lm78_update_device(dev);
 	return sprintf(buf, "%d\n", VID_FROM_REG(data->vid));
 }
-static DEVICE_ATTR(in0_ref, S_IRUGO, show_vid, NULL);
+static DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid, NULL);
 
 /* Alarms */
 static ssize_t show_alarms(struct device *dev, char *buf)
@@ -615,7 +615,7 @@
 	device_create_file(&new_client->dev, &dev_attr_fan3_min);
 	device_create_file(&new_client->dev, &dev_attr_fan3_div);
 	device_create_file(&new_client->dev, &dev_attr_alarms);
-	device_create_file(&new_client->dev, &dev_attr_in0_ref);
+	device_create_file(&new_client->dev, &dev_attr_cpu0_vid);
 
 	return 0;
 
diff -Nru a/drivers/i2c/chips/lm85.c b/drivers/i2c/chips/lm85.c
--- a/drivers/i2c/chips/lm85.c	2004-08-25 14:53:11 -07:00
+++ b/drivers/i2c/chips/lm85.c	2004-08-25 14:53:11 -07:00
@@ -465,7 +465,7 @@
 	return sprintf(buf, "%ld\n", (long) vid_from_reg(data->vid, data->vrm));
 }
 
-static DEVICE_ATTR(in0_ref, S_IRUGO, show_vid_reg, NULL);
+static DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid_reg, NULL);
 
 static ssize_t show_vrm_reg(struct device *dev, char *buf)
 {
@@ -874,7 +874,7 @@
 	device_create_file(&new_client->dev, &dev_attr_temp2_max);
 	device_create_file(&new_client->dev, &dev_attr_temp3_max);
 	device_create_file(&new_client->dev, &dev_attr_vrm);
-	device_create_file(&new_client->dev, &dev_attr_in0_ref);
+	device_create_file(&new_client->dev, &dev_attr_cpu0_vid);
 	device_create_file(&new_client->dev, &dev_attr_alarms);
 
 	return 0;
diff -Nru a/drivers/i2c/chips/w83627hf.c b/drivers/i2c/chips/w83627hf.c
--- a/drivers/i2c/chips/w83627hf.c	2004-08-25 14:53:11 -07:00
+++ b/drivers/i2c/chips/w83627hf.c	2004-08-25 14:53:11 -07:00
@@ -635,9 +635,9 @@
 	struct w83627hf_data *data = w83627hf_update_device(dev);
 	return sprintf(buf, "%ld\n", (long) vid_from_reg(data->vid, data->vrm));
 }
-static DEVICE_ATTR(in0_ref, S_IRUGO, show_vid_reg, NULL);
+static DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid_reg, NULL);
 #define device_create_file_vid(client) \
-device_create_file(&client->dev, &dev_attr_in0_ref)
+device_create_file(&client->dev, &dev_attr_cpu0_vid)
 
 static ssize_t
 show_vrm_reg(struct device *dev, char *buf)
diff -Nru a/drivers/i2c/chips/w83781d.c b/drivers/i2c/chips/w83781d.c
--- a/drivers/i2c/chips/w83781d.c	2004-08-25 14:53:11 -07:00
+++ b/drivers/i2c/chips/w83781d.c	2004-08-25 14:53:11 -07:00
@@ -503,9 +503,9 @@
 }
 
 static
-DEVICE_ATTR(in0_ref, S_IRUGO, show_vid_reg, NULL);
+DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid_reg, NULL);
 #define device_create_file_vid(client) \
-device_create_file(&client->dev, &dev_attr_in0_ref);
+device_create_file(&client->dev, &dev_attr_cpu0_vid);
 static ssize_t
 show_vrm_reg(struct device *dev, char *buf)
 {


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36                 ` Greg KH
@ 2004-08-25 22:36                   ` Greg KH
  2004-08-25 22:36                     ` Greg KH
  2004-08-26  2:04                     ` Benjamin Herrenschmidt
  0 siblings, 2 replies; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1873, 2004/08/25 13:21:22-07:00, khali@linux-fr.org

[PATCH] I2C: keywest class

This is needed for iBook2 owners to be able to use their ADM1030
hardware monitoring chip. Successfully tested by one user.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 drivers/i2c/busses/i2c-keywest.c |    2 ++
 1 files changed, 2 insertions(+)


diff -Nru a/drivers/i2c/busses/i2c-keywest.c b/drivers/i2c/busses/i2c-keywest.c
--- a/drivers/i2c/busses/i2c-keywest.c	2004-08-25 14:53:40 -07:00
+++ b/drivers/i2c/busses/i2c-keywest.c	2004-08-25 14:53:40 -07:00
@@ -618,6 +618,8 @@
 		chan->iface = iface;
 		chan->chan_no = i;
 		chan->adapter.id = I2C_ALGO_SMBUS;
+		if (i==1)
+			chan->adapter.class = I2C_CLASS_HWMON;
 		chan->adapter.algo = &keywest_algorithm;
 		chan->adapter.algo_data = NULL;
 		chan->adapter.client_register = NULL;


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36               ` Greg KH
@ 2004-08-25 22:36                 ` Greg KH
  2004-08-25 22:36                   ` Greg KH
  0 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1803.64.8, 2004/08/25 12:30:41-07:00, greg@kroah.com

kobject: convert struct kobject use kref.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>



 include/linux/kobject.h |    3 ++-
 lib/Makefile            |    5 +----
 lib/kobject.c           |   19 ++++++++++---------
 3 files changed, 13 insertions(+), 14 deletions(-)


diff -Nru a/include/linux/kobject.h b/include/linux/kobject.h
--- a/include/linux/kobject.h	2004-08-25 14:54:37 -07:00
+++ b/include/linux/kobject.h	2004-08-25 14:54:37 -07:00
@@ -19,6 +19,7 @@
 #include <linux/list.h>
 #include <linux/sysfs.h>
 #include <linux/rwsem.h>
+#include <linux/kref.h>
 #include <asm/atomic.h>
 
 #define KOBJ_NAME_LEN	20
@@ -26,7 +27,7 @@
 struct kobject {
 	char			* k_name;
 	char			name[KOBJ_NAME_LEN];
-	atomic_t		refcount;
+	struct kref		kref;
 	struct list_head	entry;
 	struct kobject		* parent;
 	struct kset		* kset;
diff -Nru a/lib/Makefile b/lib/Makefile
--- a/lib/Makefile	2004-08-25 14:54:37 -07:00
+++ b/lib/Makefile	2004-08-25 14:54:37 -07:00
@@ -5,11 +5,8 @@
 
 lib-y := errno.o ctype.o string.o vsprintf.o cmdline.o \
 	 bust_spinlocks.o rbtree.o radix-tree.o dump_stack.o \
-	 kobject.o idr.o div64.o parser.o int_sqrt.o \
+	 kobject.o kref.o idr.o div64.o parser.o int_sqrt.o \
 	 bitmap.o extable.o
-
-# hack for now till some static code uses krefs, then it can move up above...
-obj-y += kref.o
 
 lib-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o
 lib-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o
diff -Nru a/lib/kobject.c b/lib/kobject.c
--- a/lib/kobject.c	2004-08-25 14:54:37 -07:00
+++ b/lib/kobject.c	2004-08-25 14:54:37 -07:00
@@ -243,10 +243,9 @@
  *	kobject_init - initialize object.
  *	@kobj:	object in question.
  */
-
 void kobject_init(struct kobject * kobj)
 {
-	atomic_set(&kobj->refcount,1);
+ 	kref_init(&kobj->kref);
 	INIT_LIST_HEAD(&kobj->entry);
 	kobj->kset = kset_get(kobj->kset);
 }
@@ -447,10 +446,8 @@
 
 struct kobject * kobject_get(struct kobject * kobj)
 {
-	if (kobj) {
-		WARN_ON(!atomic_read(&kobj->refcount));
-		atomic_inc(&kobj->refcount);
-	}
+	if (kobj)
+		kref_get(&kobj->kref);
 	return kobj;
 }
 
@@ -477,17 +474,21 @@
 		kobject_put(parent);
 }
 
+static void kobject_release(struct kref *kref)
+{
+	kobject_cleanup(container_of(kref, struct kobject, kref));
+}
+
 /**
  *	kobject_put - decrement refcount for object.
  *	@kobj:	object.
  *
  *	Decrement the refcount, and if 0, call kobject_cleanup().
  */
-
 void kobject_put(struct kobject * kobj)
 {
-	if (atomic_dec_and_test(&kobj->refcount))
-		kobject_cleanup(kobj);
+	if (kobj)
+		kref_put(&kobj->kref, kobject_release);
 }
 
 


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36                         ` Greg KH
@ 2004-08-25 22:36                           ` Greg KH
  0 siblings, 0 replies; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1877, 2004/08/25 13:23:54-07:00, johnrose@austin.ibm.com

[PATCH] PCI Hotplug: create pci_remove_bus()

The following patch implements a pci_remove_bus() that can be used by
hotplug drivers for the removal of root buses.  It also defines a
release function that frees the device struct for pci_bus->bridge when a
root bus class device is unregistered.

Signed-off-by:  John Rose <johnrose@austin.ibm.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 drivers/pci/probe.c  |    6 ++++++
 drivers/pci/remove.c |   20 +++++++++++++-------
 include/linux/pci.h  |    2 +-
 3 files changed, 20 insertions(+), 8 deletions(-)


diff -Nru a/drivers/pci/probe.c b/drivers/pci/probe.c
--- a/drivers/pci/probe.c	2004-08-25 14:51:47 -07:00
+++ b/drivers/pci/probe.c	2004-08-25 14:51:47 -07:00
@@ -571,6 +571,11 @@
 	return PCI_CFG_SPACE_SIZE;
 }
 
+static void pci_release_bus_bridge_dev(struct device *dev)
+{
+	kfree(dev);
+}
+
 /*
  * Read the config data for a PCI device, sanity-check it
  * and fill in the dev structure...
@@ -772,6 +777,7 @@
 
 	memset(dev, 0, sizeof(*dev));
 	dev->parent = parent;
+	dev->release = pci_release_bus_bridge_dev;
 	sprintf(dev->bus_id, "pci%04x:%02x", pci_domain_nr(b), bus);
 	device_register(dev);
 	b->bridge = get_device(dev);
diff -Nru a/drivers/pci/remove.c b/drivers/pci/remove.c
--- a/drivers/pci/remove.c	2004-08-25 14:51:47 -07:00
+++ b/drivers/pci/remove.c	2004-08-25 14:51:47 -07:00
@@ -59,6 +59,18 @@
 }
 EXPORT_SYMBOL(pci_remove_device_safe);
 
+void pci_remove_bus(struct pci_bus *b)
+{
+	pci_proc_detach_bus(b);
+
+	spin_lock(&pci_bus_lock);
+	list_del(&b->node);
+	spin_unlock(&pci_bus_lock);
+
+	class_device_unregister(&b->class_dev);
+}
+EXPORT_SYMBOL(pci_remove_bus);
+
 /**
  * pci_remove_bus_device - remove a PCI device and any children
  * @dev: the device to remove
@@ -77,13 +89,7 @@
 		struct pci_bus *b = dev->subordinate;
 
 		pci_remove_behind_bridge(dev);
-		pci_proc_detach_bus(b);
-
-		spin_lock(&pci_bus_lock);
-		list_del(&b->node);
-		spin_unlock(&pci_bus_lock);
-
-		class_device_unregister(&b->class_dev);
+		pci_remove_bus(b);
 		dev->subordinate = NULL;
 	}
 
diff -Nru a/include/linux/pci.h b/include/linux/pci.h
--- a/include/linux/pci.h	2004-08-25 14:51:47 -07:00
+++ b/include/linux/pci.h	2004-08-25 14:51:47 -07:00
@@ -712,7 +712,7 @@
 int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge);
 extern struct pci_dev *pci_dev_get(struct pci_dev *dev);
 extern void pci_dev_put(struct pci_dev *dev);
-
+extern void pci_remove_bus(struct pci_bus *b);
 extern void pci_remove_bus_device(struct pci_dev *dev);
 
 /* Generic PCI functions exported to card drivers */


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36                       ` Greg KH
@ 2004-08-25 22:36                         ` Greg KH
  2004-08-25 22:36                           ` Greg KH
  0 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-25 22:36 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1876, 2004/08/25 13:23:15-07:00, romieu@fr.zoreil.com

[PATCH] pci-driver: function documentation fix

The returned value can not be null. Yet its description suggests differently.

From: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>


 drivers/pci/pci-driver.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)


diff -Nru a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
--- a/drivers/pci/pci-driver.c	2004-08-25 14:52:14 -07:00
+++ b/drivers/pci/pci-driver.c	2004-08-25 14:52:14 -07:00
@@ -390,10 +390,9 @@
  * pci_register_driver - register a new pci driver
  * @drv: the driver structure to register
  * 
- * Adds the driver structure to the list of registered drivers
- * Returns the number of pci devices which were claimed by the driver
- * during registration.  The driver remains registered even if the
- * return value is zero.
+ * Adds the driver structure to the list of registered drivers.
+ * Returns a negative value on error. The driver remains registered
+ * even if no device was claimed during registration.
  */
 int
 pci_register_driver(struct pci_driver *drv)


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-25 22:36                   ` Greg KH
  2004-08-25 22:36                     ` Greg KH
@ 2004-08-26  2:04                     ` Benjamin Herrenschmidt
  2004-08-26  4:10                       ` Greg KH
  1 sibling, 1 reply; 21+ messages in thread
From: Benjamin Herrenschmidt @ 2004-08-26  2:04 UTC (permalink / raw)
  To: Greg KH; +Cc: Linux Kernel list

On Thu, 2004-08-26 at 08:36, Greg KH wrote:
> ChangeSet 1.1873, 2004/08/25 13:21:22-07:00, khali@linux-fr.org
> 
> [PATCH] I2C: keywest class
> 
> This is needed for iBook2 owners to be able to use their ADM1030
> hardware monitoring chip. Successfully tested by one user.

Vetoed until I get a proper explanation on what that is supposed to do,
I don't want random stuff mucking around the i2c busses on those machines,
only specifically written drivers for the chips in there.

Please, do NOT apply.

Ben.



^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-26  2:04                     ` Benjamin Herrenschmidt
@ 2004-08-26  4:10                       ` Greg KH
  2004-08-26 12:26                         ` Jean Delvare
  0 siblings, 1 reply; 21+ messages in thread
From: Greg KH @ 2004-08-26  4:10 UTC (permalink / raw)
  To: Benjamin Herrenschmidt, sensors; +Cc: Linux Kernel list

On Thu, Aug 26, 2004 at 12:04:06PM +1000, Benjamin Herrenschmidt wrote:
> On Thu, 2004-08-26 at 08:36, Greg KH wrote:
> > ChangeSet 1.1873, 2004/08/25 13:21:22-07:00, khali@linux-fr.org
> > 
> > [PATCH] I2C: keywest class
> > 
> > This is needed for iBook2 owners to be able to use their ADM1030
> > hardware monitoring chip. Successfully tested by one user.
> 
> Vetoed until I get a proper explanation on what that is supposed to do,
> I don't want random stuff mucking around the i2c busses on those machines,
> only specifically written drivers for the chips in there.
> 
> Please, do NOT apply.

Oops, sorry, already in :(

Anyway, sensors people, any further info on this patch?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-26  4:10                       ` Greg KH
@ 2004-08-26 12:26                         ` Jean Delvare
  2004-08-26 23:33                           ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 21+ messages in thread
From: Jean Delvare @ 2004-08-26 12:26 UTC (permalink / raw)
  To: Greg KH, Benjamin Herrenschmidt, sensors; +Cc: Linux Kernel list

Hi Benjamin, hi Greg,

> > > ChangeSet 1.1873, 2004/08/25 13:21:22-07:00, khali@linux-fr.org
> > >
> > > [PATCH] I2C: keywest class
> > >
> > > This is needed for iBook2 owners to be able to use their ADM1030
> > > hardware monitoring chip. Successfully tested by one user.
> >
> > Vetoed until I get a proper explanation on what that is supposed to do,
> > I don't want random stuff mucking around the i2c busses on those machines,
> > only specifically written drivers for the chips in there.
> >
> > Please, do NOT apply.
> 
> Oops, sorry, already in :(
> 
> Anyway, sensors people, any further info on this patch?

Sure. I2C adapters have a class bitfield which is used to define which kind of
clients the bus is known to host (video, hardware monitoring, etc...). Most
client drivers do check the class before probing clients on any given bus.
[There is a plan to move the check to i2c-core so as to enforce the checking
instead of relying on the client's good will, but this hasn't been completed yet.]

The i2c-keywest driver doesn't define any class for any of its I2C busses. All
hardware monitoring chips [1] do check the class, so they wont possibly probe
any chip on the i2c-keywest busses. It happens that on the iBook2, the second
I2C bus hosts an Analog Devices ADM1030 monitoring chip, for which a driver
has been developped recently. Without adding the correct class bit
(I2C_CLASS_HWMON) to the second bus of i2c-keywest, iBook2 users can't get the
adm1031 driver to handle their ADM1030 chip.

One iBook2 user came to me, wondering why he couldn't get the adm1031 driver
to work, and we noticed the problem. I had him test a patch and it worked. I
then sent the patch to Greg, who in turn sent it to Linus, and here we are.

Benjamin, you seem to guard the i2c-keywest driver very closely. Is there
anything special about this driver? My patch was rather simple and
non-intrusive, and probably not worth reverting within the hour. Much ado
about nothing, if you want my opinion, with all due respect.

Could you please explain why my patch doesn't make sense? Similar changes were
made to several i2c bus drivers already [2] [3], and it never caused any problem.

At any rate, I may redirect i2c-keywest users to you from now on, if you
prefer to handle it yourself.

Thanks.

[1] Except lm85, but this should be fixed.
[2] http://marc.theaimsgroup.com/?l=bk-commits-head&m=107943782219511&w=2
[3] http://marc.theaimsgroup.com/?l=bk-commits-head&m=107943868728036&w=2
-- 
Jean "Khali" Delvare
http://khali.linux-fr.org/


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
@ 2004-08-26 18:15 Margit Schubert-While
  0 siblings, 0 replies; 21+ messages in thread
From: Margit Schubert-While @ 2004-08-26 18:15 UTC (permalink / raw)
  To: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 91 bytes --]

Jean scribeth :
> Except lm85, but this should be fixed

Indeed, patch attached.

Margit



[-- Attachment #2: lm85class.patch --]
[-- Type: text/x-diff, Size: 454 bytes --]

diff -Naur linux-2.6.9rc1/drivers/i2c/chips/lm85.c linux-2.6.9-rc1msw/drivers/i2c/chips/lm85.c
--- linux-2.6.9rc1/drivers/i2c/chips/lm85.c	2004-08-26 19:42:54.000000000 +0200
+++ linux-2.6.9-rc1msw/drivers/i2c/chips/lm85.c	2004-08-26 19:45:23.000000000 +0200
@@ -707,6 +707,8 @@
 
 int lm85_attach_adapter(struct i2c_adapter *adapter)
 {
+	if (!(adapter->class & I2C_CLASS_HWMON))
+		return 0;
 	return i2c_detect(adapter, &addr_data, lm85_detect);
 }
 

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-26 12:26                         ` Jean Delvare
@ 2004-08-26 23:33                           ` Benjamin Herrenschmidt
  2004-08-27 10:16                             ` Jean Delvare
  0 siblings, 1 reply; 21+ messages in thread
From: Benjamin Herrenschmidt @ 2004-08-26 23:33 UTC (permalink / raw)
  To: Jean Delvare; +Cc: Greg KH, sensors, Linux Kernel list

On Thu, 2004-08-26 at 22:26, Jean Delvare wrote:

> The i2c-keywest driver doesn't define any class for any of its I2C busses. All
> hardware monitoring chips [1] do check the class, so they wont possibly probe
> any chip on the i2c-keywest busses. It happens that on the iBook2, the second
> I2C bus hosts an Analog Devices ADM1030 monitoring chip, for which a driver
> has been developped recently. Without adding the correct class bit
> (I2C_CLASS_HWMON) to the second bus of i2c-keywest, iBook2 users can't get the
> adm1031 driver to handle their ADM1030 chip.

That bus also contains other stuffs, I'd prefer the in-kernel specific
driver for this model to be used rather than some generic stuff.

> One iBook2 user came to me, wondering why he couldn't get the adm1031 driver
> to work, and we noticed the problem. I had him test a patch and it worked. I
> then sent the patch to Greg, who in turn sent it to Linus, and here we are.
> 
> Benjamin, you seem to guard the i2c-keywest driver very closely. Is there
> anything special about this driver? My patch was rather simple and
> non-intrusive, and probably not worth reverting within the hour. Much ado
> about nothing, if you want my opinion, with all due respect.

It was wrong to check on the bus number like that. i2c-keywest is used
on a variety of models to driver totally different i2c busses, and at
this point, we can't arbitrarily say "bus 1 is HW monitoring". It
totally depends on the machine model. Besides, I don't like generic
drivers playing with those thermal control stuffs, I prefer drivers that
have been tuned for those specific machine models.

> Could you please explain why my patch doesn't make sense? Similar changes were
> made to several i2c bus drivers already [2] [3], and it never caused any problem.

As I wrote earlier. Just testing the bus number and arbitrarily deciding
bus 1 is HWMON makes no sense.

> At any rate, I may redirect i2c-keywest users to you from now on, if you
> prefer to handle it yourself.
> 
> Thanks.
> 
> [1] Except lm85, but this should be fixed.
> [2] http://marc.theaimsgroup.com/?l=bk-commits-head&m=107943782219511&w=2
> [3] http://marc.theaimsgroup.com/?l=bk-commits-head&m=107943868728036&w=2
-- 
Benjamin Herrenschmidt <benh@kernel.crashing.org>


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
  2004-08-26 23:33                           ` Benjamin Herrenschmidt
@ 2004-08-27 10:16                             ` Jean Delvare
  0 siblings, 0 replies; 21+ messages in thread
From: Jean Delvare @ 2004-08-27 10:16 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: Greg KH, sensors, Linux Kernel list

> > The i2c-keywest driver doesn't define any class for any of its I2C busses.
> > All hardware monitoring chips [1] do check the class, so they wont
> > possibly probe any chip on the i2c-keywest busses. It happens that on the
> > iBook2, the second I2C bus hosts an Analog Devices ADM1030 monitoring
> > chip, for which a driver has been developped recently. Without adding the
> > correct class bit (I2C_CLASS_HWMON) to the second bus of i2c-keywest,
> > iBook2 users can't get the adm1031 driver to handle their ADM1030 chip.
> 
> That bus also contains other stuffs, I'd prefer the in-kernel 
> specific driver for this model to be used rather than some generic stuff.

Does such a driver exist already? How does it differ from i2c/chips/adm1031.c?

> > Benjamin, you seem to guard the i2c-keywest driver very closely. Is there
> > anything special about this driver? My patch was rather simple and
> > non-intrusive, and probably not worth reverting within the hour. Much ado
> > about nothing, if you want my opinion, with all due respect.
> 
> It was wrong to check on the bus number like that. i2c-keywest is 
> used on a variety of models to driver totally different i2c busses,
> and at this point, we can't arbitrarily say "bus 1 is HW monitoring".
> It totally depends on the machine model.

It's not quite what the patch did. It's more like "bus 1 *may* host hardware
monitoring chips". It doesn't prevent non-hardware monitoring chips from
working. It simply allows hardware-monitoring chip drivers to probe that bus
when loaded.

I admit it does this for all systems using i2c-keywest, while only the iBook2
is known to actually have a hardware monitoring chip on that bus. However, I
would guess that future iBooks are likely to have it as well. And probing the
bus when no hardware monitoring chip is present shouldn't harm.

The fact that bus probing is needed is a known weakness of the I2C/SMBus
protocol. This isn't i2c-keywest-specific, and works rather well (now).
Refined detection methods and the new class bitfield are doing well.

> Besides, I don't like generic drivers playing with those thermal control
> stuffs, I prefer drivers that have been tuned for those specific machine
> models.

Again, please tell me what your specific driver will do that ours don't (or
the other way around). I don't much enjoy the idea of having two different
drivers for the same chip.

> > Could you please explain why my patch doesn't make sense? Similar changes
> > were made to several i2c bus drivers already [2] [3], and it never caused
> > any problem.
> 
> As I wrote earlier. Just testing the bus number and arbitrarily deciding
> bus 1 is HWMON makes no sense.

If this is the problem, and if you have a way to set the class to
I2C_CLASS_HWMON if and only if the system is an iBook2, that's fine with me
(although I don't think it is necessary to be that restrictive).

Thanks,

-- 
Jean "Khali" Delvare
http://khali.linux-fr.org/


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH] Driver Core patches for 2.6.9-rc1
       [not found] ` <5.1.0.14.2.20040908220127.02a9daa8@pop.t-online.de>
@ 2004-09-08 20:21   ` Greg KH
  0 siblings, 0 replies; 21+ messages in thread
From: Greg KH @ 2004-09-08 20:21 UTC (permalink / raw)
  To: Margit Schubert-While; +Cc: linux-kernel

On Wed, Sep 08, 2004 at 10:11:12PM +0200, Margit Schubert-While wrote:
> At 12:37 08.09.2004 -0700, Greg scribeth:
> >On Thu, Aug 26, 2004 at 07:57:57PM +0200, Margit Schubert-While wrote:
> >> Jean scribeth :
> >> > Except lm85, but this should be fixed
> >>
> >> Indeed, patch attached.
> >
> >
> >Applied, thanks.
> 
> Thanks, sorry, that was a bit of a crass answer.

Huh?  My response was "crass"?  I applied the patch to my trees and will
send it on to Linus in a few days, and it will show up in the next -mm
release.

> As I did indeed port this to 2.6 then I should be partly
> responsible for checking up on changes.

What changes?  It's in my trees and you don't have to worry about it
anymore.

> That was a very terse comment which can be explained
> by my involvement with prism54.

Your comment was terse?  It was just fine.

> (Are trying to get prism54 changes through Jeff Garzik)
> Normally I would push this as normal.

"normal" is through me, which is what happened.

confused,

greg k-h

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2004-09-08 20:21 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <200408261957.58105.margitsw@t-online.de>
     [not found] ` <5.1.0.14.2.20040908220127.02a9daa8@pop.t-online.de>
2004-09-08 20:21   ` [PATCH] Driver Core patches for 2.6.9-rc1 Greg KH
2004-08-26 18:15 Margit Schubert-While
  -- strict thread matches above, loose matches on Subject: below --
2004-08-25 22:35 [BK PATCH] " Greg KH
2004-08-25 22:36 ` [PATCH] " Greg KH
2004-08-25 22:36   ` Greg KH
2004-08-25 22:36     ` Greg KH
2004-08-25 22:36       ` Greg KH
2004-08-25 22:36         ` Greg KH
2004-08-25 22:36           ` Greg KH
2004-08-25 22:36             ` Greg KH
2004-08-25 22:36               ` Greg KH
2004-08-25 22:36                 ` Greg KH
2004-08-25 22:36                   ` Greg KH
2004-08-25 22:36                     ` Greg KH
2004-08-25 22:36                       ` Greg KH
2004-08-25 22:36                         ` Greg KH
2004-08-25 22:36                           ` Greg KH
2004-08-26  2:04                     ` Benjamin Herrenschmidt
2004-08-26  4:10                       ` Greg KH
2004-08-26 12:26                         ` Jean Delvare
2004-08-26 23:33                           ` Benjamin Herrenschmidt
2004-08-27 10:16                             ` Jean Delvare

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox