From: Manivannan Sadhasivam Subject: Re: [PATCH 5/5] ARM: actions: remove boot_lock and pen_release Date: Thu, 13 Dec 2018 17:31:53 +0530 Message-ID: <20181213120153.GA18173@mani> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Russell King , Andreas =?iso-8859-1?Q?F=E4rber?= Cc: linux-arm-msm@vger.kernel.org, linus.walleij@linaro.org, linux-actions@lists.infradead.org, linux-arm-kernel@lists.infradead.org List-Id: linux-arm-msm@vger.kernel.org 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 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 >