From patchwork Tue Apr 9 05:41:13 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Pitre X-Patchwork-Id: 2413031 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) by patchwork2.kernel.org (Postfix) with ESMTP id 0514ADF25A for ; Tue, 9 Apr 2013 05:41:27 +0000 (UTC) Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1UPRJ7-0005Lo-Dj; Tue, 09 Apr 2013 05:41:25 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1UPRJ5-000056-6k; Tue, 09 Apr 2013 05:41:23 +0000 Received: from mail-qc0-x229.google.com ([2607:f8b0:400d:c01::229]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1UPRJ1-0008WL-Ke for linux-arm-kernel@lists.infradead.org; Tue, 09 Apr 2013 05:41:20 +0000 Received: by mail-qc0-f169.google.com with SMTP id t2so1313862qcq.14 for ; Mon, 08 Apr 2013 22:41:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version:content-type:x-gm-message-state; bh=GkSckoOUBPIBaByehkkpxAgqT/35OvnCLaDjoPtsE+M=; b=K3do7McrDQZ+uw6e3Y8VLOBjAr5WRGVErx1x+qkxEL1QLIQ/6cXAU3GVzH3+KzFmOw Dr+KjqO2htsD5PE1BD8ZKiv0EL7/5GoqpAjI9iCGYcx80pBgxLDLpVQhDsLLuZjFuI9z CY9w4qCtAK63X+6V/FQYskSRavZFC7u72vsVo8D/3QuIJx6eAiD5ltnkyFA4zio+UCxZ X204C0fqaUv2Y+3ziEbsvbJC+skyAPwV6OzrXNShMiMIwhUHQsmPQbktISUrz32ZGQRG hhmzLK2QYEYdJA3DWGfo9iuvy5aT1t9a11U7wkzO2QICypYtUrJnaNY375Snzn5t6qvm Dciw== X-Received: by 10.224.115.210 with SMTP id j18mr4330592qaq.16.1365486076722; Mon, 08 Apr 2013 22:41:16 -0700 (PDT) Received: from xanadu.home (modemcable139.65-203-24.mc.videotron.ca. [24.203.65.139]) by mx.google.com with ESMTPS id ed8sm17738257qeb.7.2013.04.08.22.41.14 (version=TLSv1 cipher=RC4-SHA bits=128/128); Mon, 08 Apr 2013 22:41:15 -0700 (PDT) Date: Tue, 9 Apr 2013 01:41:13 -0400 (EDT) From: Nicolas Pitre To: "Jon Medhurst (Tixy)" Subject: Re: [PATCH v4 15/15] ARM: vexpress: Select multi-cluster SMP operation if required In-Reply-To: <1365412211.3384.16.camel@linaro1.home> Message-ID: References: <1360041732-17936-1-git-send-email-nicolas.pitre@linaro.org> <1360041732-17936-16-git-send-email-nicolas.pitre@linaro.org> <20130405224819.GB14308@quad.lixom.net> <1365412211.3384.16.camel@linaro1.home> User-Agent: Alpine 2.03 (LFD 1266 2009-07-14) MIME-Version: 1.0 X-Gm-Message-State: ALoCoQmGsDpL9o7JDsP9CHLkYujcb4vhqip5elCFkqOneZjOaVa/Tk7sqdR91EoLPuWQDZN9Goby X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130409_014119_757098_A0BEC866 X-CRM114-Status: GOOD ( 25.43 ) X-Spam-Score: -1.9 (-) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-1.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: Dave Martin , lorenzo.pieralisi@arm.com, pawel.moll@arm.com, Catalin Marinas , Will Deacon , santosh.shilimkar@ti.com, Olof Johansson , linux-arm-kernel@lists.infradead.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org On Mon, 8 Apr 2013, Jon Medhurst (Tixy) wrote: > On Sat, 2013-04-06 at 10:02 -0400, Nicolas Pitre wrote: > > I've amended this patch slightly so to: > > > > 1) Keep the default .smp = &vexpress_smp_ops and only perform an > > override in vexpress_smp_init_ops() when appropriate. This should > > remove one potential issue with Xen support that was highlighted > > recently. > > > > 2) Add a mcpm_smp_set_ops() instead of installing mcpm_smp_ops directly > > for better abstraction. > > > > 3) Added a comment about and checked for the CCI node being enabled. > > > > That results in the patch below. Given those are minor changes, I kept > > the existing review tags. > > > > From: Jon Medhurst > > Date: Wed, 30 Jan 2013 09:12:55 +0000 > > Subject: [PATCH] ARM: vexpress: Select multi-cluster SMP operation if required > > > > Signed-off-by: Jon Medhurst > > Signed-off-by: Nicolas Pitre > > Reviewed-by: Santosh Shilimkar > > Acked-by: Pawel Moll > > > > diff --git a/arch/arm/common/mcpm_platsmp.c b/arch/arm/common/mcpm_platsmp.c > > index 34f236af09..cc82040877 100644 > > --- a/arch/arm/common/mcpm_platsmp.c > > +++ b/arch/arm/common/mcpm_platsmp.c > > @@ -85,3 +85,8 @@ struct smp_operations __initdata mcpm_smp_ops = { > > .cpu_die = mcpm_cpu_die, > > #endif > > }; > > + > > +void __init mcpm_smp_set_ops(void) > > +{ > > + smp_set_ops(&mcpm_smp_ops); > > +} > > diff --git a/arch/arm/include/asm/mcpm_entry.h b/arch/arm/include/asm/mcpm_entry.h > > index 814623e6a1..34dfb86ff5 100644 > > --- a/arch/arm/include/asm/mcpm_entry.h > > +++ b/arch/arm/include/asm/mcpm_entry.h > > @@ -190,5 +190,7 @@ int __mcpm_cluster_state(unsigned int cluster); > > int __init mcpm_sync_init( > > void (*power_up_setup)(unsigned int affinity_level)); > > > > +void __init mcpm_smp_set_ops(void); > > + > > #endif /* ! __ASSEMBLY__ */ > > #endif > > > Do the changes to the above mcpm files want to be in a separate patch as > it's generic ARM code, not vexpress specific? Well, since it was so trivial I didn't do it, but the split might be a good idea nevertheless. So I inserted the following patch in the series, and corresponding changes are now removed from the patch above. What do you think? Author: Nicolas Pitre Date: Tue Apr 9 01:29:17 2013 -0400 ARM: mcpm: provide an interface to set the SMP ops at run time This is cleaner than exporting the mcpm_smp_ops structure. Signed-off-by: Nicolas Pitre diff --git a/arch/arm/common/mcpm_platsmp.c b/arch/arm/common/mcpm_platsmp.c index 34f236af09..79ed70d846 100644 --- a/arch/arm/common/mcpm_platsmp.c +++ b/arch/arm/common/mcpm_platsmp.c @@ -76,7 +76,7 @@ static void mcpm_cpu_die(unsigned int cpu) #endif -struct smp_operations __initdata mcpm_smp_ops = { +static struct smp_operations __initdata mcpm_smp_ops = { .smp_init_cpus = simple_smp_init_cpus, .smp_boot_secondary = mcpm_boot_secondary, .smp_secondary_init = mcpm_secondary_init, @@ -85,3 +85,8 @@ struct smp_operations __initdata mcpm_smp_ops = { .cpu_die = mcpm_cpu_die, #endif }; + +void __init mcpm_smp_set_ops(void) +{ + smp_set_ops(&mcpm_smp_ops); +} diff --git a/arch/arm/include/asm/mcpm_entry.h b/arch/arm/include/asm/mcpm_entry.h index 814623e6a1..34dfb86ff5 100644 --- a/arch/arm/include/asm/mcpm_entry.h +++ b/arch/arm/include/asm/mcpm_entry.h @@ -190,5 +190,7 @@ int __mcpm_cluster_state(unsigned int cluster); int __init mcpm_sync_init( void (*power_up_setup)(unsigned int affinity_level)); +void __init mcpm_smp_set_ops(void); + #endif /* ! __ASSEMBLY__ */ #endif