All of lore.kernel.org
 help / color / mirror / Atom feed
From: robherring2@gmail.com (Rob Herring)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3] [RFC] arm: use PSCI if available
Date: Wed, 27 Mar 2013 12:45:27 -0500	[thread overview]
Message-ID: <51533037.5060004@gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1303271642340.4430@kaball.uk.xensource.com>

On 03/27/2013 12:10 PM, Stefano Stabellini wrote:
> On Wed, 27 Mar 2013, Rob Herring wrote:
>> On 03/27/2013 11:23 AM, Stefano Stabellini wrote:
>>> Would you agree on a patch that moves virt_smp_ops out of mach-virt and
>>> renames them to psci_smp_ops (maybe to arch/arm/kernel/psci_smp_ops.c)?
>>>
>>> Would you agree on initializing psci from setup_arch, right after the
>>> call to arm_dt_init_cpu_maps()?
>>>
>>> Finally the most controversial point: would you agree on using
>>> psci_smp_ops by default if they are available?
>>> If not, would you at least agree on letting Xen overwrite the default
>>> machine smp_ops?
>>> We need one or the other for dom0 support.
>>
>> It should not be *always* use PSCI smp ops if available, but use them
>> only if the platform does not define its own smp ops.
> 
> Well, that is the one additional problem that we have on Xen.
> 
> On x86 Xen replaces a lot of core native function calls with its own
> implementations (see paravirt_ops).
> On ARM we only need *one* set of calls: the smp_ops calls.
> 
> So if we don't want to give priority to PSCI over the platform smp_ops,
> then we need a simple workaround just for Xen in common code like the
> one appended below.
> Not pretty, but at least small:
> 
> diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
> index 3f6cbb2..08cf7e0 100644
> --- a/arch/arm/kernel/setup.c
> +++ b/arch/arm/kernel/setup.c
> @@ -43,6 +43,8 @@
>  #include <asm/cacheflush.h>
>  #include <asm/cachetype.h>
>  #include <asm/tlbflush.h>
> +#include <xen/xen.h>
> +#include <asm/xen/hypervisor.h>
>  
>  #include <asm/prom.h>
>  #include <asm/mach/arch.h>
> @@ -766,9 +768,13 @@ void __init setup_arch(char **cmdline_p)
>  	unflatten_device_tree();
>  
>  	arm_dt_init_cpu_maps();
> +	xen_early_init();
>  #ifdef CONFIG_SMP
>  	if (is_smp()) {
> -		smp_set_ops(mdesc->smp);
> +		if (xen_domain())
> +			smp_set_ops(&xen_smp_ops);
> +		else
> +			smp_set_ops(mdesc->smp);

No, I was thinking in the case of Xen and mach-virt, you would not set
mdesc->smp. So you would have something like this:

if (mdesc->smp)
	smp_set_ops(mdesc->smp);
else
	smp_set_ops(&psci_smp_ops);


Rob

WARNING: multiple messages have this Message-ID (diff)
From: Rob Herring <robherring2@gmail.com>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Will Deacon <will.deacon@arm.com>,
	"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
	"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>,
	"arnd@arndb.de" <arnd@arndb.de>,
	Marc Zyngier <Marc.Zyngier@arm.com>,
	"nico@linaro.org" <nico@linaro.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v3] [RFC] arm: use PSCI if available
Date: Wed, 27 Mar 2013 12:45:27 -0500	[thread overview]
Message-ID: <51533037.5060004@gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1303271642340.4430@kaball.uk.xensource.com>

On 03/27/2013 12:10 PM, Stefano Stabellini wrote:
> On Wed, 27 Mar 2013, Rob Herring wrote:
>> On 03/27/2013 11:23 AM, Stefano Stabellini wrote:
>>> Would you agree on a patch that moves virt_smp_ops out of mach-virt and
>>> renames them to psci_smp_ops (maybe to arch/arm/kernel/psci_smp_ops.c)?
>>>
>>> Would you agree on initializing psci from setup_arch, right after the
>>> call to arm_dt_init_cpu_maps()?
>>>
>>> Finally the most controversial point: would you agree on using
>>> psci_smp_ops by default if they are available?
>>> If not, would you at least agree on letting Xen overwrite the default
>>> machine smp_ops?
>>> We need one or the other for dom0 support.
>>
>> It should not be *always* use PSCI smp ops if available, but use them
>> only if the platform does not define its own smp ops.
> 
> Well, that is the one additional problem that we have on Xen.
> 
> On x86 Xen replaces a lot of core native function calls with its own
> implementations (see paravirt_ops).
> On ARM we only need *one* set of calls: the smp_ops calls.
> 
> So if we don't want to give priority to PSCI over the platform smp_ops,
> then we need a simple workaround just for Xen in common code like the
> one appended below.
> Not pretty, but at least small:
> 
> diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
> index 3f6cbb2..08cf7e0 100644
> --- a/arch/arm/kernel/setup.c
> +++ b/arch/arm/kernel/setup.c
> @@ -43,6 +43,8 @@
>  #include <asm/cacheflush.h>
>  #include <asm/cachetype.h>
>  #include <asm/tlbflush.h>
> +#include <xen/xen.h>
> +#include <asm/xen/hypervisor.h>
>  
>  #include <asm/prom.h>
>  #include <asm/mach/arch.h>
> @@ -766,9 +768,13 @@ void __init setup_arch(char **cmdline_p)
>  	unflatten_device_tree();
>  
>  	arm_dt_init_cpu_maps();
> +	xen_early_init();
>  #ifdef CONFIG_SMP
>  	if (is_smp()) {
> -		smp_set_ops(mdesc->smp);
> +		if (xen_domain())
> +			smp_set_ops(&xen_smp_ops);
> +		else
> +			smp_set_ops(mdesc->smp);

No, I was thinking in the case of Xen and mach-virt, you would not set
mdesc->smp. So you would have something like this:

if (mdesc->smp)
	smp_set_ops(mdesc->smp);
else
	smp_set_ops(&psci_smp_ops);


Rob


  parent reply	other threads:[~2013-03-27 17:45 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-27 12:50 [PATCH v3] [RFC] arm: use PSCI if available Stefano Stabellini
2013-03-27 12:50 ` Stefano Stabellini
2013-03-27 12:50 ` Stefano Stabellini
2013-03-27 13:35 ` Marc Zyngier
2013-03-27 13:35   ` Marc Zyngier
2013-03-27 16:20   ` Rob Herring
2013-03-27 16:20     ` Rob Herring
2013-03-27 13:38 ` Will Deacon
2013-03-27 13:38   ` Will Deacon
2013-03-27 16:23   ` Stefano Stabellini
2013-03-27 16:23     ` Stefano Stabellini
2013-03-27 16:35     ` Rob Herring
2013-03-27 16:35       ` Rob Herring
2013-03-27 17:10       ` Stefano Stabellini
2013-03-27 17:10         ` Stefano Stabellini
2013-03-27 17:24         ` Nicolas Pitre
2013-03-27 17:24           ` Nicolas Pitre
2013-03-27 18:22           ` Stefano Stabellini
2013-03-27 18:22             ` Stefano Stabellini
2013-03-27 17:45         ` Rob Herring [this message]
2013-03-27 17:45           ` Rob Herring
2013-03-27 18:03           ` Arnd Bergmann
2013-03-27 18:03             ` Arnd Bergmann
2013-03-27 18:14             ` Stefano Stabellini
2013-03-27 18:14               ` Stefano Stabellini
2013-03-27 17:23     ` Will Deacon
2013-03-27 17:23       ` Will Deacon
2013-03-28 12:48       ` Stefano Stabellini
2013-03-28 12:48         ` Stefano Stabellini
2013-03-28 14:51         ` Nicolas Pitre
2013-03-28 14:51           ` Nicolas Pitre
2013-03-28 15:04           ` Rob Herring
2013-03-28 15:04             ` Rob Herring
2013-03-28 15:36             ` Stefano Stabellini
2013-03-28 15:36               ` Stefano Stabellini
2013-03-28 15:39             ` Nicolas Pitre
2013-03-28 15:39               ` Nicolas Pitre
2013-03-28 16:00               ` Will Deacon
2013-03-28 16:00                 ` Will Deacon
2013-03-28 16:06                 ` Nicolas Pitre
2013-03-28 16:06                   ` Nicolas Pitre
2013-03-28 16:20                 ` Stefano Stabellini
2013-03-28 16:20                   ` Stefano Stabellini
2013-03-28 18:38               ` Rob Herring
2013-03-28 18:38                 ` Rob Herring
2013-03-29 13:22                 ` Stefano Stabellini
2013-03-29 13:22                   ` Stefano Stabellini
2013-03-29 13:54                   ` Rob Herring
2013-03-29 13:54                     ` Rob Herring
2013-03-29 14:47                     ` Stefano Stabellini
2013-03-29 14:47                       ` Stefano Stabellini
2013-03-27 16:33   ` Rob Herring
2013-03-27 16:33     ` Rob Herring
2013-03-27 17:05     ` Will Deacon
2013-03-27 17:05       ` Will Deacon
2013-03-27 17:50       ` Arnd Bergmann
2013-03-27 17:50         ` Arnd Bergmann
2013-03-27 18:12         ` Will Deacon
2013-03-27 18:12           ` Will Deacon
2013-03-27 19:10           ` Rob Herring
2013-03-27 19:10             ` Rob Herring
2013-03-27 19:14           ` Arnd Bergmann
2013-03-27 19:14             ` Arnd Bergmann
2013-03-27 14:55 ` Rob Herring
2013-03-27 14:55   ` Rob Herring

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=51533037.5060004@gmail.com \
    --to=robherring2@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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.