[PATCH v9 4/6] KGDB: make kgdb_breakpoint() as noinline

vijay.kilari at gmail.com vijay.kilari at gmail.com
Tue Jan 28 06:20:20 EST 2014

From: Vijaya Kumar K <Vijaya.Kumar at caviumnetworks.com>

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

Signed-off-by: Vijaya Kumar K <Vijaya.Kumar at caviumnetworks.com>
Acked-by: Will Deacon <will.deacon at arm.com>
Acked-by: Jason Wessel <jason.wessel at windriver.com>
 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)
 	wmb(); /* Sync point before breakpoint */

More information about the linux-arm-kernel mailing list