From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Greg KH <gregkh@suse.de>, Kay Sievers <kay.sievers@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, Paul Mundt <lethal@linux-sh.org>
Subject: [PATCH 9-10/10] Allow subsystems to avoid using sysdevs for defining "core" PM callbacks
Date: Sun, 13 Mar 2011 13:02:47 +0000 [thread overview]
Message-ID: <201103131402.48129.rjw@sisk.pl> (raw)
In-Reply-To: <201103122212.40828.rjw@sisk.pl>
On Saturday, March 12, 2011, Rafael J. Wysocki wrote:
> Hi,
>
> On Thursday, March 10, 2011, Rafael J. Wysocki wrote:
> > There are multiple problems with sysdevs, or struct sys_device objects to
> > be precise, that are so annoying that some people have started to think
> > of removind them entirely from the kernel. To me, personally, the most
> > obvious issue is the way sysdevs are used for defining suspend/resume
> > callbacks to be executed with one CPU on-line and interrupts disabled.
> > Greg and Kay may tell you more about the other problems with sysdevs. :-)
> >
> > Some subsystems need to carry out certain operations during suspend after
> > we've disabled non-boot CPUs and interrupts have been switched off on the
> > only on-line one. Currently, the only way to achieve that is to define
> > sysdev suspend/resume callbacks, but this is cumbersome and inefficient.
> > Namely, to do that, one has to define a sysdev class providing the callbacks
> > and a sysdev actually using them, which is excessively complicated. Moreover,
> > the sysdev suspend/resume callbacks take arguments that are not really used
> > by the majority of subsystems defining sysdev suspend/resume callbacks
> > (or even if they are used, they don't really _need_ to be used, so they
> > are simply unnecessary). Of course, if a sysdev is only defined to provide
> > suspend/resume (and maybe shutdown) callbacks, there's no real reason why
> > it should show up in sysfs.
> >
> > For this reason, I thought it would be a good idea to provide a simpler
> > interface for subsystems to define "very late" suspend callbacks and
> > "very early" resume callbacks (and "very late" shutdown callbacks as well)
> > without the entire bloat related to sysdevs. The interface is introduced
> > by the first of the following patches, while the second patch converts some
> > sysdev users related to the x86 architecture to using the new interface.
> >
> > I believe that call sysdev users who need to define suspend/resume/shutdown
> > callbacks may be converted to using the interface provided by the first patch,
> > which in turn should allow us to convert the remaining sysdev functionality
> > into "normal" struct device interfaces. Still, even if that turns out to be
> > too complicated, the bloat reduction resulting from the second patch kind of
> > shows that moving at least some sysdev users to a simpler interface (like in
> > the first patch) is a good idea anyway.
> >
> > This is a proof of concept, so the patches have not been tested. Please be
> > extrememly careful, because they touch sensitive code, so to speak. In the
> > majority of cases the changes are rather straightforward, but there are some
> > more interesting cases as well (io_apic.c most importantly).
>
> Since Greg likes the idea and there haven't been any objections so far, here's
> the official submission. The patches have been tested on HP nx6325 and
> Toshiba Portege R500.
>
> Patch [1/8] is regareded as 2.6.38 material, following Greg's advice. The
> other patches in the set are regarded as 2.6.39 material. The last one
> obviously depends on all of the previous ones.
>
> [1/8] - Introduce struct syscore_ops for registering operations to be run on
> one CPU during suspend/resume/shutdown.
>
> [2/8] - Convert sysdev users in arch/x86 to using struct syscore_ops.
>
> [3/8] - Make ACPI use struct syscore_ops for irqrouter_resume().
>
> [4/8] - Make timekeeping use struct syscore_ops for suspend/resume.
>
> [5/8] - Make Intel IOMMU use struct syscore_ops for suspend/resume.
>
> [6/8] - Make KVM use struct syscore_ops for suspend/resume.
>
> [7/8] - Make cpufreq use struct syscore_ops for boot CPU suspend/resume.
>
> [8/8] - Introduce config switch allowing architectures to skip sysdev
> suspend/resume/shutdown code.
>
> If there are no objectsions, I'd like to push these patches through the suspend
> tree.
A little followup with two ARM-related patches.
[9/10] - Make sh drivers use struct syscore_ops for suspend/resume (instead of
sysdevs).
[10/10] - Use struct syscore_ops for suspend/resume (instead of sysdevs) in
core ARM code.
Thanks,
Rafael
next parent reply other threads:[~2011-03-13 13:02 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 ` Rafael J. Wysocki [this message]
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 ` [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=201103131402.48129.rjw@sisk.pl \
--to=rjw@sisk.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).