From patchwork Tue Apr 9 16:34:25 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Pitre X-Patchwork-Id: 2415901 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) by patchwork1.kernel.org (Postfix) with ESMTP id 86F1E3FD8C for ; Tue, 9 Apr 2013 16:35:57 +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 1UPbVG-0002wm-5r; Tue, 09 Apr 2013 16:35:37 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1UPbVA-0007Vw-In; Tue, 09 Apr 2013 16:34:32 +0000 Received: from mail-qe0-f51.google.com ([209.85.128.51]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1UPbV7-0007Vd-Os for linux-arm-kernel@lists.infradead.org; Tue, 09 Apr 2013 16:34:30 +0000 Received: by mail-qe0-f51.google.com with SMTP id 1so2044796qec.24 for ; Tue, 09 Apr 2013 09:34:28 -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=MTGnDZqbZyDUl9cG8xG6LLEXN0GNq/QM+2QiZ3mQGew=; b=Q/wDnafekR52UcbttqHojFebzAEwItBs0dVz0ZRtr38bH0Fa46AxPEYXA4zgCFyB9I FgHSM0YPi4NGYk5GwGyz5QOIcQEEYY6Q84fBOuiVoHzv0kvuDyW4KaUO9RsqiFL4XD+B LCDl9fi8LoKE6YQCiZVj4W/iOoXcSMVWds9nb5KwoS+LbxpYAZqtiBmKRqQn3+kB2Zkf zEtTn6K6O1hgUPNfCJ5YdOE3NRou/IHEjBeJpaHooXYlIZ5hqUQABq7NmSYhRohb5D4O spLi1saYFKhZEQXvELPtfNrVWnlCPIdx8nkoT7BLVckvcQpUiwLBcDDhW2v95Y8QEpp4 bdOw== X-Received: by 10.224.175.71 with SMTP id w7mr10851672qaz.59.1365525267484; Tue, 09 Apr 2013 09:34:27 -0700 (PDT) Received: from xanadu.home (modemcable139.65-203-24.mc.videotron.ca. [24.203.65.139]) by mx.google.com with ESMTPS id n14sm7778929qaq.3.2013.04.09.09.34.26 (version=TLSv1 cipher=RC4-SHA bits=128/128); Tue, 09 Apr 2013 09:34:26 -0700 (PDT) Date: Tue, 9 Apr 2013 12:34:25 -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: <1365487246.3292.3.camel@computer5.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> <1365487246.3292.3.camel@computer5.home> User-Agent: Alpine 2.03 (LFD 1266 2009-07-14) MIME-Version: 1.0 X-Gm-Message-State: ALoCoQnDKzqczgqX/CMoLUOLYm8eMHM7tmLxzLu2sr6eo6kqyGnccHqIIq0FlrUJ3qrphPxONx7w X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130409_123429_881624_4217DEC4 X-CRM114-Status: GOOD ( 23.54 ) X-Spam-Score: -2.6 (--) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-2.6 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [209.85.128.51 listed in list.dnswl.org] -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 Tue, 9 Apr 2013, Jon Medhurst (Tixy) wrote: > On Tue, 2013-04-09 at 01:41 -0400, Nicolas Pitre wrote: > > > 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? > > Looks fine. May I add your ACK? > Did you miss my other comment about smp_ops not looking like they were > getting set in the case of mcpm_smp_set_ops not getting called? You are right. See my change to #14/15 to fix that. The VExpress patch now becomes this (only change is the return value): Author: Jon Medhurst Date: Wed Jan 30 09:12:55 2013 +0000 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 Acked-by: Jon Medhurst diff --git a/arch/arm/mach-vexpress/core.h b/arch/arm/mach-vexpress/core.h index f134cd4a85..bde4374ab6 100644 --- a/arch/arm/mach-vexpress/core.h +++ b/arch/arm/mach-vexpress/core.h @@ -6,6 +6,8 @@ void vexpress_dt_smp_map_io(void); +bool vexpress_smp_init_ops(void); + extern struct smp_operations vexpress_smp_ops; extern void vexpress_cpu_die(unsigned int cpu); diff --git a/arch/arm/mach-vexpress/platsmp.c b/arch/arm/mach-vexpress/platsmp.c index dc1ace55d5..f31a7af712 100644 --- a/arch/arm/mach-vexpress/platsmp.c +++ b/arch/arm/mach-vexpress/platsmp.c @@ -12,9 +12,11 @@ #include #include #include +#include #include #include +#include #include #include @@ -203,3 +205,21 @@ struct smp_operations __initdata vexpress_smp_ops = { .cpu_die = vexpress_cpu_die, #endif }; + +bool __init vexpress_smp_init_ops(void) +{ +#ifdef CONFIG_MCPM + /* + * The best way to detect a multi-cluster configuration at the moment + * is to look for the presence of a CCI in the system. + * Override the default vexpress_smp_ops if so. + */ + struct device_node *node; + node = of_find_compatible_node(NULL, NULL, "arm,cci"); + if (node && of_device_is_available(node)) { + mcpm_smp_set_ops(); + return true; + } +#endif + return false; +} diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c index 915683cb67..16b42c10e0 100644 --- a/arch/arm/mach-vexpress/v2m.c +++ b/arch/arm/mach-vexpress/v2m.c @@ -476,6 +476,7 @@ static const char * const v2m_dt_match[] __initconst = { DT_MACHINE_START(VEXPRESS_DT, "ARM-Versatile Express") .dt_compat = v2m_dt_match, .smp = smp_ops(vexpress_smp_ops), + .smp_init = smp_init_ops(vexpress_smp_init_ops), .map_io = v2m_dt_map_io, .init_early = v2m_dt_init_early, .init_irq = irqchip_init,