Re: [PATCH 5/5] ARM: actions: remove boot_lock and pen_release

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Dec 13, 2018 at 11:55:57AM +0000, Russell King wrote:
> The actions SMP implementation has several issues:
> 
> 1. pen_release is only ever read and compared to -1, and is defined in
>    arch/arm/kernel/smp.c to be -1.  This test will always succeed.
> 
> 2. we are already guaranteed to be single threaded while bringing up a
>    CPU, so the spinlock makes no sense, remove it.
> 
> 3. owl_secondary_startup() is not referenced nor defined, the prototype
>    is redundant, remove it.
> 
> Signed-off-by: Russell King <rmk+kernel@xxxxxxxxxxxxxxx>

Hi Russel,

Is this patch a superset of https://www.spinics.net/lists/arm-kernel/msg694546.html?

Andreas: Will you be able to test this patch or Linus's series on S500 based board?

Thanks,
Mani

> ---
>  arch/arm/mach-actions/platsmp.c | 15 ---------------
>  1 file changed, 15 deletions(-)
> 
> diff --git a/arch/arm/mach-actions/platsmp.c b/arch/arm/mach-actions/platsmp.c
> index 3efaa10efc43..4fd479c948e6 100644
> --- a/arch/arm/mach-actions/platsmp.c
> +++ b/arch/arm/mach-actions/platsmp.c
> @@ -39,10 +39,6 @@ static void __iomem *sps_base_addr;
>  static void __iomem *timer_base_addr;
>  static int ncores;
>  
> -static DEFINE_SPINLOCK(boot_lock);
> -
> -void owl_secondary_startup(void);
> -
>  static int s500_wakeup_secondary(unsigned int cpu)
>  {
>  	int ret;
> @@ -84,7 +80,6 @@ static int s500_wakeup_secondary(unsigned int cpu)
>  
>  static int s500_smp_boot_secondary(unsigned int cpu, struct task_struct *idle)
>  {
> -	unsigned long timeout;
>  	int ret;
>  
>  	ret = s500_wakeup_secondary(cpu);
> @@ -93,21 +88,11 @@ static int s500_smp_boot_secondary(unsigned int cpu, struct task_struct *idle)
>  
>  	udelay(10);
>  
> -	spin_lock(&boot_lock);
> -
>  	smp_send_reschedule(cpu);
>  
> -	timeout = jiffies + (1 * HZ);
> -	while (time_before(jiffies, timeout)) {
> -		if (pen_release == -1)
> -			break;
> -	}
> -
>  	writel(0, timer_base_addr + OWL_CPU1_ADDR + (cpu - 1) * 4);
>  	writel(0, timer_base_addr + OWL_CPU1_FLAG + (cpu - 1) * 4);
>  
> -	spin_unlock(&boot_lock);
> -
>  	return 0;
>  }
>  
> -- 
> 2.7.4
> 



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux