From patchwork Wed Jan 2 21:07:41 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Warren X-Patchwork-Id: 1925071 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork1.kernel.org (Postfix) with ESMTP id 03BFB3FC85 for ; Wed, 2 Jan 2013 21:11:13 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1TqVXW-000101-Gl; Wed, 02 Jan 2013 21:07:54 +0000 Received: from avon.wwwdotorg.org ([2001:470:1f0f:bd7::2]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1TqVXS-0000zI-3u; Wed, 02 Jan 2013 21:07:50 +0000 Received: from severn.wwwdotorg.org (unknown [192.168.65.5]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by avon.wwwdotorg.org (Postfix) with ESMTPS id 535B76320; Wed, 2 Jan 2013 14:08:42 -0700 (MST) Received: from swarren-lx1.nvidia.com (localhost [127.0.0.1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by severn.wwwdotorg.org (Postfix) with ESMTPSA id 17B53E461A; Wed, 2 Jan 2013 14:07:46 -0700 (MST) From: Stephen Warren To: Russell King Subject: [PATCH] ARM: call disable_nonboot_cpus() from machine_shutdown() Date: Wed, 2 Jan 2013 14:07:41 -0700 Message-Id: <1357160861-26282-1-git-send-email-swarren@wwwdotorg.org> X-Mailer: git-send-email 1.7.10.4 X-NVConfidentiality: public X-Virus-Scanned: clamav-milter 0.96.5 at avon.wwwdotorg.org X-Virus-Status: Clean X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130102_160750_257735_0D24EB01 X-CRM114-Status: GOOD ( 11.59 ) 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.0 SPF_PASS SPF: sender matches SPF record -0.7 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: kexec@lists.infradead.org, Will Deacon , Eric Biederman , linux-arm-kernel@lists.infradead.org, Stephen Warren X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org From: Stephen Warren On Tegra at least, this change allows kexec to work with SMP enabled. Without this, machine_shutdown() simply puts all CPUs into a loop. If the code of that loop is over-written, the CPUs may hang or crash (which I do observe in practice), or cause the kexec'd kernel not to be able to initialize them. This fix has the added benefit that the kexec always happens on the boot CPU, and thus kexec mirrors the initial kernel boot as much as possible. Signed-off-by: Stephen Warren Acked-by: Will Deacon --- Russell, I assume this should go into the ARM patch tracker if OK? arch/arm/kernel/process.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index f79dd1e..1893bda 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -239,6 +239,7 @@ __setup("reboot=", reboot_setup); void machine_shutdown(void) { + disable_nonboot_cpus(); #ifdef CONFIG_SMP smp_send_stop(); #endif