Re: [PATCH 02/31] Add debugger entry points for X86

From: H. Peter Anvin
Date: Thu Jan 28 2016 - 15:20:50 EST


On 01/28/16 11:46, Jeffrey Merkey wrote:
> This patch series adds an export which can be set by system debuggers to
> direct the hard lockup and soft lockup detector to trigger a breakpoint
> exception and enter a debugger if one is active. It is assumed that if
> someone sets this variable, then an breakpoint handler of some sort will
> be actively loaded or registered via the notify die handler chain.
>
> This addition is extremely useful for debugging hard and soft lockups
> real time and quickly from a console debugger.
>
> Signed-off-by: Jeffrey Merkey <jeffmerkey@xxxxxxxxx>
> ---
> arch/x86/include/asm/kdebug.h | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/arch/x86/include/asm/kdebug.h b/arch/x86/include/asm/kdebug.h
> index e5f5dc9..cbe9004 100644
> --- a/arch/x86/include/asm/kdebug.h
> +++ b/arch/x86/include/asm/kdebug.h
> @@ -3,6 +3,11 @@
>
> #include <linux/notifier.h>
>
> +static inline void arch_breakpoint(void)
> +{
> + asm(" int $3");
> +}
> +
> struct pt_regs;
>

Even though apparently gas changed "int $3" to "int3" the latter is
actually a different instruction (with subtly different behavior) and
this may very well be corrected in gas at a future date.

So please encode this as "int3". It should also be "asm volatile" since
it has side effects unbeknownst to the compiler.

-hpa