Greg KH wrote:
On Wed, Jul 11, 2007 at 12:54:58PM +0200, Stefan Richter wrote:
Yinghai Lu wrote:
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -547,6 +547,8 @@ static void klist_children_put(struct klist_node *n)
void device_initialize(struct device *dev)
{
+ int node;
+
kobj_set_kset_s(dev, devices_subsys);
kobject_init(&dev->kobj);
klist_init(&dev->klist_children, klist_children_get,
@@ -557,7 +559,9 @@ void device_initialize(struct device *dev)
spin_lock_init(&dev->devres_lock);
INIT_LIST_HEAD(&dev->devres_head);
device_init_wakeup(dev, 0);
- set_dev_node(dev, -1);
+
+ node = dev->parent ? dev_to_node(dev->parent) : -1;
+ set_dev_node(dev, node);
}
Two remarks:
- device_add() is perhaps a better place to do this. Otherwise you
had to change code like drivers/input/gameport/gameport.c::
gameport_init_port() which sets the parent device *after* the
call to device_initialize().
if other device overwrite that, it is OK.
even for all pci_dev, pci_device_add will call set_dev_node(&dev->dev, pcibus_to_node(bus));
to overwrite it.
but for netdev under pci_dev, it will get node from pci_dev directly.
I agree, lots of code sets up the parent pointer after initialize and
before add. One such example is the whole USB subsystem.
Which makes me wonder how this code was really tested at all to show
that it actually had an affect...
original default is -1, and this patch just try to use parent's node as default.
YH
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]