From patchwork Sat Nov 30 06:32:28 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vijay Kilari X-Patchwork-Id: 3260031 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 DC33ABEEAD for ; Sat, 30 Nov 2013 06:36:42 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 015F0205C6 for ; Sat, 30 Nov 2013 06:36:42 +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 A3630205C2 for ; Sat, 30 Nov 2013 06:36:40 +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 1Vme95-0007Wu-G5; Sat, 30 Nov 2013 06:35:16 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1Vme8l-0006Vj-Lm; Sat, 30 Nov 2013 06:34:55 +0000 Received: from mail-pb0-x22e.google.com ([2607:f8b0:400e:c01::22e]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1Vme8I-0006R0-UR for linux-arm-kernel@lists.infradead.org; Sat, 30 Nov 2013 06:34:28 +0000 Received: by mail-pb0-f46.google.com with SMTP id md12so15631190pbc.19 for ; Fri, 29 Nov 2013 22:34:05 -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=RUOMls0nvg9LX1OWAS1aLeDOftAx29ux8ybuJswkftk=; b=cJWK/ihBTbllj8zFAOFp+RKiqg1WsiToqXGnAgWYfoenV/GiEfB7vGY94c60WbsCH9 nSdWWedXdNN7J136/WQpYp7YwLiPfmiA4qe5q78+iHC/vDpAP3uTi8rdae5tynFVKyks mkJL/Ai7V4YG3HqDLmYI14HkcxdXJdJQM8g6WCTS1yp+z2PWlUvB2q6iNWqQEJeUUgAV tDljcdXkcE2f2hVWNgZG6XzL0r7A1kfudF+uE7fa9FrLemzOXKTcLM3G04HoM4OwZGXd iyVXjNIjU7vHdAZANXMsBMrV/xr4QKa8ULnRimNssMg/J44yA1CkW553AueuIakSI7hv f2Pw== X-Received: by 10.67.3.34 with SMTP id bt2mr56723592pad.3.1385793245385; Fri, 29 Nov 2013 22:34:05 -0800 (PST) Received: from ubuntu.caveonetworks.com ([115.119.134.194]) by mx.google.com with ESMTPSA id km1sm14800759pbd.13.2013.11.29.22.34.01 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 29 Nov 2013 22:34:04 -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 v5 4/4] KGDB: make kgdb_breakpoint() as noinline Date: Sat, 30 Nov 2013 12:02:28 +0530 Message-Id: <1385793148-28979-5-git-send-email-vijay.kilari@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1385793148-28979-1-git-send-email-vijay.kilari@gmail.com> References: <1385793148-28979-1-git-send-email-vijay.kilari@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20131130_013427_180211_9E132586 X-CRM114-Status: GOOD ( 11.27 ) 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.1 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=ham 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 --- 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 */