ibmebus has a fake root device that's not associated with an ofdt node.
Filter out any such devices in of_device_uevent().
Signed-off-by: Joachim Fenkes <redacted>
---
of_device.c | 4 ++++
1 files changed, 4 insertions(+)
diff -urp a/arch/powerpc/kernel/of_device.c b/arch/powerpc/kernel/of_device.c
@@ -180,6 +180,10 @@ int of_device_uevent(struct device *dev,ofdev=to_of_device(dev);+/* e.g. ibmebus has a fake root device w/o ofdt node -- filter that */+if(!ofdev->node)+return-ENODEV;+if(add_uevent_var(envp,num_envp,&i,buffer,buffer_size,&length,"OF_NAME=%s",ofdev->node->name))
@@ -180,6 +180,10 @@ int of_device_uevent(struct device *dev,ofdev=to_of_device(dev);+/* e.g. ibmebus has a fake root device w/o ofdt node -- filter that */+if(!ofdev->node)+return-ENODEV;+if(add_uevent_var(envp,num_envp,&i,buffer,buffer_size,&length,"OF_NAME=%s",ofdev->node->name))
From: Joachim Fenkes <hidden> Date: 2007-02-18 00:21:48
Benjamin Herrenschmidt [off-list ref] wrote on 17.02.2007=20
16:56:39:
On Sat, 2007-02-17 at 17:28 +0100, Hoang-Nam Nguyen wrote:
quoted
ibmebus has a fake root device that's not associated with an ofdt=20
node.
quoted
Filter out any such devices in of=5Fdevice=5Fuevent().
=20
Doh ! You are creating an of=5Fdevice with no attached device-node ? That
is totally evil ! Why do you need that ?
The driver creates a fake "ibmebus" device so all ibmebus based devices=20
have
a common parent device -- the vio bus does the same.
What do you think about linking this device to the device tree "/" node?=20
All
ibmebus-based devices are linked to dt nodes residing directly beneath=20
"/",
so the mapping would fit.
Cheers,
Joachim
---
Joachim Fenkes -- eHCA Linux Driver Developer and Hardware Tamer=20
extraordinaire
IBM Deutschland Entwicklung GmbH -- Dept. 3627 (I/O Firmware Development =
2)
Schoenaicher Strasse 220 -- 71032 Boeblingen -- Germany
eMail: fenkes@de.ibm.com -- Phone: +49 7031 16 1239=20
Vorsitzender des Aufsichtsrats: Johann Weihen -- Gesch=E4ftsf=FChrung:=20
Herbert Kircher
Sitz der Gesellschaft: B=F6blingen -- Registergericht: Amtsgericht=20
Stuttgart, HRB 243294
From: Benjamin Herrenschmidt <benh@kernel.crashing.org> Date: 2007-02-18 00:50:03
On Sat, 2007-02-17 at 19:21 -0500, Joachim Fenkes wrote:
Benjamin Herrenschmidt [off-list ref] wrote on 17.02.2007
16:56:39:
quoted
On Sat, 2007-02-17 at 17:28 +0100, Hoang-Nam Nguyen wrote:
quoted
ibmebus has a fake root device that's not associated with an ofdt
node.
quoted
quoted
Filter out any such devices in of_device_uevent().
Doh ! You are creating an of_device with no attached device-node ? That
is totally evil ! Why do you need that ?
The driver creates a fake "ibmebus" device so all ibmebus based devices
have
a common parent device -- the vio bus does the same.
What do you think about linking this device to the device tree "/" node?
All
ibmebus-based devices are linked to dt nodes residing directly beneath
"/",
so the mapping would fit.
No. If you do that, it shouldn't be an of_device based device.
If you want then to be below a common parent, then create that parent of
a basic struct device type, that sort of thing. You should never
instanciate an of_device that has a NULL device node.
vio is different since it's not a "subclass" of of_device though I tend
to also disagree with the way it does things.
It's a generic problem with sysfs, I agree it somewhat sucks.
Ben.
From: Joachim Fenkes <hidden> Date: 2007-02-19 16:36:30
Benjamin Herrenschmidt [off-list ref] wrote on 17.02.2007=20
19:37:25:
quoted
quoted
Doh ! You are creating an of=5Fdevice with no attached device-node ? =
That
quoted
quoted
is totally evil ! Why do you need that ?
=20
The driver creates a fake "ibmebus" device so all ibmebus based=20
devices=20
quoted
have
a common parent device -- the vio bus does the same.
=20
What do you think about linking this device to the device tree "/"=20
node?=20
quoted
All
ibmebus-based devices are linked to dt nodes residing directly beneath =
quoted
"/",
so the mapping would fit.
=20
No. If you do that, it shouldn't be an of=5Fdevice based device.
=20
If you want then to be below a common parent, then create that parent of
a basic struct device type, that sort of thing. You should never
instanciate an of=5Fdevice that has a NULL device node.
If I make the root device a basic struct device, it can't be part of=20
ibmebus any
longer. If we could create a busless device, we wouldn't have a problem,=20
but I
doubt that is possible.
Do you have any creative ideas?
=20
It's a generic problem with sysfs, I agree it somewhat sucks.
With ya.
Later,
Joachim
---
Joachim Fenkes -- eHCA Linux Driver Developer and Hardware Tamer=20
extraordinaire
IBM Deutschland Entwicklung GmbH -- Dept. 3627 (I/O Firmware Development =
2)
Schoenaicher Strasse 220 -- 71032 Boeblingen -- Germany
eMail: fenkes@de.ibm.com -- Phone: +49 7031 16 1239=20
Vorsitzender des Aufsichtsrats: Johann Weihen -- Gesch=E4ftsf=FChrung:=20
Herbert Kircher
Sitz der Gesellschaft: B=F6blingen -- Registergericht: Amtsgericht=20
Stuttgart, HRB 243294
From: Benjamin Herrenschmidt <benh@kernel.crashing.org> Date: 2007-02-19 20:03:26
If I make the root device a basic struct device, it can't be part of
ibmebus any
longer. If we could create a busless device, we wouldn't have a problem,
but I
doubt that is possible.
Do you have any creative ideas?
Well, I think PCI does just that for PCI busses ... (a busless device)
Ben.
quoted
It's a generic problem with sysfs, I agree it somewhat sucks.
With ya.
Later,
Joachim
---
Joachim Fenkes -- eHCA Linux Driver Developer and Hardware Tamer
extraordinaire
IBM Deutschland Entwicklung GmbH -- Dept. 3627 (I/O Firmware Development
2)
Schoenaicher Strasse 220 -- 71032 Boeblingen -- Germany
eMail: fenkes@de.ibm.com -- Phone: +49 7031 16 1239
Vorsitzender des Aufsichtsrats: Johann Weihen -- Geschäftsführung:
Herbert Kircher
Sitz der Gesellschaft: Böblingen -- Registergericht: Amtsgericht
Stuttgart, HRB 243294