linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kay Sievers <kay.sievers@suse.de>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Paul Mundt <lethal@linux-sh.org>, Greg KH <gregkh@suse.de>,
	Linux PM mailing list <linux-pm@lists.linux-foundation.org>,
	Russell King <linux@arm.linux.org.uk>,
	Magnus Damm <magnus.damm@gmail.com>,
	linux-sh@vger.kernel.org
Subject: Re: [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev
Date: Tue, 22 Mar 2011 21:12:36 +0000	[thread overview]
Message-ID: <1300828356.1815.15.camel@zag> (raw)
In-Reply-To: <201103222200.52131.rjw@sisk.pl>

On Tue, 2011-03-22 at 22:00 +0100, Rafael J. Wysocki wrote:
> On Tuesday, March 22, 2011, Kay Sievers wrote:
> > On Tue, 2011-03-22 at 21:30 +0100, Rafael J. Wysocki wrote:
> > > 
> > > Perhaps there's a more straightforward way to make some files show up in
> > > sysfs on a specific path than defininig an otherwise useless bus type and
> > > device object?
> > 
> > That's absolutely not the point. Please don't get yourself into that
> > thinking. If people want to "export stuff to userspace", they must not
> > invent new things. We need to get rid of the silly special cases.
> 
> Why exactly?  Do they actually hurt anyone and if so then how?

Sure, "devices" are devices, and devices have well-defines set of
properties, not some magic directory, people can mess around with the
way they like.

> > Userspace is not meant to learn subsystem specific rules for every new
> > thing.
> 
> That depends a good deal of who's writing the user space in question.  If
> that's the same person who's working on the particular part of the kernel,
> I don't see a big problem.

Not for "devices". There are rules for devices, which are defined by the
driver core, and the sysdev stuff needs to go, because it does not fit
into that model.

> > There is _one_ way to export device attributes, and that is
> > "struct device" today.
> > 
> > If that's to expensive for anybody, just don't use sysfs. It's the rule
> > we have today. :)
> 
> Oh, good to know.  It's changed a bit since I last heard.  Never mind.

Oh, don't get me wrong, this is all is about "devices" not any other
controls.

> Still, I won't let you change the things in /sys/power to struct devices,
> sorry about that. ;-)

Fine as long as they are power specific things, and not "devices". You
don't have sysdevs there, right? :)

> And I wonder how are you going to deal with clocksource exporting things
> via the sysdev interface right now.  I'd simply create two directories and
> put the two files into them and be done with that, but I guess that
> wouldn't fit into the model somehow, right?

Nope, register a bus_type, and use struct device for all of them, Parent
them to /sys/devices/system/ if they should keep their location and
layout.

> > > > That way userspace can properly enumerate them in a flat list
> > > > in /sys/bus/<bus_type name>/devices/*, and gets proper events on module
> > > > load and during system coldplug, and can hook into the usual hotplug
> > > > pathes to set/get these values instead of crawling magicly defined and
> > > > decoupled locations in /sys which can not express proper hierarchy,
> > > > classicication, or anything else that all other devices can just do.
> > > 
> > > There's no hotplug involved or anything remotely like that AFAICS.
> > > There are simply static files as I said above, they are created
> > > early during system initialization and simply stay there.
> > 
> > That's not the point. It's about a single way to retrieve information
> > about devices, extendability, and coldplug during bootup, where existing
> > devices need to be handled only after userspace is up.
> 
> I'd say the case at hand has nothing to do with that.

It has. As for CPUs. We can not do proper CPU-dependent module
autoloading, because the events happen before userspace runs, and
clodplug can not see the broken sysdevs, because they have no events to
re-trigger, like all others have.

> > That is just a case of "hotplug" that has the same codepath for userspace,
> > even when the devices can never really come and go.
> 
> My impression is that when you say "user space", you actually mean some
> _specific_ user space, don't you?

On usual boxes it's udev/libudev and all the stuff around it. But
andreoid has the same stuff in their own way of doing it. So it's not
about an implementation in userspace, it's about a sane event and
classification interface for kernel-exported devices. Again tis is not
about any other stuff in /sys, only the "devices", and we want to have
only a single type, and a single way to handle it in userspace.

> > > > There is really no reason for any device being a magic and conceptually
> > > > broken sysdev today - just to be different from any other device the
> > > > kernel exports to userspace.
> > > 
> > > It's not a "device being a sysdev", it's sysdevs being used for creating
> > > a user space interface, which isn't broken by itself.
> > 
> > Yeah , absolutely. But if any device wants to export anything is _must_
> > be a "struct device" today. If that does not fit, it must not use sysfs
> > at all.
> 
> Well, it's not a "device wants to export something".  It's platform code
> wanting to export some information related to the platform and I really
> don't see a reason why it should create bus types and device objects
> _specifically_ for that.  It's just too wasteful, both in terms of memory
> and time needed for handling that in the device core.

Because they are devices, and there is a lot to win, if the kernel
exports all "devices" in the same way. This is not about saving an inode
in /sys, it's the ability to do runtime device configuration with common
tools.

Kay


  reply	other threads:[~2011-03-22 21:12 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <201103100131.58206.rjw@sisk.pl>
     [not found] ` <201103122212.40828.rjw@sisk.pl>
2011-03-13 13:02   ` [PATCH 9-10/10] Allow subsystems to avoid using sysdevs for defining "core" PM callbacks Rafael J. Wysocki
2011-03-13 13:03     ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev R. J. Wysocki
2011-03-17  8:20       ` Paul Mundt
2011-03-19  0:47         ` Rafael J. Wysocki
2011-03-22 14:04           ` Paul Mundt
2011-03-22 14:19             ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 20:30               ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Rafael J. Wysocki
2011-03-22 20:39                 ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 21:00                   ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Rafael J. Wysocki
2011-03-22 21:12                     ` Kay Sievers [this message]
2011-03-22 21:49                       ` Paul Mundt
2011-03-22 22:00                         ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 22:23                           ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Rafael J. Wysocki
2011-03-22 22:44                             ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 23:32                               ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Rafael J. Wysocki
2011-03-22 23:46                                 ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 23:50                                   ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Rafael J. Wysocki
2011-03-23  9:45                               ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Russell King - ARM Linux
2011-03-22 22:23                           ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Paul Mundt
2011-03-23 11:12                             ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Mark Brown
2011-03-23 11:28                               ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Paul Mundt
2011-03-22 22:05                       ` Rafael J. Wysocki
2011-03-22 22:20                         ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 22:42                           ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Rafael J. Wysocki
2011-03-22 22:56                             ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 23:05                         ` Kay Sievers
2011-03-22 23:47                           ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Rafael J. Wysocki
2011-03-22 20:19             ` Rafael J. Wysocki
2011-03-23  9:59               ` Paul Mundt
2011-03-23 20:39                 ` Rafael J. Wysocki
2011-03-13 13:04     ` [PATCH 10/10] ARM: Use struct syscore_ops instead of sysdevs for PM in timer and leds Rafael J. Wysocki
2011-03-14  9:06       ` [PATCH 10/10] ARM: Use struct syscore_ops instead of sysdevs Stephen Boyd
2011-03-14 19:54         ` [Update] Re: [PATCH 10/10] ARM: Use struct syscore_ops instead of sysdevs for PM in timer and leds Rafael J. Wysocki

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=1300828356.1815.15.camel@zag \
    --to=kay.sievers@suse.de \
    --cc=gregkh@suse.de \
    --cc=lethal@linux-sh.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=magnus.damm@gmail.com \
    --cc=rjw@sisk.pl \
    /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;
as well as URLs for NNTP newsgroup(s).