2007-02-17 16:24:35

by Hoang-Nam Nguyen

[permalink] [raw]
Subject: [PATCH 2.6.21-rc1] powerpc: Make of_device_uevent() compatible with ibmebus

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 <[email protected]>
---


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
--- a/arch/powerpc/kernel/of_device.c 2007-02-17 16:36:32.116368480 +0100
+++ b/arch/powerpc/kernel/of_device.c 2007-02-17 16:44:01.319366352 +0100
@@ -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))


2007-02-17 22:01:03

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: [PATCH 2.6.21-rc1] powerpc: Make of_device_uevent() compatible with ibmebus

On Sat, 2007-02-17 at 17:28 +0100, Hoang-Nam Nguyen wrote:
> ibmebus has a fake root device that's not associated with an ofdt node.
> 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 ?

Ben.

>
> Signed-off-by: Joachim Fenkes <[email protected]>
> ---
>
>
> 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
> --- a/arch/powerpc/kernel/of_device.c 2007-02-17 16:36:32.116368480 +0100
> +++ b/arch/powerpc/kernel/of_device.c 2007-02-17 16:44:01.319366352 +0100
> @@ -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))
>
> _______________________________________________
> Linuxppc-dev mailing list
> [email protected]
> https://ozlabs.org/mailman/listinfo/linuxppc-dev

2007-02-18 00:21:48

by Joachim Fenkes

[permalink] [raw]
Subject: Re: [PATCH 2.6.21-rc1] powerpc: Make of_device_uevent() compatible with ibmebus

Benjamin Herrenschmidt <[email protected]> wrote on 17.02.2007
16:56:39:

> On Sat, 2007-02-17 at 17:28 +0100, Hoang-Nam Nguyen wrote:
> > ibmebus has a fake root device that's not associated with an ofdt
node.
> > 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.

Cheers,
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: [email protected] -- 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

2007-02-18 00:50:03

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: [PATCH 2.6.21-rc1] powerpc: Make of_device_uevent() compatible with ibmebus

On Sat, 2007-02-17 at 19:21 -0500, Joachim Fenkes wrote:
> Benjamin Herrenschmidt <[email protected]> wrote on 17.02.2007
> 16:56:39:
>
> > On Sat, 2007-02-17 at 17:28 +0100, Hoang-Nam Nguyen wrote:
> > > ibmebus has a fake root device that's not associated with an ofdt
> node.
> > > 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.


2007-02-19 16:36:30

by Joachim Fenkes

[permalink] [raw]
Subject: Re: [PATCH 2.6.21-rc1] powerpc: Make of_device_uevent() compatible with ibmebus

Benjamin Herrenschmidt <[email protected]> wrote on 17.02.2007
19:37:25:

> > > 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.

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?

> 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: [email protected] -- 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

2007-02-19 20:03:26

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: [PATCH 2.6.21-rc1] powerpc: Make of_device_uevent() compatible with ibmebus


> 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.

> > 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: [email protected] -- 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