Skip to contentSkip to conversation

Add debugger entry points for X86

PATCH In review Jeffrey Merkey 2 participants 4 messages Jan 28, 2016 x86

lore
Share & tools
lore
#0 lore raw

PATCH 2/31 Add debugger entry points for X86

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.

---
 arch/x86/include/asm/kdebug.h | 5 +++++
 1 file changed, 5 insertions(+)
arch/x86/include/asm/kdebug.h +5 -0
index e5f5dc9..cbe9004 100644
@@ -3,6 +3,11 @@
 
 #include <linux/notifier.h>
 
+static inline void arch_breakpoint(void)
+{
+	asm("   int $3");
+}
+
 struct pt_regs;
 
 /* Grossly misnamed. */
Signature · 1 line
1.8.3.1
#1 lore raw
Quoted 19 lines · Jeffrey Merkey

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.

---
 arch/x86/include/asm/kdebug.h | 5 +++++
 1 file changed, 5 insertions(+)
arch/x86/include/asm/kdebug.h +0 -0
index e5f5dc9..cbe9004 100644

arch/x86/include/asm/kdebug.h line 12

Quoted 10 lines
arch/x86/include/asm/kdebug.h +5 -0
@@ -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

#2 lore raw
Quoted 36 lines · H. Peter Anvin
Quoted 20 lines · Jeffrey Merkey

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.

---
 arch/x86/include/asm/kdebug.h | 5 +++++
 1 file changed, 5 insertions(+)
arch/x86/include/asm/kdebug.h +0 -0
index e5f5dc9..cbe9004 100644

arch/x86/include/asm/kdebug.h line 12

Quoted 10 lines
arch/x86/include/asm/kdebug.h +5 -0
@@ -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.

Quoted 6 lines

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

-hpa

Yes sir, I'll add that to the to do list and resubmit after I get all the comments back for all the changes. It may be important to note that the arch_kgdb_breakpoint also uses this same syntax and needs also to be fixed.

Jeff

#3 lore raw
Quoted 6 lines · Jeffrey Merkey

Yes sir, I'll add that to the to do list and resubmit after I get all the comments back for all the changes. It may be important to note that the arch_kgdb_breakpoint also uses this same syntax and needs also to be fixed.

That would be a great addition to the patchset, then.

-hpa