[PATCH v6 3/3] KGDB: make kgdb_breakpoint() as noinline
Jason Wessel
jason.wessel at windriver.com
Wed Jan 15 11:44:27 EST 2014
On 12/19/2013 05:50 AM, vijay.kilari at gmail.com wrote:
> 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
> http://comments.gmane.org/gmane.linux.ports.arm.kernel/269732
>
> 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>
Cheers,
Jason.
> ---
> 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 */
More information about the linux-arm-kernel
mailing list