diff mbox

[U-Boot] arm/layerscape: Fix non-boot cpus cannot correctly fall in spin table

Message ID 1434623578-31509-1-git-send-email-dongsheng.wang@freescale.com
State Accepted
Delegated to: York Sun
Headers show

Commit Message

Dongsheng Wang June 18, 2015, 10:32 a.m. UTC
From: Wang Dongsheng <dongsheng.wang@freescale.com>

Bootrom will put cpus into WFE state when boot cpu release cpus, so
target cpu cannot correctly go to spin state.

Add 'sev' to wakeup non-boot cpu that hold on bootrom space, let target
cpu can fall into u-boot spin table.

Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>

Comments

Dongsheng Wang July 14, 2015, 7:09 a.m. UTC | #1
Hi Alison & Jason,

Could you ACK this patch?

Regards,
-Dongsheng

> -----Original Message-----
> From: Dongsheng Wang [mailto:dongsheng.wang@freescale.com]
> Sent: Thursday, June 18, 2015 6:33 PM
> To: Sun York-R58495
> Cc: Jin Zhengxiong-R64188; Wang Huan-B18965; Zhao Chenhui-B35336; Zhang Zhuoyu-
> B46552; u-boot@lists.denx.de; Wang Dongsheng-B40534
> Subject: [PATCH] arm/layerscape: Fix non-boot cpus cannot correctly fall in spin
> table
> 
> From: Wang Dongsheng <dongsheng.wang@freescale.com>
> 
> Bootrom will put cpus into WFE state when boot cpu release cpus, so
> target cpu cannot correctly go to spin state.
> 
> Add 'sev' to wakeup non-boot cpu that hold on bootrom space, let target
> cpu can fall into u-boot spin table.
> 
> Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> 
> diff --git a/arch/arm/cpu/armv7/ls102xa/cpu.c b/arch/arm/cpu/armv7/ls102xa/cpu.c
> index 75f0d8c..1f82893 100644
> --- a/arch/arm/cpu/armv7/ls102xa/cpu.c
> +++ b/arch/arm/cpu/armv7/ls102xa/cpu.c
> @@ -344,5 +344,13 @@ void smp_kick_all_cpus(void)
>  	struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
> 
>  	out_be32(&gur->brrl, 0x2);
> +
> +	/*
> +	 * LS1 STANDBYWFE is not captured outside the ARM module in the soc.
> +	 * So add a delay to wait bootrom execute WFE.
> +	 */
> +	udelay(1);
> +
> +	asm volatile("sev");
>  }
>  #endif
> --
> 2.1.0.27.g96db324
York Sun July 15, 2015, 6:06 p.m. UTC | #2
On 07/14/2015 12:09 AM, Wang Dongsheng-B40534 wrote:
> Hi Alison & Jason,
> 
> Could you ACK this patch?
> 
> Regards,
> -Dongsheng
> 
>> -----Original Message-----
>> From: Dongsheng Wang [mailto:dongsheng.wang@freescale.com]
>> Sent: Thursday, June 18, 2015 6:33 PM
>> To: Sun York-R58495
>> Cc: Jin Zhengxiong-R64188; Wang Huan-B18965; Zhao Chenhui-B35336; Zhang Zhuoyu-
>> B46552; u-boot@lists.denx.de; Wang Dongsheng-B40534
>> Subject: [PATCH] arm/layerscape: Fix non-boot cpus cannot correctly fall in spin
>> table
>>
>> From: Wang Dongsheng <dongsheng.wang@freescale.com>
>>
>> Bootrom will put cpus into WFE state when boot cpu release cpus, so
>> target cpu cannot correctly go to spin state.
>>
>> Add 'sev' to wakeup non-boot cpu that hold on bootrom space, let target
>> cpu can fall into u-boot spin table.
>>
>> Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>

Dongsheng,

Do we still use spin table if we have PSCI?

York
Dongsheng Wang July 16, 2015, 2:22 a.m. UTC | #3
> -----Original Message-----
> From: Sun York-R58495
> Sent: Thursday, July 16, 2015 2:06 AM
> To: Wang Dongsheng-B40534
> Cc: Jin Zhengxiong-R64188; Wang Huan-B18965; Zhao Chenhui-B35336; Zhang Zhuoyu-
> B46552; u-boot@lists.denx.de
> Subject: Re: [PATCH] arm/layerscape: Fix non-boot cpus cannot correctly fall in
> spin table
> 
> On 07/14/2015 12:09 AM, Wang Dongsheng-B40534 wrote:
> > Hi Alison & Jason,
> >
> > Could you ACK this patch?
> >
> > Regards,
> > -Dongsheng
> >
> >> -----Original Message-----
> >> From: Dongsheng Wang [mailto:dongsheng.wang@freescale.com]
> >> Sent: Thursday, June 18, 2015 6:33 PM
> >> To: Sun York-R58495
> >> Cc: Jin Zhengxiong-R64188; Wang Huan-B18965; Zhao Chenhui-B35336;
> >> Zhang Zhuoyu- B46552; u-boot@lists.denx.de; Wang Dongsheng-B40534
> >> Subject: [PATCH] arm/layerscape: Fix non-boot cpus cannot correctly
> >> fall in spin table
> >>
> >> From: Wang Dongsheng <dongsheng.wang@freescale.com>
> >>
> >> Bootrom will put cpus into WFE state when boot cpu release cpus, so
> >> target cpu cannot correctly go to spin state.
> >>
> >> Add 'sev' to wakeup non-boot cpu that hold on bootrom space, let
> >> target cpu can fall into u-boot spin table.
> >>
> >> Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> 
> Dongsheng,
> 
> Do we still use spin table if we have PSCI?
> 
For ARMv7 we would like to use PSCI, just compatible with spin table.

Regards,
-Dongsheng
York Sun Aug. 4, 2015, 3:48 p.m. UTC | #4
On 06/18/2015 03:32 AM, Dongsheng Wang wrote:
> From: Wang Dongsheng <dongsheng.wang@freescale.com>
> 
> Bootrom will put cpus into WFE state when boot cpu release cpus, so
> target cpu cannot correctly go to spin state.
> 
> Add 'sev' to wakeup non-boot cpu that hold on bootrom space, let target
> cpu can fall into u-boot spin table.
> 
> Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> 


Applied to u-boot-fsl-qoriq master after fixing subject. Thanks.

York
diff mbox

Patch

diff --git a/arch/arm/cpu/armv7/ls102xa/cpu.c b/arch/arm/cpu/armv7/ls102xa/cpu.c
index 75f0d8c..1f82893 100644
--- a/arch/arm/cpu/armv7/ls102xa/cpu.c
+++ b/arch/arm/cpu/armv7/ls102xa/cpu.c
@@ -344,5 +344,13 @@  void smp_kick_all_cpus(void)
 	struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
 
 	out_be32(&gur->brrl, 0x2);
+
+	/*
+	 * LS1 STANDBYWFE is not captured outside the ARM module in the soc.
+	 * So add a delay to wait bootrom execute WFE.
+	 */
+	udelay(1);
+
+	asm volatile("sev");
 }
 #endif