01 Nov, 2011

1 commit


01 Jun, 2011

1 commit

  • The new instruction_pointer_set helper is defined for people who have
    converted to asm-generic/ptrace.h, so don't use it generally unless
    the arch needs it (in which case it has been converted). This should
    fix building of kgdb tests for arches not yet converted.

    Signed-off-by: Mike Frysinger
    Acked-by: Stephen Rothwell
    Cc: Jason Wessel
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Frysinger
     

27 May, 2011

1 commit

  • The Blackfin arch, like the x86 arch, needs to adjust the PC manually
    after a breakpoint is hit as normally this is handled by the remote gdb.
    However, rather than starting another arch ifdef mess, create a common
    GDB_ADJUSTS_BREAK_OFFSET define for any arch to opt-in via their kgdb.h.

    Signed-off-by: Mike Frysinger
    Cc: Oleg Nesterov
    Cc: Jason Wessel
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: "H. Peter Anvin"
    Acked-by: Paul Mundt
    Acked-by: Dongdong Deng
    Cc: Sergei Shtylyov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Frysinger
     

31 Mar, 2011

1 commit


26 Mar, 2011

1 commit


30 Oct, 2010

1 commit

  • The "kgdb_connected" variable of debug_core just indicates whether or
    not kgdbts is connected to the debug_core. It does not completely
    prevent a script from trying invoke kgdbts again and possibly crashing
    the system (see Call Trace below).

    The configured variable in kgtbts can be used instead of
    kgdb_connected instead of kgdb_connected. The cleanup_kgdbts() can
    also be removed because there is no possible way to build kgdbts as a
    kernel module that you could unload with rmmod.

    Call Trace:
    -----------------------------------------------------------------
    root:/$ echo kgdbts=V1S1000 > /sys/module/kgdbts/parameters/kgdbts
    kgdb: Unregistered I/O driver kgdbts, debugger disabled.
    ------------[ cut here ]------------
    WARNING: at kernel/debug/debug_core.c:1002
    kgdb_unregister_io_module+0xec/0x100()
    Hardware name: Moon Creek platform
    Modules linked in:
    Pid: 664, comm: sh Not tainted 2.6.34.1-WR4.0.0.0_standard #58
    Call Trace:
    [] warn_slowpath_common+0x6d/0xa0
    [] ? kgdb_unregister_io_module+0xec/0x100
    [] ? kgdb_unregister_io_module+0xec/0x100
    [] ? param_attr_store+0x0/0x20
    [] warn_slowpath_null+0x15/0x20
    [] kgdb_unregister_io_module+0xec/0x100
    [] cleanup_kgdbts+0x1a/0x20
    [] param_set_kgdbts_var+0x6d/0xb0
    [] ? param_set_kgdbts_var+0x0/0xb0
    [] param_attr_store+0x17/0x20
    [] module_attr_store+0x2c/0x40
    [] sysfs_write_file+0x94/0xf0
    [] vfs_write+0x96/0x130
    [] ? sysfs_write_file+0x0/0xf0
    [] sys_write+0x46/0xd0
    [] system_call_done+0x0/0x4
    ---[ end trace 4eb028c6ee43154c ]---
    kgdb: Unregistered I/O driver kgdbts, debugger disabled.
    -----------------------------------------------------------------

    [jason.wessel@windriver.com: remove cleanup_kgdbts() ]
    Signed-off-by: Dongdong Deng
    Signed-off-by: Jason Wessel

    Dongdong Deng
     

03 Apr, 2010

1 commit


11 Dec, 2009

2 commits

  • Some versions of gcc replace calls to strstr() with single-character
    "needle" string parameters by calls to strchr() behind our back.
    This causes linking errors if strchr() is defined as an inline function
    in (e.g. on m68k, which BTW doesn't have kgdb support).

    Prevent this by explicitly calling strchr() instead.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Jason Wessel

    Geert Uytterhoeven
     
  • Prevent write to put_buf[BUFMAX] in kgdb test suite.

    If put_buf_cnt was BUFMAX - 1 at the earlier test,
    `\0' is written to put_buf[BUFMAX].

    Signed-off-by: Roel Kluin
    Signed-off-by: Jason Wessel

    Roel Kluin
     

29 May, 2008

2 commits


05 May, 2008

2 commits

  • The single step test is not terribly costly and it should be able to
    pass at 1000 loops successfully in under 1 second. A non-kgdb timing
    regression was found using this test, but it did not occur frequently
    because by default the test was only executed a single time.

    This patch changes the default for the single step test to 1000
    iterations and allows for individual configuration of the single step
    test to further exercise the kgdb subsystem when needed.

    Signed-off-by: Jason Wessel

    Jason Wessel
     
  • Shadowed variable and integer as NULL pointer fixes:
    drivers/misc/kgdbts.c:877:6: warning: symbol 'sys_open_test' shadows an earlier one
    drivers/misc/kgdbts.c:537:27: originally declared here
    drivers/misc/kgdbts.c:378:22: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:386:22: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:468:30: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:472:15: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:502:30: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:506:30: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:509:30: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:523:20: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:527:20: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:530:15: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:541:21: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:545:21: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:548:15: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:559:30: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:563:15: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:573:16: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:574:19: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:578:15: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:588:16: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:589:19: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:593:15: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:602:16: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:604:15: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:925:3: warning: Using plain integer as NULL pointer
    drivers/misc/kgdbts.c:938:3: warning: Using plain integer as NULL pointer

    Signed-off-by: Harvey Harrison
    Signed-off-by: Jason Wessel

    Harvey Harrison
     

29 Apr, 2008

1 commit


18 Apr, 2008

2 commits

  • This patch adds in the ability to compile the kgdb internal test
    string into the kernel so as to run the tests at boot without changing
    the kernel boot arguments. This patch also changes all the error
    paths to invoke WARN_ON(1) which will emit the line number of the file
    and dump the kernel stack when an error occurs.

    You can disable the tests in a kernel that is built this way
    using "kgdbts="

    Signed-off-by: Jason Wessel
    Signed-off-by: Ingo Molnar

    Jason Wessel
     
  • This patch adds regression tests for testing the kgdb core and arch
    specific implementation.

    The kgdb test suite is designed to be built into the kernel and not as
    a module because it uses a number of low level kernel and kgdb
    primitives which should not be exported externally.

    The kgdb test suite is designed as a KGDB I/O module which
    simulates the communications that a debugger would have with kgdb.
    The tests are broken up in to a line by line and referenced here as
    a "get" which is kgdb requesting input and "put" which is kgdb
    sending a response.

    The kgdb suite can be invoked from the kernel command line
    arguments system or executed dynamically at run time. The test
    suite uses the variable "kgdbts" to obtain the information about
    which tests to run and to configure the verbosity level. The
    following are the various characters you can use with the kgdbts=
    line:

    When using the "kgdbts=" you only choose one of the following core
    test types:
    A = Run all the core tests silently
    V1 = Run all the core tests with minimal output
    V2 = Run all the core tests in debug mode

    You can also specify optional tests:
    N## = Go to sleep with interrupts of for ## seconds
    to test the HW NMI watchdog
    F## = Break at do_fork for ## iterations
    S## = Break at sys_open for ## iterations

    NOTE: that the do_fork and sys_open tests are mutually exclusive.

    To invoke the kgdb test suite from boot you use a kernel start
    argument as follows:
    kgdbts=V1 kgdbwait
    Or if you wanted to perform the NMI test for 6 seconds and do_fork
    test for 100 forks, you could use:
    kgdbts=V1N6F100 kgdbwait

    The test suite can also be invoked at run time with:
    echo kgdbts=V1N6F100 > /sys/module/kgdbts/parameters/kgdbts
    Or as another example:
    echo kgdbts=V2 > /sys/module/kgdbts/parameters/kgdbts

    When developing a new kgdb arch specific implementation or
    using these tests for the purpose of regression testing,
    several invocations are required.

    1) Boot with the test suite enabled by using the kernel arguments
    "kgdbts=V1F100 kgdbwait"
    ## If kgdb arch specific implementation has NMI use
    "kgdbts=V1N6F100

    2) After the system boot run the basic test.
    echo kgdbts=V1 > /sys/module/kgdbts/parameters/kgdbts

    3) Run the concurrency tests. It is best to use n+1
    while loops where n is the number of cpus you have
    in your system. The example below uses only two
    loops.

    ## This tests break points on sys_open
    while [ 1 ] ; do find / > /dev/null 2>&1 ; done &
    while [ 1 ] ; do find / > /dev/null 2>&1 ; done &
    echo kgdbts=V1S10000 > /sys/module/kgdbts/parameters/kgdbts
    fg # and hit control-c
    fg # and hit control-c
    ## This tests break points on do_fork
    while [ 1 ] ; do date > /dev/null ; done &
    while [ 1 ] ; do date > /dev/null ; done &
    echo kgdbts=V1F1000 > /sys/module/kgdbts/parameters/kgdbts
    fg # and hit control-c

    Signed-off-by: Jason Wessel
    Signed-off-by: Ingo Molnar

    Jason Wessel