All of lore.kernel.org
 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>, Len Brown <lenb@kernel.org>,
	Greg KH <gregkh@suse.de>, Jesse Barnes <jbarnes@virtuousgeek.org>,
	Linux PM mailing list <linux-pm@lists.linux-foundation.org>,
	"H. Peter Anvin" <hpa@zytor.com>,
	mingo@redhat.com, tglx@linutronix.de
Subject: Re: [RFC][PATCH 0/2] Allow subsystems to avoid using sysdevs for defining "core" PM callbacks
Date: Thu, 10 Mar 2011 14:05:15 +0100	[thread overview]
Message-ID: <1299762315.1875.14.camel@zag> (raw)
In-Reply-To: <201103100131.58206.rjw@sisk.pl>

On Thu, 2011-03-10 at 01:31 +0100, 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.

Do I read that right? We get rid of the entire dance of creating
sysdevs/sysdev_classes and the pointless and broken stuff in /sys?

We just dynamically maintain a list of devices/operations, which is
list-executed when needed?

These new "core" operations are not included in every device but only
global per subsystem, just like the sysdev_class did earlier?

Looks all like a nice plan to me.

Thanks,
Kay


  parent reply	other threads:[~2011-03-10 13:05 UTC|newest]

Thread overview: 199+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-10  0:31 [RFC][PATCH 0/2] Allow subsystems to avoid using sysdevs for defining "core" PM callbacks Rafael J. Wysocki
2011-03-10  0:33 ` [RFC][PATCH 1/2] Introduce struct syscore_ops and related functionality Rafael J. Wysocki
2011-03-10  3:33   ` Alan Stern
2011-03-10  3:33   ` [linux-pm] " Alan Stern
2011-03-10 10:42     ` Rafael J. Wysocki
2011-03-10 10:42     ` [linux-pm] " Rafael J. Wysocki
2011-03-10 11:30     ` [RFC][Update][PATCH " Rafael J. Wysocki
2011-03-10 11:30     ` Rafael J. Wysocki
2011-03-11 17:11       ` Greg KH
2011-03-11 17:11       ` Greg KH
2011-03-11 20:13         ` Rafael J. Wysocki
2011-03-11 20:16           ` Greg KH
2011-03-11 20:33             ` Rafael J. Wysocki
2011-03-11 20:33             ` Rafael J. Wysocki
2011-03-11 20:16           ` Greg KH
2011-03-11 20:13         ` Rafael J. Wysocki
2011-03-10  0:33 ` [RFC][PATCH " Rafael J. Wysocki
2011-03-10  0:34 ` [RFC][PATCH 2/2] Convert several sysdev users to using struct syscore_ops Rafael J. Wysocki
2011-03-11 17:12   ` Greg KH
2011-03-11 20:29     ` Rafael J. Wysocki
2011-03-11 20:33       ` Greg KH
2011-03-11 20:45         ` Rafael J. Wysocki
2011-03-11 20:45         ` Rafael J. Wysocki
2011-03-11 20:33       ` Greg KH
2011-03-11 20:29     ` Rafael J. Wysocki
2011-03-11 17:12   ` Greg KH
2011-03-10  0:34 ` Rafael J. Wysocki
2011-03-10 13:05 ` [RFC][PATCH 0/2] Allow subsystems to avoid using sysdevs for defining "core" PM callbacks Kay Sievers
2011-03-10 13:05 ` Kay Sievers [this message]
2011-03-10 19:04   ` Rafael J. Wysocki
2011-03-10 19:04   ` Rafael J. Wysocki
2011-03-12 21:12 ` [PATCH 0/8] " Rafael J. Wysocki
2011-03-12 21:12   ` Rafael J. Wysocki
2011-03-12 21:13   ` [PATCH 1/8] PM / Core: Introcude struct syscore_ops Rafael J. Wysocki
2011-03-12 21:13   ` Rafael J. Wysocki
2011-03-12 21:15   ` [PATCH 2/8] x86: Use syscore_ops instead of sysdev classes and sysdevs Rafael J. Wysocki
2011-03-12 21:15   ` Rafael J. Wysocki
2011-03-13 14:23     ` Thomas Gleixner
2011-03-13 15:07       ` Rafael J. Wysocki
2011-03-13 15:07       ` Rafael J. Wysocki
2011-03-13 14:23     ` Thomas Gleixner
2011-03-12 21:16   ` [PATCH 3/8] ACPI: Use syscore_ops instead of sysdev class and sysdev Rafael J. Wysocki
2011-03-18 21:38     ` Len Brown
2011-03-18 21:38       ` Len Brown
2011-03-12 21:16   ` Rafael J. Wysocki
2011-03-12 21:17   ` [PATCH 4/8] timekeeping: " Rafael J. Wysocki
2011-03-12 21:17   ` Rafael J. Wysocki
2011-03-13 13:56     ` Thomas Gleixner
2011-03-13 15:08       ` Rafael J. Wysocki
2011-03-13 15:08       ` Rafael J. Wysocki
2011-03-13 13:56     ` Thomas Gleixner
2011-03-12 21:18   ` [PATCH 5/8] PCI / Intel IOMMU: " Rafael J. Wysocki
2011-03-12 21:18   ` Rafael J. Wysocki
2011-06-02 17:30     ` Tony Luck
2011-06-06 17:57       ` Rafael J. Wysocki
2011-06-06 17:58         ` Luck, Tony
2011-06-06 17:58         ` Luck, Tony
2011-06-06 17:57       ` Rafael J. Wysocki
2011-06-02 17:30     ` Tony Luck
2011-03-12 21:18   ` [PATCH 6/8] KVM: " Rafael J. Wysocki
2011-03-12 21:18   ` Rafael J. Wysocki
2011-03-12 21:20   ` [PATCH 7/8] cpufreq: Use syscore_ops for boot CPU suspend/resume Rafael J. Wysocki
2011-03-12 21:20   ` Rafael J. Wysocki
2011-03-15 21:43     ` [Update, v2] " Rafael J. Wysocki
2011-03-15 21:43     ` Rafael J. Wysocki
2011-03-12 21:21   ` [PATCH 8/8] Introduce ARCH_NO_SYSDEV_OPS config option Rafael J. Wysocki
2011-03-12 21:21   ` Rafael J. Wysocki
2011-03-13 13:55     ` Thomas Gleixner
2011-03-13 13:55       ` Thomas Gleixner
2011-03-13 15:30       ` [Update] " Rafael J. Wysocki
2011-03-13 15:30       ` Rafael J. Wysocki
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:02     ` 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-13 13:03       ` R. J. Wysocki
2011-03-17  8:20       ` Paul Mundt
2011-03-17  8:20       ` Paul Mundt
2011-03-17  8:20         ` Paul Mundt
2011-03-19  0:47         ` Rafael J. Wysocki
2011-03-19  0:47           ` Rafael J. Wysocki
2011-03-22 14:04           ` Paul Mundt
2011-03-22 14:04           ` Paul Mundt
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 14:19               ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Kay Sievers
2011-03-22 20:30               ` Rafael J. Wysocki
2011-03-22 20:30               ` Rafael J. Wysocki
2011-03-22 20:30                 ` Rafael J. Wysocki
2011-03-22 20:39                 ` Kay Sievers
2011-03-22 20:39                 ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 20:39                   ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Kay Sievers
2011-03-22 21:00                   ` Rafael J. Wysocki
2011-03-22 21:00                     ` Rafael J. Wysocki
2011-03-22 21:12                     ` Kay Sievers
2011-03-22 21:12                     ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 21:12                       ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Kay Sievers
2011-03-22 21:49                       ` Paul Mundt
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:00                           ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Kay Sievers
2011-03-22 22:23                           ` Rafael J. Wysocki
2011-03-22 22:23                           ` Rafael J. Wysocki
2011-03-22 22:23                             ` Rafael J. Wysocki
2011-03-22 22:44                             ` Kay Sievers
2011-03-22 22:44                             ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 22:44                               ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Kay Sievers
2011-03-22 23:32                               ` Rafael J. Wysocki
2011-03-22 23:32                                 ` 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:46                                   ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Kay Sievers
2011-03-22 23:50                                   ` Rafael J. Wysocki
2011-03-22 23:50                                     ` Rafael J. Wysocki
2011-03-22 23:50                                   ` Rafael J. Wysocki
2011-03-22 23:46                                 ` Kay Sievers
2011-03-22 23:32                               ` Rafael J. Wysocki
2011-03-23  9:45                               ` Russell King - ARM Linux
2011-03-23  9:45                               ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Russell King - ARM Linux
2011-03-23  9:45                                 ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Russell King - ARM Linux
2011-03-22 22:23                           ` Paul Mundt
2011-03-22 22:23                           ` Paul Mundt
2011-03-22 22:23                             ` Paul Mundt
2011-03-23 11:12                             ` Mark Brown
2011-03-23 11:12                             ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Mark Brown
2011-03-23 11:12                               ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Mark Brown
2011-03-23 11:28                               ` Paul Mundt
2011-03-23 11:28                               ` Paul Mundt
2011-03-23 11:28                                 ` Paul Mundt
2011-03-22 22:00                         ` Kay Sievers
2011-03-22 21:49                       ` Paul Mundt
2011-03-22 22:05                       ` Rafael J. Wysocki
2011-03-22 22:05                         ` Rafael J. Wysocki
2011-03-22 22:20                         ` Kay Sievers
2011-03-22 22:20                         ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 22:20                           ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Kay Sievers
2011-03-22 22:42                           ` Rafael J. Wysocki
2011-03-22 22:42                             ` Rafael J. Wysocki
2011-03-22 22:56                             ` Kay Sievers
2011-03-22 22:56                             ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 22:56                               ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Kay Sievers
2011-03-22 22:42                           ` Rafael J. Wysocki
2011-03-22 23:05                         ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev Kay Sievers
2011-03-22 23:05                           ` [PATCH 9/10] sh: Use struct syscore_ops instead of sysdev class and sysdev Kay Sievers
2011-03-22 23:47                           ` Rafael J. Wysocki
2011-03-22 23:47                           ` Rafael J. Wysocki
2011-03-22 23:47                             ` Rafael J. Wysocki
2011-03-22 23:05                         ` Kay Sievers
2011-03-22 22:05                       ` Rafael J. Wysocki
2011-03-22 21:00                   ` Rafael J. Wysocki
2011-03-22 14:19             ` Kay Sievers
2011-03-22 20:19             ` Rafael J. Wysocki
2011-03-22 20:19               ` Rafael J. Wysocki
2011-03-23  9:59               ` Paul Mundt
2011-03-23  9:59               ` Paul Mundt
2011-03-23  9:59                 ` Paul Mundt
2011-03-23 20:39                 ` Rafael J. Wysocki
2011-03-23 20:39                   ` Rafael J. Wysocki
2011-03-23 20:39                 ` Rafael J. Wysocki
2011-03-22 20:19             ` Rafael J. Wysocki
2011-03-19  0:47         ` Rafael J. Wysocki
2011-03-13 13:03     ` R. 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-13 13:04       ` Rafael J. Wysocki
2011-03-14  9:06       ` [PATCH 10/10] ARM: Use struct syscore_ops instead of sysdevs Stephen Boyd
2011-03-14  9:06         ` [PATCH 10/10] ARM: Use struct syscore_ops instead of sysdevs for PM in timer and leds Stephen Boyd
2011-03-14 19:54         ` [Update] " Rafael J. Wysocki
2011-03-14 19:54         ` Rafael J. Wysocki
2011-03-14 19:54           ` Rafael J. Wysocki
2011-03-14  9:06       ` Stephen Boyd
2011-03-13 13:04     ` Rafael J. Wysocki
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-21 23:31   ` [PATCH 0/6] Do not use sysdevs for implementing "core" PM operations on x86 Rafael J. Wysocki
2011-03-21 23:34     ` [PATCH 1/6] x86: Use syscore_ops instead of sysdev classes and sysdevs Rafael J. Wysocki
2011-03-21 23:34     ` Rafael J. Wysocki
2011-03-21 23:35     ` [PATCH 2/6] timekeeping: Use syscore_ops instead of sysdev class and sysdev Rafael J. Wysocki
2011-03-21 23:35     ` Rafael J. Wysocki
2011-03-21 23:36     ` [PATCH 3/6] PCI / Intel IOMMU: " Rafael J. Wysocki
2011-03-22 10:57       ` Joerg Roedel
2011-03-22 22:07         ` Rafael J. Wysocki
2011-03-23  7:48           ` Roedel, Joerg
2011-03-23  7:48           ` Roedel, Joerg
2011-03-22 22:07         ` Rafael J. Wysocki
2011-03-22 10:57       ` Joerg Roedel
2011-03-21 23:36     ` Rafael J. Wysocki
2011-03-21 23:37     ` [PATCH 4/6] KVM: " Rafael J. Wysocki
2011-03-22  9:18       ` Avi Kivity
2011-03-22  9:18       ` Avi Kivity
2011-03-21 23:37     ` Rafael J. Wysocki
2011-03-21 23:38     ` [PATCH 5/6] cpufreq: Use syscore_ops for boot CPU suspend/resume (v2) Rafael J. Wysocki
2011-03-21 23:38     ` Rafael J. Wysocki
2011-03-21 23:38     ` [PATCH 6/6] Introduce ARCH_NO_SYSDEV_OPS config option (v2) Rafael J. Wysocki
2011-03-21 23:38     ` Rafael J. Wysocki
2011-03-22 10:32     ` [PATCH 0/6] Do not use sysdevs for implementing "core" PM operations on x86 Ingo Molnar
2011-03-22 10:32     ` Ingo Molnar
2011-03-22 20:33       ` Rafael J. Wysocki
2011-03-25 22:51         ` [GIT PULL] More power management updates for 2.6.39 Rafael J. Wysocki
2011-03-25 22:51         ` Rafael J. Wysocki
2011-03-22 20:33       ` [PATCH 0/6] Do not use sysdevs for implementing "core" PM operations on x86 Rafael J. Wysocki
2011-03-21 23:31   ` Rafael J. Wysocki
  -- strict thread matches above, loose matches on Subject: below --
2011-03-10  0:31 [RFC][PATCH 0/2] Allow subsystems to avoid using sysdevs for defining "core" PM callbacks 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=1299762315.1875.14.camel@zag \
    --to=kay.sievers@suse.de \
    --cc=gregkh@suse.de \
    --cc=hpa@zytor.com \
    --cc=jbarnes@virtuousgeek.org \
    --cc=lenb@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=mingo@redhat.com \
    --cc=rjw@sisk.pl \
    --cc=tglx@linutronix.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.