From: robin.murphy@arm.com (Robin Murphy)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 1/2] ARM: tango: add HOTPLUG_CPU support
Date: Tue, 28 Jun 2016 13:30:24 +0100 [thread overview]
Message-ID: <57726DE0.8090308@arm.com> (raw)
In-Reply-To: <577266AD.8000006@sigmadesigns.com>
On 28/06/16 12:59, Marc Gonzalez wrote:
> cpu_die() and cpu_kill() are implemented in firmware.
>
> Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
> ---
> arch/arm/mach-tango/platsmp.c | 30 ++++++++++++++++++++++++++++++
> arch/arm/mach-tango/smc.h | 4 +++-
> 2 files changed, 33 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/mach-tango/platsmp.c b/arch/arm/mach-tango/platsmp.c
> index a21f55e000d2..a24b9b1d0b1a 100644
> --- a/arch/arm/mach-tango/platsmp.c
> +++ b/arch/arm/mach-tango/platsmp.c
> @@ -1,3 +1,4 @@
> +#include <linux/delay.h>
> #include <linux/init.h>
> #include <linux/smp.h>
> #include "smc.h"
> @@ -9,8 +10,37 @@ static int tango_boot_secondary(unsigned int cpu, struct task_struct *idle)
> return 0;
> }
>
> +#ifdef CONFIG_HOTPLUG_CPU
> +/*
> + * cpu_kill() and cpu_die() run concurrently on different cores.
> + * Firmware will only "kill" a core once it has properly "died".
> + * Keep trying to kill a core until the operation succeeds, but
> + * sleep between tries to give the core time to die.
> + */
> +static int tango_cpu_kill(unsigned int cpu)
> +{
> + do {
> + msleep(10);
> + } while (tango_aux_core_kill(cpu) != 0);
Does the firmware guarantee that this will succeed (or at least report
success) in finite time, regardless of how messed up the system might
be? I'd imagine this should probably have either a timeout or a comment
clarifying why it doesn't need a timeout.
Robin.
> +
> + return 1;
> +}
> +
> +static void tango_cpu_die(unsigned int cpu)
> +{
> + do {
> + cpu_relax();
> + } while (tango_aux_core_die(cpu) != 0);
> +}
> +#else
> +#define tango_cpu_kill NULL
> +#define tango_cpu_die NULL
> +#endif
> +
> static const struct smp_operations tango_smp_ops __initconst = {
> .smp_boot_secondary = tango_boot_secondary,
> + .cpu_kill = tango_cpu_kill,
> + .cpu_die = tango_cpu_die,
> };
>
> CPU_METHOD_OF_DECLARE(tango4_smp, "sigma,tango4-smp", &tango_smp_ops);
> diff --git a/arch/arm/mach-tango/smc.h b/arch/arm/mach-tango/smc.h
> index 7a4af35cc390..3d31f984f44c 100644
> --- a/arch/arm/mach-tango/smc.h
> +++ b/arch/arm/mach-tango/smc.h
> @@ -2,4 +2,6 @@ extern int tango_smc(unsigned int val, unsigned int service);
>
> #define tango_set_l2_control(val) tango_smc(val, 0x102)
> #define tango_start_aux_core(val) tango_smc(val, 0x104)
> -#define tango_set_aux_boot_addr(val) tango_smc((unsigned int)val, 0x105)
> +#define tango_set_aux_boot_addr(val) tango_smc(val, 0x105)
> +#define tango_aux_core_die(val) tango_smc(val, 0x121)
> +#define tango_aux_core_kill(val) tango_smc(val, 0x122)
>
next prev parent reply other threads:[~2016-06-28 12:30 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-28 11:55 [PATCH v3 0/2] [for arm-soc] mach-tango updates for v4.8 Marc Gonzalez
2016-06-28 11:59 ` [PATCH v3 1/2] ARM: tango: add HOTPLUG_CPU support Marc Gonzalez
2016-06-28 12:30 ` Robin Murphy [this message]
2016-06-28 15:04 ` Marc Gonzalez
2016-06-28 15:16 ` Robin Murphy
2016-06-29 12:28 ` Marc Gonzalez
2016-06-29 12:21 ` [PATCH v4 " Marc Gonzalez
2016-06-28 12:01 ` [PATCH v3 2/2] Update ARM/TANGO section Marc Gonzalez
2016-07-05 12:32 ` [PATCH v3 0/2] [for arm-soc] mach-tango updates for v4.8 Mason
2016-07-06 3:57 ` Olof Johansson
2016-07-06 20:04 ` Arnd Bergmann
2016-07-07 4:45 ` Olof Johansson
2016-07-07 8:50 ` Mason
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=57726DE0.8090308@arm.com \
--to=robin.murphy@arm.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 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).