Sfoglia il codice sorgente

deprecate PHYSDEV* keys

deprecate PHYSDEV* values in the uevent environment

These values are no longer needed and inconsistent with the
stacking of class devices. The event environment should not
carry properties of a parent device. The key PHYSDEVDRIVER is
available as DRIVER, PHYDEVBUS is indentical SUBSYSTEM. Class
devices should not carry any of these values.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Kay Sievers 19 anni fa
parent
commit
d81d9d6b9f
3 ha cambiato i file con 20 aggiunte e 4 eliminazioni
  1. 12 0
      Documentation/feature-removal-schedule.txt
  2. 1 1
      drivers/base/class.c
  3. 7 3
      drivers/base/core.c

+ 12 - 0
Documentation/feature-removal-schedule.txt

@@ -294,3 +294,15 @@ Why:	The frame diverter is included in most distribution kernels, but is
 	It is not clear if anyone is still using it.
 	It is not clear if anyone is still using it.
 Who:	Stephen Hemminger <shemminger@osdl.org>
 Who:	Stephen Hemminger <shemminger@osdl.org>
 
 
+---------------------------
+
+
+What:	PHYSDEVPATH, PHYSDEVBUS, PHYSDEVDRIVER in the uevent environment
+When:	Oktober 2008
+Why:	The stacking of class devices makes these values misleading and
+	inconsistent.
+	Class devices should not carry any of these properties, and bus
+	devices have SUBSYTEM and DRIVER as a replacement.
+Who:	Kay Sievers <kay.sievers@suse.de>
+
+---------------------------

+ 1 - 1
drivers/base/class.c

@@ -361,7 +361,7 @@ static int class_uevent(struct kset *kset, struct kobject *kobj, char **envp,
 	pr_debug("%s - name = %s\n", __FUNCTION__, class_dev->class_id);
 	pr_debug("%s - name = %s\n", __FUNCTION__, class_dev->class_id);
 
 
 	if (class_dev->dev) {
 	if (class_dev->dev) {
-		/* add physical device, backing this device  */
+		/* add device, backing this class device (deprecated) */
 		struct device *dev = class_dev->dev;
 		struct device *dev = class_dev->dev;
 		char *path = kobject_get_path(&dev->kobj, GFP_KERNEL);
 		char *path = kobject_get_path(&dev->kobj, GFP_KERNEL);
 
 

+ 7 - 3
drivers/base/core.c

@@ -149,17 +149,21 @@ static int dev_uevent(struct kset *kset, struct kobject *kobj, char **envp,
 			       "MINOR=%u", MINOR(dev->devt));
 			       "MINOR=%u", MINOR(dev->devt));
 	}
 	}
 
 
-	/* add bus name of physical device */
+	/* add bus name (same as SUBSYSTEM, deprecated) */
 	if (dev->bus)
 	if (dev->bus)
 		add_uevent_var(envp, num_envp, &i,
 		add_uevent_var(envp, num_envp, &i,
 			       buffer, buffer_size, &length,
 			       buffer, buffer_size, &length,
 			       "PHYSDEVBUS=%s", dev->bus->name);
 			       "PHYSDEVBUS=%s", dev->bus->name);
 
 
-	/* add driver name of physical device */
-	if (dev->driver)
+	/* add driver name (PHYSDEV* values are deprecated)*/
+	if (dev->driver) {
+		add_uevent_var(envp, num_envp, &i,
+			       buffer, buffer_size, &length,
+			       "DRIVER=%s", dev->driver->name);
 		add_uevent_var(envp, num_envp, &i,
 		add_uevent_var(envp, num_envp, &i,
 			       buffer, buffer_size, &length,
 			       buffer, buffer_size, &length,
 			       "PHYSDEVDRIVER=%s", dev->driver->name);
 			       "PHYSDEVDRIVER=%s", dev->driver->name);
+	}
 
 
 	/* terminate, set to next free slot, shrink available space */
 	/* terminate, set to next free slot, shrink available space */
 	envp[i] = NULL;
 	envp[i] = NULL;