[1/3] ARM: exynos: Unify secondary CPU boot procedure a bit

Message ID 20190322114833.12686-2-m.szyprowski@samsung.com
State New
Headers show
Series
  • Little cleanup of mach-exynos code
Related show

Commit Message

Marek Szyprowski March 22, 2019, 11:48 a.m.
On all supported Exynos SoC it is enough to call dsb_sev() like in the
Exynos3250 case instead of the IPI, so simplify the code a bit.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

---
 arch/arm/mach-exynos/platsmp.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

-- 
2.17.1

Comments

Krzysztof Kozlowski March 22, 2019, 1:02 p.m. | #1
On Fri, 22 Mar 2019 at 12:48, Marek Szyprowski <m.szyprowski@samsung.com> wrote:
>

> On all supported Exynos SoC it is enough to call dsb_sev() like in the

> Exynos3250 case instead of the IPI, so simplify the code a bit.

>

> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

> ---

>  arch/arm/mach-exynos/platsmp.c | 5 +----

>  1 file changed, 1 insertion(+), 4 deletions(-)

>

> diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c

> index 3cced9dfe963..65da13923b8f 100644

> --- a/arch/arm/mach-exynos/platsmp.c

> +++ b/arch/arm/mach-exynos/platsmp.c

> @@ -361,10 +361,7 @@ static int exynos_boot_secondary(unsigned int cpu, struct task_struct *idle)

>

>                 call_firmware_op(cpu_boot, core_id);

>

> -               if (soc_is_exynos3250())

> -                       dsb_sev();

> -               else

> -                       arch_send_wakeup_ipi_mask(cpumask_of(cpu));

> +               dsb_sev();


Code is simplified but it is not equivalent. The wakeup IP was sent
only to booted secondary CPU. SEV is sent to all CPUs. If you are
onlining last CPU in octa-core setup, you will be poking and waking up
all other cores as well.

Best regards,
Krzysztof

Patch

diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c
index 3cced9dfe963..65da13923b8f 100644
--- a/arch/arm/mach-exynos/platsmp.c
+++ b/arch/arm/mach-exynos/platsmp.c
@@ -361,10 +361,7 @@  static int exynos_boot_secondary(unsigned int cpu, struct task_struct *idle)
 
 		call_firmware_op(cpu_boot, core_id);
 
-		if (soc_is_exynos3250())
-			dsb_sev();
-		else
-			arch_send_wakeup_ipi_mask(cpumask_of(cpu));
+		dsb_sev();
 
 		if (exynos_pen_release == -1)
 			break;