lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 27 Mar 2013 11:35:47 -0500
From:	Rob Herring <robherring2@...il.com>
To:	Stefano Stabellini <stefano.stabellini@...citrix.com>
CC:	Will Deacon <will.deacon@....com>,
	"xen-devel@...ts.xensource.com" <xen-devel@...ts.xensource.com>,
	"linux@....linux.org.uk" <linux@....linux.org.uk>,
	"arnd@...db.de" <arnd@...db.de>,
	Marc Zyngier <Marc.Zyngier@....com>,
	"nico@...aro.org" <nico@...aro.org>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	"linux-arm-kernel@...ts.infradead.org" 
	<linux-arm-kernel@...ts.infradead.org>
Subject: Re: [PATCH v3] [RFC] arm: use PSCI if available

On 03/27/2013 11:23 AM, Stefano Stabellini wrote:
> On Wed, 27 Mar 2013, Will Deacon wrote:
>> Hi Stefano,
>>
>> On Wed, Mar 27, 2013 at 12:50:39PM +0000, Stefano Stabellini wrote:
>>> Check for the presence of PSCI before setting smp_ops, use PSCI if it is
>>> available.
>>>
>>> This is useful because at least when running on Xen it's possible to have a
>>> PSCI node for example on a Versatile Express or an Exynos5 machine. In these
>>> cases the PSCI SMP calls should be the ones to be called.
>>>
>>> Remove virt_smp_ops and platsmp.c from mach-virt because they aren't needed
>>> anymore.
>>
>> [...]
>>
>>> +struct psci_operations psci_ops = {
>>> +	.cpu_suspend = psci_cpu_suspend,
>>> +	.cpu_off     = psci_cpu_off,
>>> +	.cpu_on      = psci_cpu_on,
>>> +	.migrate     = psci_migrate,
>>> +};
>>> +
>>> +#ifdef CONFIG_SMP
>>> +static void __init psci_smp_init_cpus(void)
>>> +{
>>> +}
>>> +
>>> +static void __init psci_smp_prepare_cpus(unsigned int max_cpus)
>>> +{
>>> +}
>>> +
>>> +static int __cpuinit psci_boot_secondary(unsigned int cpu,
>>> +					 struct task_struct *idle)
>>> +{
>>> +	return psci_cpu_on(cpu_logical_map(cpu), __pa(secondary_startup));
>>> +}
>>> +
>>> +static void __cpuinit psci_secondary_init(unsigned int cpu)
>>> +{
>>> +	gic_secondary_init(0);
>>> +}
>>> +
>>> +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,
>>> +};
>>> +#endif
>>
>> As I said before, I don't agree with bolting these two interfaces together
>> like this and, as it stands, I'm afraid I have to NAK this patch.
>>
>> A potential alternative is to have a set of virt_smp_ops, which have
>> wrappers around the psci functions, but that requires agreement from Xen and
>> KVM to implement the same PSCI interface, which feels unfair to me.
>>
>> I see what you're trying to do, but I can't go along with it. Sorry.
>  
> OK, let's see if I can make this acceptable to you.
> 
> 
> 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.

Rob
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ