[PATCH 17/31] Add debugger entry points for ARM

Subsystems: arm port, the rest

STALE3909d

2 messages, 2 authors, 2016-01-28 · open the first message on its own page

[PATCH 17/31] Add debugger entry points for ARM

From: Jeffrey Merkey <hidden>
Date: 2016-01-28 19:51:19

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 <redacted>
---
 arch/arm/include/asm/kdebug.h | 5 +++++
 1 file changed, 5 insertions(+)
 create mode 100644 arch/arm/include/asm/kdebug.h
diff --git a/arch/arm/include/asm/kdebug.h b/arch/arm/include/asm/kdebug.h
new file mode 100644
index 0000000..c60dad1
--- /dev/null
+++ b/arch/arm/include/asm/kdebug.h
@@ -0,0 +1,5 @@
+
+static inline void arch_breakpoint(void)
+{
+	asm(__inst_arm(0xe7ffdeff));
+}
-- 
1.8.3.1

Re: [PATCH 17/31] Add debugger entry points for ARM

From: kbuild test robot <hidden>
Date: 2016-01-28 21:24:21

Hi Jeffrey,

[auto build test ERROR on v4.5-rc1]
[also build test ERROR on next-20160128]
[cannot apply to tip/x86/core]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/Jeffrey-Merkey/Add-hard-soft-lockup-debugger-entry-points/20160129-035852
config: arm-sa1100 (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm 

All errors (new ones prefixed by >>):

   In file included from arch/arm/kernel/traps.c:21:0:
   include/linux/kdebug.h:20:16: warning: 'enum die_val' declared inside parameter list
            struct pt_regs *regs, long err, int trap, int sig);
                   ^
   include/linux/kdebug.h:20:16: warning: its scope is only this definition or declaration, which is probably not what you want
   arch/arm/kernel/traps.c: In function '__die':
quoted
arch/arm/kernel/traps.c:247:19: error: 'DIE_OOPS' undeclared (first use in this function)
     ret = notify_die(DIE_OOPS, str, regs, err, tsk->thread.trap_no, SIGSEGV);
                      ^
   arch/arm/kernel/traps.c:247:19: note: each undeclared identifier is reported only once for each function it appears in
quoted
arch/arm/kernel/traps.c:247:2: error: type of formal parameter 1 is incomplete
     ret = notify_die(DIE_OOPS, str, regs, err, tsk->thread.trap_no, SIGSEGV);
     ^
--
   In file included from include/linux/kdebug.h:4:0,
                    from kernel/notifier.c:1:
   arch/arm/include/asm/kdebug.h: In function 'arch_breakpoint':
quoted
arch/arm/include/asm/kdebug.h:4:6: error: expected string literal before '__inst_arm'
     asm(__inst_arm(0xe7ffdeff));
         ^
   In file included from kernel/notifier.c:1:0:
   include/linux/kdebug.h: At top level:
   include/linux/kdebug.h:20:16: warning: 'enum die_val' declared inside parameter list
            struct pt_regs *regs, long err, int trap, int sig);
                   ^
   include/linux/kdebug.h:20:16: warning: its scope is only this definition or declaration, which is probably not what you want
   kernel/notifier.c:537:16: warning: 'enum die_val' declared inside parameter list
            struct pt_regs *regs, long err, int trap, int sig)
                   ^
   kernel/notifier.c:536:37: error: parameter 1 ('val') has incomplete type
    int notrace notify_die(enum die_val val, const char *str,
                                        ^
   kernel/notifier.c: In function 'notify_die':
   kernel/notifier.c:550:1: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^

vim +/__inst_arm +4 arch/arm/include/asm/kdebug.h

     1	
     2	static inline void arch_breakpoint(void)
     3	{
   > 4		asm(__inst_arm(0xe7ffdeff));
     5	}

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/octet-stream
Size: 22240 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160129/b1c44719/attachment-0001.obj>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help