From: Greg KH <gregkh@suse.de>
To: Adam Belay <ambx1@neo.rr.com>, Kay Sievers <kay.sievers@vrfy.org>,
dtor_core@ameritech.net, Vojtech Pavlik <vojtech@suse.cz>,
Hannes Reinecke <hare@suse.de>,
Patrick Mochel <mochel@digitalimplant.org>,
airlied@linux.ie, linux-kernel@vger.kernel.org
Subject: Re: [patch 0/8] Nesting class_device patches that actually work
Date: Tue, 18 Oct 2005 00:54:43 -0700 [thread overview]
Message-ID: <20051018075443.GB12499@suse.de> (raw)
In-Reply-To: <20051018071822.GC32655@neo.rr.com>
On Tue, Oct 18, 2005 at 03:18:22AM -0400, Adam Belay wrote:
> On Mon, Oct 17, 2005 at 10:26:17PM -0700, Greg KH wrote:
> > On Mon, Oct 17, 2005 at 07:24:30PM -0400, Adam Belay wrote:
> > >
> > > Sounds good to me. The changes to driver model internals may be substantial.
> > > For example, because buses and classes will share more code, it's
> > > reasonable to allow drivers to bind to any "device" object, even class
> > > devices. Of course this would be limited to classes that choose to
> > > implement driver matching etc. We are doing this now with the pci express
> > > port driver.
> >
> > That's a bus, not a class device. Drivers bind to devices through a
> > bus. That's why we have busses.
>
> If class devices and devices belong in the same tree, then clearly the original
> distinction is artificial. "struct bus_type" is a class of "struct device".
Huh? "struct bus_type" has a list of "struct device" and "struct
drivers" that it knows about. I don't understand your use of the word
"class" in this sentance. (yeah, it's a horribly overloaded term,
sorry...)
> "struct class" is a class of "struct class_dev". We now know of devices
> in between these two extremes (e.g. pci express port driver).
pci express is just fine, I don't know why you don't like it :)
It's a bus, with different types of devices on it, and different types
of drivers that bind to those devices. That's it.
> It's also possible that drivers will want to bind to class devices
> (e.g. a partition driver binding to a block device).
Almost. Classes like input and video might want to do something like
that. But that's something for the future.
> Isn't it fair to say that the "bus_type" vs. "class" distinction is
> also artificial? At the very least they are duplicating some code.
No, they are very different. busses do some work (matches drivers to
devices and other bus specific glue). Classes are just a grouping of a
function of a device (input, tty, misc, etc.)
> > > Also, we could make driver objects a "class" and represent them in the
> > > global device tree, giving each driver instance its own unique namespace.
> >
> > Huh? How would you do that? Also, we really don't have different
> > driver "instances", so trying to represent something like that in sysfs
> > would probably be more work than it's worth.
>
> (all in same tree)
> pci0000:00.00 <- physical device
> |
> \- e1000:0 <- driver
> |
> \- eth0 <- class device
>
> We already informally have driver instances. They're pointed to in
> "driver_data".
That's merely a blob of data the driver needs to use. To call that a
full blown "instance" is pretty gracious. I think that trying to turn
that blob into a sysfs representation would require modifying every
driver in the kernel tree in a non-simple manner. That's something that
I don't want to undertake at all. But if you can show me otherwise...
:)
You are treating the driver in your above tree as a "bridge" between the
physical device and the class device. I don't think we really need to
show that in our tree, as it's an artificial thing.
> > > > Oh, one tiny problem. "virtual devices" are not currently represented
> > > > in our device tree, but are in the class tree. Things like the
> > > > different vc and ttys and misc devices are examples of this. I'll just
> > > > put them on the "platform" bus if no one minds.
> > >
> > > I think we should be trying to kill off the platform bus (it's artifical and
> > > doesn't show the real relationships between these devices). Instead, just
> > > hang them off the root of the tree.
> >
> > Everything that's currently a platform device go to the root? No,
> > that's not going to happen, sorry.
>
> Not at all. Rather, everything that's currently a platform device goes to
> where it actually belongs in the device tree. ACPI (and other firmware)
> enumerates all of these devices. They're generally children of LPCs and
> ISA bridges.
Not on embedded devices. Systems-on-a-chip have no "busses" generally.
> Making a special exception for these devices is ugly when we can
> easily represent them like every other device. This will even be
> possible without ACPI for many of these devices if we create an "ISA"
> bus driver abstraction.
Yes, if you have a ISA and a "system" bus. But then the "platform" bus
just goes back to being the system one. And you are where you
started...
> The main point here is that "platform" is really a hack to represent primitive
> physical devices that don't fit well into the driver model. There may be
> better ways of approaching this problem.
If you have a better approach, I would be glad to see it. And I don't
think it's a "hack" as lots of systems only use that bus.
> > > If the device doesn't have any parents or dependencies, then that's
> > > logically where it belongs.
> >
> > We do have a real platform "bus" that devices hang off of. Where else
> > is that keyboard controller at :)
>
> As stated above, the keyboard actually does have a real location to hang off of.
> Nonetheless, a keyboard controller is a physical device. It's very different
> from a "virtual device" like a tty. Therefore, it seems unreasonable to make
> virtual devices belong to the "platform" bus.
Then where should virtual devices belong?
> If a device doesn't have a parent device, it belongs at the root of the tree.
> That's the only obvious way to represent such a lack of dependency. This
> applies to both class and physical devices.
You want to put 512 tty class devices in /sys/devices/ ? I don't want
to see that.
thanks,
greg k-h
next prev parent reply other threads:[~2005-10-18 16:53 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20051013014147.235668000@echidna.kroah.org>
2005-10-13 2:08 ` [patch 0/8] Nesting class_device patches that actually work Greg KH
2005-10-13 2:10 ` Greg KH
2005-10-13 23:38 ` Kay Sievers
2005-10-13 2:10 ` [patch 1/8] Driver Core: add the ability for class_device structures to be nested Greg KH
2005-10-13 2:10 ` [patch 2/8] Driver Core: fix up all callers of class_device_create() Greg KH
2005-10-13 2:10 ` [patch 3/8] Driver Core: document struct class_device properly Greg KH
2005-10-13 2:10 ` [patch 4/8] input: register the input class device sooner Greg KH
2005-10-13 2:10 ` [patch 5/8] input: export input_dev_class so that input drivers can use it Greg KH
2005-10-13 2:10 ` [patch 6/8] input: move the input class devices under their new input_dev devices Greg KH
2005-10-13 2:11 ` [patch 7/8] input: remove the input_class structure, as it is unused Greg KH
2005-10-13 2:11 ` [patch 8/8] input: rename input_dev_class to input_class to be correct Greg KH
2005-10-13 6:38 ` [patch 0/8] Nesting class_device patches that actually work Vojtech Pavlik
2005-10-13 21:21 ` Dmitry Torokhov
2005-10-13 10:58 ` Kay Sievers
2005-10-13 21:35 ` Dmitry Torokhov
2005-10-13 23:37 ` Hannes Reinecke
2005-10-14 8:45 ` Kay Sievers
2005-10-14 12:14 ` Kay Sievers
2005-10-14 12:49 ` linux-os (Dick Johnson)
2005-10-14 13:49 ` Kay Sievers
2005-10-17 10:02 ` Vojtech Pavlik
2005-10-18 5:13 ` Dmitry Torokhov
2005-10-14 17:02 ` Dmitry Torokhov
2005-10-15 15:08 ` Kay Sievers
2005-10-17 5:41 ` Dmitry Torokhov
2005-10-17 21:44 ` Greg KH
2005-10-17 21:54 ` Dmitry Torokhov
2005-10-17 23:26 ` Adam Belay
2005-10-18 0:03 ` Kay Sievers
2005-10-17 23:24 ` Adam Belay
2005-10-17 23:44 ` Kay Sievers
2005-10-18 5:26 ` Greg KH
2005-10-18 7:18 ` Adam Belay
2005-10-18 7:54 ` Greg KH [this message]
2005-10-18 8:34 ` Vojtech Pavlik
2005-10-18 15:08 ` Kay Sievers
2005-10-18 15:41 ` Dmitry Torokhov
2005-10-18 6:04 ` Greg KH
2005-10-18 7:05 ` Greg KH
2005-10-18 7:35 ` Greg KH
2005-10-17 9:26 ` Vojtech Pavlik
2005-12-01 18:59 ` Patrick Mochel
2005-10-14 9:52 ` Christoph Hellwig
2005-10-14 16:36 ` Dmitry Torokhov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20051018075443.GB12499@suse.de \
--to=gregkh@suse.de \
--cc=airlied@linux.ie \
--cc=ambx1@neo.rr.com \
--cc=dtor_core@ameritech.net \
--cc=hare@suse.de \
--cc=kay.sievers@vrfy.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mochel@digitalimplant.org \
--cc=vojtech@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox