From patchwork Wed Jan 22 14:42:51 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vijay Kilari X-Patchwork-Id: 3523701 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 32B7AC02DC for ; Wed, 22 Jan 2014 14:48:49 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 18CC02011D for ; Wed, 22 Jan 2014 14:48:48 +0000 (UTC) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B822220117 for ; Wed, 22 Jan 2014 14:48:46 +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 1W5z5X-00080n-IR; Wed, 22 Jan 2014 14:47:32 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1W5z5G-0000Pr-L7; Wed, 22 Jan 2014 14:47:14 +0000 Received: from mail-pb0-x22a.google.com ([2607:f8b0:400e:c01::22a]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1W5z4q-0000Kf-Iu for linux-arm-kernel@lists.infradead.org; Wed, 22 Jan 2014 14:46:51 +0000 Received: by mail-pb0-f42.google.com with SMTP id jt11so466698pbb.29 for ; Wed, 22 Jan 2014 06:46:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=lVzyQHIi6FGK0928hFH4R/p8fmde+V5cmGDwv1NZbX8=; b=Sea2zuw0li/BBEbuScGLSVFJOT5b+WW3Z5UQuwljNYr6uMowmzVCXIeK+dyOlsYVah jrFR5S7abWtxaRhHCKt1DkOG6IZgPAZ/uFy801EmhH3R4wDs0SVg4BR6c3MzCXZQczLN AAuusjZxrirfCfaOybExb/HjggUJGDMxyht2Y771t7Ph8srSNIYTsIAkSF6vYM/IF7P3 d3HX1MR6JSCqb+1ZXQcZposItsc0I6zin84RTw2p3MZfMWEdhYWAJiooiCmgNp2Wjd9T NCUZjKn1ETKRmzO+uFnMr9gR8uZVucKExbBxDiYxgdNvkfRCd6KIk6vJdjKOwJun6Mfp N07A== X-Received: by 10.66.240.4 with SMTP id vw4mr2129528pac.26.1390401987074; Wed, 22 Jan 2014 06:46:27 -0800 (PST) Received: from ubuntu.caveonetworks.com ([115.119.134.194]) by mx.google.com with ESMTPSA id db3sm23950684pbb.10.2014.01.22.06.46.23 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 22 Jan 2014 06:46:26 -0800 (PST) From: vijay.kilari@gmail.com To: will.deacon@arm.com, sandeepa.prabhu@linaro.org, jason.wessel@windriver.com, takahiro.akashi@linaro.org, Catalin.Marinas@arm.com Subject: [PATCH v7 4/6] KGDB: make kgdb_breakpoint() as noinline Date: Wed, 22 Jan 2014 20:12:51 +0530 Message-Id: <1390401773-12100-5-git-send-email-vijay.kilari@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1390401773-12100-1-git-send-email-vijay.kilari@gmail.com> References: <1390401773-12100-1-git-send-email-vijay.kilari@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20140122_094648_909495_88017B3B X-CRM114-Status: GOOD ( 11.04 ) X-Spam-Score: -2.0 (--) Cc: Prasun.Kapoor@caviumnetworks.com, Vijaya Kumar K , linaro-kernel@lists.linaro.org, linux@arm.linux.org.uk, 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: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Vijaya Kumar K The function kgdb_breakpoint() sets up break point at compile time by calling arch_kgdb_breakpoint(); Though this call is surrounded by wmb() barrier, the compile can still re-order the break point, because this scheduling barrier is not a code motion barrier in gcc. Making kgdb_breakpoint() as noinline solves this problem of code reording around break point instruction and also avoids problem of being called as inline function from other places More details about discussion on this can be found here http://comments.gmane.org/gmane.linux.ports.arm.kernel/269732 Signed-off-by: Vijaya Kumar K Acked-by: Will Deacon Acked-by: Jason Wessel --- kernel/debug/debug_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c index 7d2f35e..cf04798 100644 --- a/kernel/debug/debug_core.c +++ b/kernel/debug/debug_core.c @@ -1034,7 +1034,7 @@ int dbg_io_get_char(void) * otherwise as a quick means to stop program execution and "break" into * the debugger. */ -void kgdb_breakpoint(void) +noinline void kgdb_breakpoint(void) { atomic_inc(&kgdb_setting_breakpoint); wmb(); /* Sync point before breakpoint */