diff mbox

[30/31] Add debugger entry points for SPARC

Message ID 1454010468-29651-1-git-send-email-jeffmerkey@gmail.com
State Not Applicable
Delegated to: David Miller
Headers show

Commit Message

Jeffrey Merkey Jan. 28, 2016, 7:47 p.m. UTC
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@gmail.com>
---
 arch/sparc/include/asm/kdebug.h | 5 +++++
 1 file changed, 5 insertions(+)

Comments

kernel test robot Jan. 28, 2016, 9:32 p.m. UTC | #1
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: sparc64-defconfig (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=sparc64 

All errors (new ones prefixed by >>):

   kernel/built-in.o: In function `watchdog_timer_fn':
>> watchdog.c:(.text+0x736ec): undefined reference to `$0x7d'
   watchdog.c:(.text+0x736ec): relocation truncated to fit: R_SPARC_13 against undefined symbol `$0x7d'

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
Sam Ravnborg Jan. 28, 2016, 9:33 p.m. UTC | #2
Hi Jeff.

> +++ b/arch/sparc/include/asm/kdebug.h
> @@ -5,4 +5,9 @@
>  #else
>  #include <asm/kdebug_32.h>
>  #endif
> +
> +static inline void arch_breakpoint(void)
> +{
> +	asm("ta	$0x7d");
> +}
>  #endif
There seems to be some debugger infrastructure present already for kgdb,
but I assume this cannot be used.
Anyway - trap 0x7d is a debugger trap in sparc32.
If CONFIG_KGDB is not defined then 0x7d is just a regular BAD_TRAP.

For sparc64 trap 0x7d is something different.
I did not conclude what was the right choice for neither.

	Sam
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jeffrey Merkey Jan. 28, 2016, 9:35 p.m. UTC | #3
On 1/28/16, Sam Ravnborg <sam@ravnborg.org> wrote:
> Hi Jeff.
>
>> +++ b/arch/sparc/include/asm/kdebug.h
>> @@ -5,4 +5,9 @@
>>  #else
>>  #include <asm/kdebug_32.h>
>>  #endif
>> +
>> +static inline void arch_breakpoint(void)
>> +{
>> +	asm("ta	$0x7d");
>> +}
>>  #endif
> There seems to be some debugger infrastructure present already for kgdb,
> but I assume this cannot be used.
> Anyway - trap 0x7d is a debugger trap in sparc32.
> If CONFIG_KGDB is not defined then 0x7d is just a regular BAD_TRAP.
>
> For sparc64 trap 0x7d is something different.
> I did not conclude what was the right choice for neither.
>
> 	Sam
>

I'll go research that one.  If I am unsure I'll no-op the function for
sparc and let you guys decide how architecturally you wish to handle
that.

:-)

Jeff
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
kernel test robot Jan. 28, 2016, 9:44 p.m. UTC | #4
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: sparc-defconfig (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=sparc 

All errors (new ones prefixed by >>):

   arch/sparc/include/asm/kdebug.h: Assembler messages:
>> arch/sparc/include/asm/kdebug.h:9: Error: Unknown opcode: `static'
>> arch/sparc/include/asm/kdebug.h:10: Error: junk at end of line, first unrecognized character is `{'
>> arch/sparc/include/asm/kdebug.h:11: Error: Unknown opcode: `asm("ta	$0x7d")'
   arch/sparc/include/asm/kdebug.h:12: Error: junk at end of line, first unrecognized character is `}'

vim +9 arch/sparc/include/asm/kdebug.h

     3	#if defined(__sparc__) && defined(__arch64__)
     4	#include <asm/kdebug_64.h>
     5	#else
     6	#include <asm/kdebug_32.h>
     7	#endif
     8	
   > 9	static inline void arch_breakpoint(void)
  > 10	{
  > 11		asm("ta	$0x7d");
    12	}
    13	#endif

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox

Patch

diff --git a/arch/sparc/include/asm/kdebug.h b/arch/sparc/include/asm/kdebug.h
index 8d12581..a4b78d3 100644
--- a/arch/sparc/include/asm/kdebug.h
+++ b/arch/sparc/include/asm/kdebug.h
@@ -5,4 +5,9 @@ 
 #else
 #include <asm/kdebug_32.h>
 #endif
+
+static inline void arch_breakpoint(void)
+{
+	asm("ta	$0x7d");
+}
 #endif