From patchwork Wed Feb 19 04:35:39 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vijay Kilari X-Patchwork-Id: 3677831 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id E2B249F35F for ; Wed, 19 Feb 2014 04:41:05 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 084D72017B for ; Wed, 19 Feb 2014 04:41:05 +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 34D5B20163 for ; Wed, 19 Feb 2014 04:41:03 +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 1WFyx0-0008C8-SS; Wed, 19 Feb 2014 04:40:03 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1WFywn-0002go-GB; Wed, 19 Feb 2014 04:39:49 +0000 Received: from mail-pd0-x22e.google.com ([2607:f8b0:400e:c02::22e]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1WFywV-0002dR-RR for linux-arm-kernel@lists.infradead.org; Wed, 19 Feb 2014 04:39:34 +0000 Received: by mail-pd0-f174.google.com with SMTP id z10so17093586pdj.19 for ; Tue, 18 Feb 2014 20:39:10 -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=K3NZfCL5nUIzqhLyb6FPvrezrY86m9jYG46vibsOTLg=; b=iq4DtAaQH1Fted00bphv0hed6cihg+tetDjBrF3aF0fE+bKeOJwnYkCK/Fn3wOOb/d 9GmiC1soIYLys5CRe0Qtkwc+GBed83lr4m+K3qPeT7AzpqHxA32XdqIdEC2wvUdBg0dR GSfO2iG5BXt5LoL6C1sBUO7lJZrVdPhlo5AAfZb9wEJNAHct4DwOdmTIO8ugF60ivynl oARJ/6eVkg+iK9hRyM6pAo3pe5/ZANupwwrSPDSkbQGw/ZURDTVRSh9Glv3t9cw5sKdw NzxLQUHaVUeCcrOpHTCk345YPS/TUkY83L8rBgaa4PkEfqEZtC2TO41anGdJyVj0YBdk 3LWg== X-Received: by 10.66.119.172 with SMTP id kv12mr37497890pab.34.1392784750396; Tue, 18 Feb 2014 20:39:10 -0800 (PST) Received: from ubuntu.caveonetworks.com ([115.119.134.194]) by mx.google.com with ESMTPSA id bz4sm61475618pbb.12.2014.02.18.20.39.06 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 18 Feb 2014 20:39:09 -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 v10 4/6] KGDB: make kgdb_breakpoint() as noinline Date: Wed, 19 Feb 2014 10:05:39 +0530 Message-Id: <1392784541-18034-5-git-send-email-vijay.kilari@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1392784541-18034-1-git-send-email-vijay.kilari@gmail.com> References: <1392784541-18034-1-git-send-email-vijay.kilari@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20140218_233932_034513_2F626D5B X-CRM114-Status: GOOD ( 10.94 ) 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.6 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 61d1d14..16ff807 100644 --- a/kernel/debug/debug_core.c +++ b/kernel/debug/debug_core.c @@ -1047,7 +1047,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 */