linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Kay Sievers <kay.sievers@suse.de>
Cc: Paul Mundt <lethal@linux-sh.org>,
	"R. J. Wysocki" <Rafal.Wysocki@fuw.edu.pl>,
	LKML <linux-kernel@vger.kernel.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 class and sysdev
Date: Tue, 22 Mar 2011 20:30:46 +0000	[thread overview]
Message-ID: <201103222130.46603.rjw@sisk.pl> (raw)
In-Reply-To: <1300803596.1456.10.camel@zag>

On Tuesday, March 22, 2011, Kay Sievers wrote:
> On Tue, 2011-03-22 at 23:04 +0900, Paul Mundt wrote:
> > On Sat, Mar 19, 2011 at 01:47:27AM +0100, Rafael J. Wysocki wrote:
> > > On Thursday, March 17, 2011, Paul Mundt wrote:
> > > > On Sun, Mar 13, 2011 at 02:03:49PM +0100, R. J. Wysocki wrote:
> > > > > From: Rafael J. Wysocki <rjw@sisk.pl>
> > > > > 
> > > > > Convert the SuperH clocks framework and shared interrupt handling
> > > > > code to using struct syscore_ops instead of a sysdev classes and
> > > > > sysdevs for power managment.
> > > > > 
> > > > > This reduces the code size significantly and simplifies it.  The
> > > > > optimizations causing things not to be restored after creating a
> > > > > hibernation image are removed, but they might lead to undesirable
> > > > > effects during resume from hibernation (e.g. the clocks would be left
> > > > > as the boot kernel set them, which might be not the same way as the
> > > > > hibernated kernel had seen them before the hibernation).
> > > > > 
> > > > > This also is necessary for removing sysdevs from the kernel entirely
> > > > > in the future.
> > > > > 
> > > > > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
> > > > 
> > > > This misses the use of the sysdev class by the userimask code, though I'm
> > > > open to suggestions for alternatives.
> > > 
> > > For now, I'd simply move the sysdev class definition to userimask.c, like
> > > in the patch below.  The current goal is to eliminate the suspend/resume and
> > > shutdown operations from sysdevs (and sysdev drivers), the next step will
> > > be to replace the remaining sysdevs with alternative mechanisms.
> > > 
> > It's not quite that straightforward, you've also killed off the name
> > attribute for each of the intc sysdevs, so we no longer have a visible
> > way to map a given intc controller number to the controller name in a
> > user visible way.
> > 
> > I'm not opposed to the syscore thing for suspend/resume ops, but I'm not
> > willing to trash the userimask and name mapping interface in the process
> > with no alternatives.
> > 
> > userimask was the first global configuration item I added, but there are
> > other per-controller and global configuration knobs that I plan to export
> > through the interface, so there really needs to be a compelling reason
> > for moving off of sysdevs.
> 
> Yes, they don't fit into the model. They have been a dumb hack from the
> first day, and never integrated into the kenrel driver core or hotplug
> properly.
> 
> If you need the userspace visibility, better just add a "struct
> bus_type" with a proper name for your subsystem and register a "struct
> device" with the bus_type assigned for all of them, instead of using the
> broken concept of sydevs. You can even make them show up
> in /sys/devices/system/<bus_type name>/<struct device name>/ if you want
> to.

I don't really think that's going to be useful in this particular case.
The reason is, first, because the struct device would cause lots of other
stuff to show up in sysfs which would be totally redundant and confusing
and, second, because the things exported here are simply static attributes,
pretty much like the stuff in /sys/power/.

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

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

Thanks,
Rafael

  reply	other threads:[~2011-03-22 20:30 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               ` Rafael J. Wysocki [this message]
2011-03-22 20:39                 ` 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                     ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 21:49                       ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev 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=201103222130.46603.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=Rafal.Wysocki@fuw.edu.pl \
    --cc=gregkh@suse.de \
    --cc=kay.sievers@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 \
    /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).