linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Will Deacon <will.deacon@arm.com>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"konrad.wilk@oracle.com" <konrad.wilk@oracle.com>,
	Ian Campbell <Ian.Campbell@citrix.com>,
	"arnd@arndb.de" <arnd@arndb.de>,
	Marc Zyngier <Marc.Zyngier@arm.com>,
	"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>,
	"nico@linaro.org" <nico@linaro.org>
Subject: Re: [PATCH v2 6/6] [RFC] arm: use PSCI if available
Date: Tue, 26 Mar 2013 15:37:30 +0000	[thread overview]
Message-ID: <20130326153730.GA22368@mudshark.cambridge.arm.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1303261509080.4430@kaball.uk.xensource.com>

On Tue, Mar 26, 2013 at 03:25:55PM +0000, Stefano Stabellini wrote:
> On Tue, 26 Mar 2013, Will Deacon wrote:
> > On Tue, Mar 26, 2013 at 02:41:15PM +0000, Stefano Stabellini wrote:
> > > +struct smp_operations __initdata psci_smp_ops = {
> > > +	.smp_init_cpus		= psci_smp_init_cpus,
> > > +	.smp_prepare_cpus	= psci_smp_prepare_cpus,
> > > +	.smp_secondary_init	= psci_secondary_init,
> > > +	.smp_boot_secondary	= psci_boot_secondary,
> > > +};
> > 
> > Whilst I like the idea of this, I don't think things will pan out this
> > nicely in practice. There will almost always be a level of indirection
> > required between the internal Linux SMP operations and the expectations of
> > the PSCI firmware, whether this is in CPU numbering or other,
> > platform-specific fields in various parameters.
> > 
> > Tying these two things together like this confuses the layering in my
> > opinion and will likely lead to potentially subtle breakages if platforms
> > start trying to adopt this.
> 
> What you are saying is that psci could either be used directly, like we
> are doing, or it could just be the base of some higher level platform
> specific smp_ops.
> 
> Honestly I think that psci is already high level enough that I would
> worry if somebody started to wrap it around something else.

I don't agree. PSCI is a low-level firmware interface, which will naturally
have implementation-specific parts to it. For example, many of the CPU power
functions have platform-specific state ID parameters which we can't just
ignore. Furthermore, the method by which a CPU is identified needn't match
the value in our logical map. The purpose of the PSCI code in Linux is to
provide a basic abstraction on top of this interface, so that platforms can
incorporate them into higher-level power management functions, which
themselves might be plumbed into smp_operations structures.

> However we still support that use case just fine:  they can just avoid
> having a psci node on device tree and just keep using their machine
> specific smp_ops. It's up to them really.

Why get rid of the node? That's there to initialise the PSCI backend
accordingly and shouldn't have anything to do with SMP.

> They can even base the implementation of their smp_ops on the current
> psci code, in order to facilitate that I could get rid of psci_ops
> (which initialization is based on device tree) and export the psci_cpu_*
> functions instead, so that they can be called directly by other smp_ops.

Again, I think this destroys the layering. The whole point is that the PSCI
functions are called from within something that understands precisely how to
talk to the firmware and what it is capable of.

> > If this can indeed work for the virtual platforms (Xen and KVM), then I
> > think it would be better expressed using `virt' smp_ops, which map directly
> > to PSCI, rather than putting them here. Even then, it's tying KVM and Xen
> > together on the firmware side of things...
> 
> Keep in mind that dom0 on Xen boots as a native machine (versatile
> express or exynos5 for example) with a Xen hypervisor node on it.  We
> would need to find a way to override the default machine smp_ops with
> a set of xen_smp_ops early at boot.
> I don't like this option very much, I think is fragile.

Why can't dom0 use whatever smp ops the native machine would use?

Will

  reply	other threads:[~2013-03-26 15:38 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-26 14:40 [PATCH v2 0/6] xen/arm: move to mach-virt and support SMP Stefano Stabellini
2013-03-26 14:41 ` [PATCH v2 1/6] xen/arm: actually pass a non-NULL percpu pointer to request_percpu_irq Stefano Stabellini
2013-03-26 14:41 ` [PATCH v2 2/6] xen/arm: SMP support Stefano Stabellini
2013-03-26 14:41 ` [PATCH v2 3/6] xen: move the xenvm machine to mach-virt Stefano Stabellini
2013-03-26 14:41 ` [PATCH v2 4/6] xen/arm: implement HYPERVISOR_vcpu_op Stefano Stabellini
2013-03-26 14:41 ` [PATCH v2 5/6] xenvm: add a simple PSCI node and a second cpu Stefano Stabellini
2013-03-26 15:00   ` Arnd Bergmann
2013-03-26 16:39     ` Stefano Stabellini
2013-03-26 14:41 ` [PATCH v2 6/6] [RFC] arm: use PSCI if available Stefano Stabellini
2013-03-26 14:58   ` Arnd Bergmann
2013-03-26 15:09     ` Stefano Stabellini
2013-03-26 15:04   ` Will Deacon
2013-03-26 15:25     ` Stefano Stabellini
2013-03-26 15:37       ` Will Deacon [this message]
2013-03-26 15:46         ` Arnd Bergmann
2013-03-26 15:55           ` Stefano Stabellini
2013-03-26 16:03           ` Nicolas Pitre
2013-03-27 11:15             ` Stefano Stabellini
2013-03-26 15:49         ` Stefano Stabellini
2013-03-26 16:01         ` Nicolas Pitre

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=20130326153730.GA22368@mudshark.cambridge.arm.com \
    --to=will.deacon@arm.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=Marc.Zyngier@arm.com \
    --cc=arnd@arndb.de \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=nico@linaro.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xensource.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).