2 * Kernel Debugger Architecture Independent Main Code
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
8 * Copyright (C) 1999-2004 Silicon Graphics, Inc. All Rights Reserved.
9 * Copyright (C) 2000 Stephane Eranian <eranian@hpl.hp.com>
10 * Xscale (R) modifications copyright (C) 2003 Intel Corporation.
11 * Copyright (c) 2009 Wind River Systems, Inc. All Rights Reserved.
14 #include <linux/ctype.h>
15 #include <linux/types.h>
16 #include <linux/string.h>
17 #include <linux/kernel.h>
18 #include <linux/kmsg_dump.h>
19 #include <linux/reboot.h>
20 #include <linux/sched.h>
21 #include <linux/sched/loadavg.h>
22 #include <linux/sched/stat.h>
23 #include <linux/sched/debug.h>
24 #include <linux/sysrq.h>
25 #include <linux/smp.h>
26 #include <linux/utsname.h>
27 #include <linux/vmalloc.h>
28 #include <linux/atomic.h>
29 #include <linux/module.h>
30 #include <linux/moduleparam.h>
32 #include <linux/init.h>
33 #include <linux/kallsyms.h>
34 #include <linux/kgdb.h>
35 #include <linux/kdb.h>
36 #include <linux/notifier.h>
37 #include <linux/interrupt.h>
38 #include <linux/delay.h>
39 #include <linux/nmi.h>
40 #include <linux/time.h>
41 #include <linux/ptrace.h>
42 #include <linux/sysctl.h>
43 #include <linux/cpu.h>
44 #include <linux/kdebug.h>
45 #include <linux/proc_fs.h>
46 #include <linux/uaccess.h>
47 #include <linux/slab.h>
48 #include "kdb_private.h"
50 #undef MODULE_PARAM_PREFIX
51 #define MODULE_PARAM_PREFIX "kdb."
53 static int kdb_cmd_enabled
= CONFIG_KDB_DEFAULT_ENABLE
;
54 module_param_named(cmd_enable
, kdb_cmd_enabled
, int, 0600);
56 char kdb_grep_string
[KDB_GREP_STRLEN
];
57 int kdb_grepping_flag
;
58 EXPORT_SYMBOL(kdb_grepping_flag
);
60 int kdb_grep_trailing
;
63 * Kernel debugger state flags
65 unsigned int kdb_flags
;
68 * kdb_lock protects updates to kdb_initial_cpu. Used to
69 * single thread processors through the kernel debugger.
71 int kdb_initial_cpu
= -1; /* cpu number that owns kdb */
73 int kdb_state
; /* General KDB state */
75 struct task_struct
*kdb_current_task
;
76 struct pt_regs
*kdb_current_regs
;
78 const char *kdb_diemsg
;
79 static int kdb_go_count
;
80 #ifdef CONFIG_KDB_CONTINUE_CATASTROPHIC
81 static unsigned int kdb_continue_catastrophic
=
82 CONFIG_KDB_CONTINUE_CATASTROPHIC
;
84 static unsigned int kdb_continue_catastrophic
;
87 /* kdb_commands describes the available commands. */
88 static kdbtab_t
*kdb_commands
;
89 #define KDB_BASE_CMD_MAX 50
90 static int kdb_max_commands
= KDB_BASE_CMD_MAX
;
91 static kdbtab_t kdb_base_commands
[KDB_BASE_CMD_MAX
];
92 #define for_each_kdbcmd(cmd, num) \
93 for ((cmd) = kdb_base_commands, (num) = 0; \
94 num < kdb_max_commands; \
95 num++, num == KDB_BASE_CMD_MAX ? cmd = kdb_commands : cmd++)
97 typedef struct _kdbmsg
{
98 int km_diag
; /* kdb diagnostic */
99 char *km_msg
; /* Corresponding message text */
102 #define KDBMSG(msgnum, text) \
103 { KDB_##msgnum, text }
105 static kdbmsg_t kdbmsgs
[] = {
106 KDBMSG(NOTFOUND
, "Command Not Found"),
107 KDBMSG(ARGCOUNT
, "Improper argument count, see usage."),
108 KDBMSG(BADWIDTH
, "Illegal value for BYTESPERWORD use 1, 2, 4 or 8, "
109 "8 is only allowed on 64 bit systems"),
110 KDBMSG(BADRADIX
, "Illegal value for RADIX use 8, 10 or 16"),
111 KDBMSG(NOTENV
, "Cannot find environment variable"),
112 KDBMSG(NOENVVALUE
, "Environment variable should have value"),
113 KDBMSG(NOTIMP
, "Command not implemented"),
114 KDBMSG(ENVFULL
, "Environment full"),
115 KDBMSG(ENVBUFFULL
, "Environment buffer full"),
116 KDBMSG(TOOMANYBPT
, "Too many breakpoints defined"),
117 #ifdef CONFIG_CPU_XSCALE
118 KDBMSG(TOOMANYDBREGS
, "More breakpoints than ibcr registers defined"),
120 KDBMSG(TOOMANYDBREGS
, "More breakpoints than db registers defined"),
122 KDBMSG(DUPBPT
, "Duplicate breakpoint address"),
123 KDBMSG(BPTNOTFOUND
, "Breakpoint not found"),
124 KDBMSG(BADMODE
, "Invalid IDMODE"),
125 KDBMSG(BADINT
, "Illegal numeric value"),
126 KDBMSG(INVADDRFMT
, "Invalid symbolic address format"),
127 KDBMSG(BADREG
, "Invalid register name"),
128 KDBMSG(BADCPUNUM
, "Invalid cpu number"),
129 KDBMSG(BADLENGTH
, "Invalid length field"),
130 KDBMSG(NOBP
, "No Breakpoint exists"),
131 KDBMSG(BADADDR
, "Invalid address"),
132 KDBMSG(NOPERM
, "Permission denied"),
136 static const int __nkdb_err
= ARRAY_SIZE(kdbmsgs
);
140 * Initial environment. This is all kept static and local to
141 * this file. We don't want to rely on the memory allocation
142 * mechanisms in the kernel, so we use a very limited allocate-only
143 * heap for new and altered environment variables. The entire
144 * environment is limited to a fixed number of entries (add more
145 * to __env[] if required) and a fixed amount of heap (add more to
146 * KDB_ENVBUFSIZE if required).
149 static char *__env
[] = {
150 #if defined(CONFIG_SMP)
157 "MDCOUNT=8", /* lines of md output */
187 static const int __nenv
= ARRAY_SIZE(__env
);
189 struct task_struct
*kdb_curr_task(int cpu
)
191 struct task_struct
*p
= curr_task(cpu
);
193 if ((task_thread_info(p
)->flags
& _TIF_MCA_INIT
) && KDB_TSK(cpu
))
200 * Check whether the flags of the current command and the permissions
201 * of the kdb console has allow a command to be run.
203 static inline bool kdb_check_flags(kdb_cmdflags_t flags
, int permissions
,
206 /* permissions comes from userspace so needs massaging slightly */
207 permissions
&= KDB_ENABLE_MASK
;
208 permissions
|= KDB_ENABLE_ALWAYS_SAFE
;
210 /* some commands change group when launched with no arguments */
212 permissions
|= permissions
<< KDB_ENABLE_NO_ARGS_SHIFT
;
214 flags
|= KDB_ENABLE_ALL
;
216 return permissions
& flags
;
220 * kdbgetenv - This function will return the character string value of
221 * an environment variable.
223 * match A character string representing an environment variable.
225 * NULL No environment variable matches 'match'
226 * char* Pointer to string value of environment variable.
228 char *kdbgetenv(const char *match
)
231 int matchlen
= strlen(match
);
234 for (i
= 0; i
< __nenv
; i
++) {
240 if ((strncmp(match
, e
, matchlen
) == 0)
241 && ((e
[matchlen
] == '\0')
242 || (e
[matchlen
] == '='))) {
243 char *cp
= strchr(e
, '=');
244 return cp
? ++cp
: "";
251 * kdballocenv - This function is used to allocate bytes for
252 * environment entries.
254 * match A character string representing a numeric value
256 * *value the unsigned long representation of the env variable 'match'
258 * Zero on success, a kdb diagnostic on failure.
260 * We use a static environment buffer (envbuffer) to hold the values
261 * of dynamically generated environment variables (see kdb_set). Buffer
262 * space once allocated is never free'd, so over time, the amount of space
263 * (currently 512 bytes) will be exhausted if env variables are changed
266 static char *kdballocenv(size_t bytes
)
268 #define KDB_ENVBUFSIZE 512
269 static char envbuffer
[KDB_ENVBUFSIZE
];
270 static int envbufsize
;
273 if ((KDB_ENVBUFSIZE
- envbufsize
) >= bytes
) {
274 ep
= &envbuffer
[envbufsize
];
281 * kdbgetulenv - This function will return the value of an unsigned
282 * long-valued environment variable.
284 * match A character string representing a numeric value
286 * *value the unsigned long represntation of the env variable 'match'
288 * Zero on success, a kdb diagnostic on failure.
290 static int kdbgetulenv(const char *match
, unsigned long *value
)
294 ep
= kdbgetenv(match
);
298 return KDB_NOENVVALUE
;
300 *value
= simple_strtoul(ep
, NULL
, 0);
306 * kdbgetintenv - This function will return the value of an
307 * integer-valued environment variable.
309 * match A character string representing an integer-valued env variable
311 * *value the integer representation of the environment variable 'match'
313 * Zero on success, a kdb diagnostic on failure.
315 int kdbgetintenv(const char *match
, int *value
)
320 diag
= kdbgetulenv(match
, &val
);
327 * kdbgetularg - This function will convert a numeric string into an
328 * unsigned long value.
330 * arg A character string representing a numeric value
332 * *value the unsigned long represntation of arg.
334 * Zero on success, a kdb diagnostic on failure.
336 int kdbgetularg(const char *arg
, unsigned long *value
)
341 val
= simple_strtoul(arg
, &endp
, 0);
345 * Also try base 16, for us folks too lazy to type the
348 val
= simple_strtoul(arg
, &endp
, 16);
358 int kdbgetu64arg(const char *arg
, u64
*value
)
363 val
= simple_strtoull(arg
, &endp
, 0);
367 val
= simple_strtoull(arg
, &endp
, 16);
378 * kdb_set - This function implements the 'set' command. Alter an
379 * existing environment variable or create a new one.
381 int kdb_set(int argc
, const char **argv
)
385 size_t varlen
, vallen
;
388 * we can be invoked two ways:
389 * set var=value argv[1]="var", argv[2]="value"
390 * set var = value argv[1]="var", argv[2]="=", argv[3]="value"
391 * - if the latter, shift 'em down.
402 * Censor sensitive variables
404 if (strcmp(argv
[1], "PROMPT") == 0 &&
405 !kdb_check_flags(KDB_ENABLE_MEM_READ
, kdb_cmd_enabled
, false))
409 * Check for internal variables
411 if (strcmp(argv
[1], "KDBDEBUG") == 0) {
412 unsigned int debugflags
;
415 debugflags
= simple_strtoul(argv
[2], &cp
, 0);
416 if (cp
== argv
[2] || debugflags
& ~KDB_DEBUG_FLAG_MASK
) {
417 kdb_printf("kdb: illegal debug flags '%s'\n",
421 kdb_flags
= (kdb_flags
& ~KDB_DEBUG(MASK
))
422 | (debugflags
<< KDB_DEBUG_FLAG_SHIFT
);
428 * Tokenizer squashed the '=' sign. argv[1] is variable
429 * name, argv[2] = value.
431 varlen
= strlen(argv
[1]);
432 vallen
= strlen(argv
[2]);
433 ep
= kdballocenv(varlen
+ vallen
+ 2);
435 return KDB_ENVBUFFULL
;
437 sprintf(ep
, "%s=%s", argv
[1], argv
[2]);
439 ep
[varlen
+vallen
+1] = '\0';
441 for (i
= 0; i
< __nenv
; i
++) {
443 && ((strncmp(__env
[i
], argv
[1], varlen
) == 0)
444 && ((__env
[i
][varlen
] == '\0')
445 || (__env
[i
][varlen
] == '=')))) {
452 * Wasn't existing variable. Fit into slot.
454 for (i
= 0; i
< __nenv
-1; i
++) {
455 if (__env
[i
] == (char *)0) {
464 static int kdb_check_regs(void)
466 if (!kdb_current_regs
) {
467 kdb_printf("No current kdb registers."
468 " You may need to select another task\n");
475 * kdbgetaddrarg - This function is responsible for parsing an
476 * address-expression and returning the value of the expression,
477 * symbol name, and offset to the caller.
479 * The argument may consist of a numeric value (decimal or
480 * hexidecimal), a symbol name, a register name (preceded by the
481 * percent sign), an environment variable with a numeric value
482 * (preceded by a dollar sign) or a simple arithmetic expression
483 * consisting of a symbol name, +/-, and a numeric constant value
486 * argc - count of arguments in argv
487 * argv - argument vector
488 * *nextarg - index to next unparsed argument in argv[]
489 * regs - Register state at time of KDB entry
491 * *value - receives the value of the address-expression
492 * *offset - receives the offset specified, if any
493 * *name - receives the symbol name, if any
494 * *nextarg - index to next unparsed argument in argv[]
496 * zero is returned on success, a kdb diagnostic code is
499 int kdbgetaddrarg(int argc
, const char **argv
, int *nextarg
,
500 unsigned long *value
, long *offset
,
504 unsigned long off
= 0;
514 * If the enable flags prohibit both arbitrary memory access
515 * and flow control then there are no reasonable grounds to
516 * provide symbol lookup.
518 if (!kdb_check_flags(KDB_ENABLE_MEM_READ
| KDB_ENABLE_FLOW_CTRL
,
519 kdb_cmd_enabled
, false))
523 * Process arguments which follow the following syntax:
525 * symbol | numeric-address [+/- numeric-offset]
527 * $environment-variable
533 symname
= (char *)argv
[*nextarg
];
536 * If there is no whitespace between the symbol
537 * or address and the '+' or '-' symbols, we
538 * remember the character and replace it with a
539 * null so the symbol/value can be properly parsed
541 cp
= strpbrk(symname
, "+-");
547 if (symname
[0] == '$') {
548 diag
= kdbgetulenv(&symname
[1], &addr
);
551 } else if (symname
[0] == '%') {
552 diag
= kdb_check_regs();
555 /* Implement register values with % at a later time as it is
560 found
= kdbgetsymval(symname
, &symtab
);
562 addr
= symtab
.sym_start
;
564 diag
= kdbgetularg(argv
[*nextarg
], &addr
);
571 found
= kdbnearsym(addr
, &symtab
);
579 if (offset
&& name
&& *name
)
580 *offset
= addr
- symtab
.sym_start
;
582 if ((*nextarg
> argc
)
587 * check for +/- and offset
590 if (symbol
== '\0') {
591 if ((argv
[*nextarg
][0] != '+')
592 && (argv
[*nextarg
][0] != '-')) {
594 * Not our argument. Return.
598 positive
= (argv
[*nextarg
][0] == '+');
602 positive
= (symbol
== '+');
605 * Now there must be an offset!
607 if ((*nextarg
> argc
)
608 && (symbol
== '\0')) {
609 return KDB_INVADDRFMT
;
613 cp
= (char *)argv
[*nextarg
];
617 diag
= kdbgetularg(cp
, &off
);
633 static void kdb_cmderror(int diag
)
638 kdb_printf("no error detected (diagnostic is %d)\n", diag
);
642 for (i
= 0; i
< __nkdb_err
; i
++) {
643 if (kdbmsgs
[i
].km_diag
== diag
) {
644 kdb_printf("diag: %d: %s\n", diag
, kdbmsgs
[i
].km_msg
);
649 kdb_printf("Unknown diag %d\n", -diag
);
653 * kdb_defcmd, kdb_defcmd2 - This function implements the 'defcmd'
654 * command which defines one command as a set of other commands,
655 * terminated by endefcmd. kdb_defcmd processes the initial
656 * 'defcmd' command, kdb_defcmd2 is invoked from kdb_parse for
657 * the following commands until 'endefcmd'.
659 * argc argument count
660 * argv argument vector
662 * zero for success, a kdb diagnostic if error
672 static struct defcmd_set
*defcmd_set
;
673 static int defcmd_set_count
;
674 static bool defcmd_in_progress
;
676 /* Forward references */
677 static int kdb_exec_defcmd(int argc
, const char **argv
);
679 static int kdb_defcmd2(const char *cmdstr
, const char *argv0
)
681 struct defcmd_set
*s
= defcmd_set
+ defcmd_set_count
- 1;
682 char **save_command
= s
->command
;
683 if (strcmp(argv0
, "endefcmd") == 0) {
684 defcmd_in_progress
= false;
688 /* macros are always safe because when executed each
689 * internal command re-enters kdb_parse() and is
690 * safety checked individually.
692 kdb_register_flags(s
->name
, kdb_exec_defcmd
, s
->usage
,
694 KDB_ENABLE_ALWAYS_SAFE
);
699 s
->command
= kcalloc(s
->count
+ 1, sizeof(*(s
->command
)), GFP_KDB
);
701 kdb_printf("Could not allocate new kdb_defcmd table for %s\n",
706 memcpy(s
->command
, save_command
, s
->count
* sizeof(*(s
->command
)));
707 s
->command
[s
->count
++] = kdb_strdup(cmdstr
, GFP_KDB
);
712 static int kdb_defcmd(int argc
, const char **argv
)
714 struct defcmd_set
*save_defcmd_set
= defcmd_set
, *s
;
715 if (defcmd_in_progress
) {
716 kdb_printf("kdb: nested defcmd detected, assuming missing "
718 kdb_defcmd2("endefcmd", "endefcmd");
722 for (s
= defcmd_set
; s
< defcmd_set
+ defcmd_set_count
; ++s
) {
723 kdb_printf("defcmd %s \"%s\" \"%s\"\n", s
->name
,
725 for (i
= 0; i
< s
->count
; ++i
)
726 kdb_printf("%s", s
->command
[i
]);
727 kdb_printf("endefcmd\n");
733 if (in_dbg_master()) {
734 kdb_printf("Command only available during kdb_init()\n");
737 defcmd_set
= kmalloc_array(defcmd_set_count
+ 1, sizeof(*defcmd_set
),
741 memcpy(defcmd_set
, save_defcmd_set
,
742 defcmd_set_count
* sizeof(*defcmd_set
));
743 s
= defcmd_set
+ defcmd_set_count
;
744 memset(s
, 0, sizeof(*s
));
746 s
->name
= kdb_strdup(argv
[1], GFP_KDB
);
749 s
->usage
= kdb_strdup(argv
[2], GFP_KDB
);
752 s
->help
= kdb_strdup(argv
[3], GFP_KDB
);
755 if (s
->usage
[0] == '"') {
756 strcpy(s
->usage
, argv
[2]+1);
757 s
->usage
[strlen(s
->usage
)-1] = '\0';
759 if (s
->help
[0] == '"') {
760 strcpy(s
->help
, argv
[3]+1);
761 s
->help
[strlen(s
->help
)-1] = '\0';
764 defcmd_in_progress
= true;
765 kfree(save_defcmd_set
);
774 kdb_printf("Could not allocate new defcmd_set entry for %s\n", argv
[1]);
775 defcmd_set
= save_defcmd_set
;
780 * kdb_exec_defcmd - Execute the set of commands associated with this
783 * argc argument count
784 * argv argument vector
786 * zero for success, a kdb diagnostic if error
788 static int kdb_exec_defcmd(int argc
, const char **argv
)
791 struct defcmd_set
*s
;
794 for (s
= defcmd_set
, i
= 0; i
< defcmd_set_count
; ++i
, ++s
) {
795 if (strcmp(s
->name
, argv
[0]) == 0)
798 if (i
== defcmd_set_count
) {
799 kdb_printf("kdb_exec_defcmd: could not find commands for %s\n",
803 for (i
= 0; i
< s
->count
; ++i
) {
804 /* Recursive use of kdb_parse, do not use argv after
807 kdb_printf("[%s]kdb> %s\n", s
->name
, s
->command
[i
]);
808 ret
= kdb_parse(s
->command
[i
]);
815 /* Command history */
816 #define KDB_CMD_HISTORY_COUNT 32
817 #define CMD_BUFLEN 200 /* kdb_printf: max printline
819 static unsigned int cmd_head
, cmd_tail
;
820 static unsigned int cmdptr
;
821 static char cmd_hist
[KDB_CMD_HISTORY_COUNT
][CMD_BUFLEN
];
822 static char cmd_cur
[CMD_BUFLEN
];
825 * The "str" argument may point to something like | grep xyz
827 static void parse_grep(const char *str
)
830 char *cp
= (char *)str
, *cp2
;
832 /* sanity check: we should have been called with the \ first */
838 if (!str_has_prefix(cp
, "grep ")) {
839 kdb_printf("invalid 'pipe', see grephelp\n");
845 cp2
= strchr(cp
, '\n');
847 *cp2
= '\0'; /* remove the trailing newline */
850 kdb_printf("invalid 'pipe', see grephelp\n");
853 /* now cp points to a nonzero length search string */
855 /* allow it be "x y z" by removing the "'s - there must
858 cp2
= strchr(cp
, '"');
860 kdb_printf("invalid quoted string, see grephelp\n");
863 *cp2
= '\0'; /* end the string where the 2nd " was */
865 kdb_grep_leading
= 0;
867 kdb_grep_leading
= 1;
871 kdb_grep_trailing
= 0;
872 if (*(cp
+len
-1) == '$') {
873 kdb_grep_trailing
= 1;
879 if (len
>= KDB_GREP_STRLEN
) {
880 kdb_printf("search string too long\n");
883 strcpy(kdb_grep_string
, cp
);
889 * kdb_parse - Parse the command line, search the command table for a
890 * matching command and invoke the command function. This
891 * function may be called recursively, if it is, the second call
892 * will overwrite argv and cbuf. It is the caller's
893 * responsibility to save their argv if they recursively call
896 * cmdstr The input command line to be parsed.
897 * regs The registers at the time kdb was entered.
899 * Zero for success, a kdb diagnostic if failure.
901 * Limited to 20 tokens.
903 * Real rudimentary tokenization. Basically only whitespace
904 * is considered a token delimeter (but special consideration
905 * is taken of the '=' sign as used by the 'set' command).
907 * The algorithm used to tokenize the input string relies on
908 * there being at least one whitespace (or otherwise useless)
909 * character between tokens as the character immediately following
910 * the token is altered in-place to a null-byte to terminate the
916 int kdb_parse(const char *cmdstr
)
918 static char *argv
[MAXARGC
];
920 static char cbuf
[CMD_BUFLEN
+2];
924 int i
, escaped
, ignore_errors
= 0, check_grep
= 0;
927 * First tokenize the command string.
931 if (KDB_FLAG(CMD_INTERRUPT
)) {
932 /* Previous command was interrupted, newline must not
933 * repeat the command */
934 KDB_FLAG_CLEAR(CMD_INTERRUPT
);
935 KDB_STATE_SET(PAGER
);
936 argc
= 0; /* no repeat */
939 if (*cp
!= '\n' && *cp
!= '\0') {
943 /* skip whitespace */
946 if ((*cp
== '\0') || (*cp
== '\n') ||
947 (*cp
== '#' && !defcmd_in_progress
))
949 /* special case: check for | grep pattern */
954 if (cpp
>= cbuf
+ CMD_BUFLEN
) {
955 kdb_printf("kdb_parse: command buffer "
956 "overflow, command ignored\n%s\n",
960 if (argc
>= MAXARGC
- 1) {
961 kdb_printf("kdb_parse: too many arguments, "
962 "command ignored\n%s\n", cmdstr
);
968 /* Copy to next unquoted and unescaped
969 * whitespace or '=' */
970 while (*cp
&& *cp
!= '\n' &&
971 (escaped
|| quoted
|| !isspace(*cp
))) {
972 if (cpp
>= cbuf
+ CMD_BUFLEN
)
986 else if (*cp
== '\'' || *cp
== '"')
989 if (*cpp
== '=' && !quoted
)
993 *cpp
++ = '\0'; /* Squash a ws or '=' character */
1000 if (defcmd_in_progress
) {
1001 int result
= kdb_defcmd2(cmdstr
, argv
[0]);
1002 if (!defcmd_in_progress
) {
1003 argc
= 0; /* avoid repeat on endefcmd */
1008 if (argv
[0][0] == '-' && argv
[0][1] &&
1009 (argv
[0][1] < '0' || argv
[0][1] > '9')) {
1014 for_each_kdbcmd(tp
, i
) {
1017 * If this command is allowed to be abbreviated,
1018 * check to see if this is it.
1022 && (strlen(argv
[0]) <= tp
->cmd_minlen
)) {
1023 if (strncmp(argv
[0],
1025 tp
->cmd_minlen
) == 0) {
1030 if (strcmp(argv
[0], tp
->cmd_name
) == 0)
1036 * If we don't find a command by this name, see if the first
1037 * few characters of this match any of the known commands.
1038 * e.g., md1c20 should match md.
1040 if (i
== kdb_max_commands
) {
1041 for_each_kdbcmd(tp
, i
) {
1043 if (strncmp(argv
[0],
1045 strlen(tp
->cmd_name
)) == 0) {
1052 if (i
< kdb_max_commands
) {
1055 if (!kdb_check_flags(tp
->cmd_flags
, kdb_cmd_enabled
, argc
<= 1))
1059 result
= (*tp
->cmd_func
)(argc
-1, (const char **)argv
);
1060 if (result
&& ignore_errors
&& result
> KDB_CMD_GO
)
1062 KDB_STATE_CLEAR(CMD
);
1064 if (tp
->cmd_flags
& KDB_REPEAT_WITH_ARGS
)
1067 argc
= tp
->cmd_flags
& KDB_REPEAT_NO_ARGS
? 1 : 0;
1069 *(argv
[argc
]) = '\0';
1074 * If the input with which we were presented does not
1075 * map to an existing command, attempt to parse it as an
1076 * address argument and display the result. Useful for
1077 * obtaining the address of a variable, or the nearest symbol
1078 * to an address contained in a register.
1081 unsigned long value
;
1086 if (kdbgetaddrarg(0, (const char **)argv
, &nextarg
,
1087 &value
, &offset
, &name
)) {
1088 return KDB_NOTFOUND
;
1091 kdb_printf("%s = ", argv
[0]);
1092 kdb_symbol_print(value
, NULL
, KDB_SP_DEFAULT
);
1099 static int handle_ctrl_cmd(char *cmd
)
1104 /* initial situation */
1105 if (cmd_head
== cmd_tail
)
1109 if (cmdptr
!= cmd_tail
)
1110 cmdptr
= (cmdptr
+ KDB_CMD_HISTORY_COUNT
- 1) %
1111 KDB_CMD_HISTORY_COUNT
;
1112 strscpy(cmd_cur
, cmd_hist
[cmdptr
], CMD_BUFLEN
);
1115 if (cmdptr
!= cmd_head
)
1116 cmdptr
= (cmdptr
+1) % KDB_CMD_HISTORY_COUNT
;
1117 strscpy(cmd_cur
, cmd_hist
[cmdptr
], CMD_BUFLEN
);
1124 * kdb_reboot - This function implements the 'reboot' command. Reboot
1125 * the system immediately, or loop for ever on failure.
1127 static int kdb_reboot(int argc
, const char **argv
)
1129 emergency_restart();
1130 kdb_printf("Hmm, kdb_reboot did not reboot, spinning here\n");
1137 static void kdb_dumpregs(struct pt_regs
*regs
)
1139 int old_lvl
= console_loglevel
;
1140 console_loglevel
= CONSOLE_LOGLEVEL_MOTORMOUTH
;
1145 console_loglevel
= old_lvl
;
1148 static void kdb_set_current_task(struct task_struct
*p
)
1150 kdb_current_task
= p
;
1152 if (kdb_task_has_cpu(p
)) {
1153 kdb_current_regs
= KDB_TSKREGS(kdb_process_cpu(p
));
1156 kdb_current_regs
= NULL
;
1159 static void drop_newline(char *buf
)
1161 size_t len
= strlen(buf
);
1165 if (*(buf
+ len
- 1) == '\n')
1166 *(buf
+ len
- 1) = '\0';
1170 * kdb_local - The main code for kdb. This routine is invoked on a
1171 * specific processor, it is not global. The main kdb() routine
1172 * ensures that only one processor at a time is in this routine.
1173 * This code is called with the real reason code on the first
1174 * entry to a kdb session, thereafter it is called with reason
1175 * SWITCH, even if the user goes back to the original cpu.
1177 * reason The reason KDB was invoked
1178 * error The hardware-defined error code
1179 * regs The exception frame at time of fault/breakpoint.
1180 * db_result Result code from the break or debug point.
1182 * 0 KDB was invoked for an event which it wasn't responsible
1183 * 1 KDB handled the event for which it was invoked.
1184 * KDB_CMD_GO User typed 'go'.
1185 * KDB_CMD_CPU User switched to another cpu.
1186 * KDB_CMD_SS Single step.
1188 static int kdb_local(kdb_reason_t reason
, int error
, struct pt_regs
*regs
,
1189 kdb_dbtrap_t db_result
)
1193 struct task_struct
*kdb_current
=
1194 kdb_curr_task(raw_smp_processor_id());
1196 KDB_DEBUG_STATE("kdb_local 1", reason
);
1198 if (reason
== KDB_REASON_DEBUG
) {
1199 /* special case below */
1201 kdb_printf("\nEntering kdb (current=0x%px, pid %d) ",
1202 kdb_current
, kdb_current
? kdb_current
->pid
: 0);
1203 #if defined(CONFIG_SMP)
1204 kdb_printf("on processor %d ", raw_smp_processor_id());
1209 case KDB_REASON_DEBUG
:
1212 * If re-entering kdb after a single step
1213 * command, don't print the message.
1215 switch (db_result
) {
1217 kdb_printf("\nEntering kdb (0x%px, pid %d) ",
1218 kdb_current
, kdb_current
->pid
);
1219 #if defined(CONFIG_SMP)
1220 kdb_printf("on processor %d ", raw_smp_processor_id());
1222 kdb_printf("due to Debug @ " kdb_machreg_fmt
"\n",
1223 instruction_pointer(regs
));
1228 KDB_DEBUG_STATE("kdb_local 4", reason
);
1229 return 1; /* kdba_db_trap did the work */
1231 kdb_printf("kdb: Bad result from kdba_db_trap: %d\n",
1238 case KDB_REASON_ENTER
:
1239 if (KDB_STATE(KEYBOARD
))
1240 kdb_printf("due to Keyboard Entry\n");
1242 kdb_printf("due to KDB_ENTER()\n");
1244 case KDB_REASON_KEYBOARD
:
1245 KDB_STATE_SET(KEYBOARD
);
1246 kdb_printf("due to Keyboard Entry\n");
1248 case KDB_REASON_ENTER_SLAVE
:
1249 /* drop through, slaves only get released via cpu switch */
1250 case KDB_REASON_SWITCH
:
1251 kdb_printf("due to cpu switch\n");
1253 case KDB_REASON_OOPS
:
1254 kdb_printf("Oops: %s\n", kdb_diemsg
);
1255 kdb_printf("due to oops @ " kdb_machreg_fmt
"\n",
1256 instruction_pointer(regs
));
1259 case KDB_REASON_SYSTEM_NMI
:
1260 kdb_printf("due to System NonMaskable Interrupt\n");
1262 case KDB_REASON_NMI
:
1263 kdb_printf("due to NonMaskable Interrupt @ "
1264 kdb_machreg_fmt
"\n",
1265 instruction_pointer(regs
));
1267 case KDB_REASON_SSTEP
:
1268 case KDB_REASON_BREAK
:
1269 kdb_printf("due to %s @ " kdb_machreg_fmt
"\n",
1270 reason
== KDB_REASON_BREAK
?
1271 "Breakpoint" : "SS trap", instruction_pointer(regs
));
1273 * Determine if this breakpoint is one that we
1274 * are interested in.
1276 if (db_result
!= KDB_DB_BPT
) {
1277 kdb_printf("kdb: error return from kdba_bp_trap: %d\n",
1279 KDB_DEBUG_STATE("kdb_local 6", reason
);
1280 return 0; /* Not for us, dismiss it */
1283 case KDB_REASON_RECURSE
:
1284 kdb_printf("due to Recursion @ " kdb_machreg_fmt
"\n",
1285 instruction_pointer(regs
));
1288 kdb_printf("kdb: unexpected reason code: %d\n", reason
);
1289 KDB_DEBUG_STATE("kdb_local 8", reason
);
1290 return 0; /* Not for us, dismiss it */
1295 * Initialize pager context.
1298 KDB_STATE_CLEAR(SUPPRESS
);
1299 kdb_grepping_flag
= 0;
1300 /* ensure the old search does not leak into '/' commands */
1301 kdb_grep_string
[0] = '\0';
1305 *(cmd_hist
[cmd_head
]) = '\0';
1308 /* PROMPT can only be set if we have MEM_READ permission. */
1309 snprintf(kdb_prompt_str
, CMD_BUFLEN
, kdbgetenv("PROMPT"),
1310 raw_smp_processor_id());
1311 if (defcmd_in_progress
)
1312 strncat(kdb_prompt_str
, "[defcmd]", CMD_BUFLEN
);
1315 * Fetch command from keyboard
1317 cmdbuf
= kdb_getstr(cmdbuf
, CMD_BUFLEN
, kdb_prompt_str
);
1318 if (*cmdbuf
!= '\n') {
1320 if (cmdptr
== cmd_head
) {
1321 strscpy(cmd_hist
[cmd_head
], cmd_cur
,
1323 *(cmd_hist
[cmd_head
] +
1324 strlen(cmd_hist
[cmd_head
])-1) = '\0';
1326 if (!handle_ctrl_cmd(cmdbuf
))
1327 *(cmd_cur
+strlen(cmd_cur
)-1) = '\0';
1329 goto do_full_getstr
;
1331 strscpy(cmd_hist
[cmd_head
], cmd_cur
,
1335 cmd_head
= (cmd_head
+1) % KDB_CMD_HISTORY_COUNT
;
1336 if (cmd_head
== cmd_tail
)
1337 cmd_tail
= (cmd_tail
+1) % KDB_CMD_HISTORY_COUNT
;
1341 diag
= kdb_parse(cmdbuf
);
1342 if (diag
== KDB_NOTFOUND
) {
1343 drop_newline(cmdbuf
);
1344 kdb_printf("Unknown kdb command: '%s'\n", cmdbuf
);
1347 if (diag
== KDB_CMD_GO
1348 || diag
== KDB_CMD_CPU
1349 || diag
== KDB_CMD_SS
1350 || diag
== KDB_CMD_KGDB
)
1356 KDB_DEBUG_STATE("kdb_local 9", diag
);
1362 * kdb_print_state - Print the state data for the current processor
1365 * text Identifies the debug point
1366 * value Any integer value to be printed, e.g. reason code.
1368 void kdb_print_state(const char *text
, int value
)
1370 kdb_printf("state: %s cpu %d value %d initial %d state %x\n",
1371 text
, raw_smp_processor_id(), value
, kdb_initial_cpu
,
1376 * kdb_main_loop - After initial setup and assignment of the
1377 * controlling cpu, all cpus are in this loop. One cpu is in
1378 * control and will issue the kdb prompt, the others will spin
1379 * until 'go' or cpu switch.
1381 * To get a consistent view of the kernel stacks for all
1382 * processes, this routine is invoked from the main kdb code via
1383 * an architecture specific routine. kdba_main_loop is
1384 * responsible for making the kernel stacks consistent for all
1385 * processes, there should be no difference between a blocked
1386 * process and a running process as far as kdb is concerned.
1388 * reason The reason KDB was invoked
1389 * error The hardware-defined error code
1390 * reason2 kdb's current reason code.
1391 * Initially error but can change
1392 * according to kdb state.
1393 * db_result Result code from break or debug point.
1394 * regs The exception frame at time of fault/breakpoint.
1395 * should always be valid.
1397 * 0 KDB was invoked for an event which it wasn't responsible
1398 * 1 KDB handled the event for which it was invoked.
1400 int kdb_main_loop(kdb_reason_t reason
, kdb_reason_t reason2
, int error
,
1401 kdb_dbtrap_t db_result
, struct pt_regs
*regs
)
1404 /* Stay in kdb() until 'go', 'ss[b]' or an error */
1407 * All processors except the one that is in control
1410 KDB_DEBUG_STATE("kdb_main_loop 1", reason
);
1411 while (KDB_STATE(HOLD_CPU
)) {
1412 /* state KDB is turned off by kdb_cpu to see if the
1413 * other cpus are still live, each cpu in this loop
1416 if (!KDB_STATE(KDB
))
1420 KDB_STATE_CLEAR(SUPPRESS
);
1421 KDB_DEBUG_STATE("kdb_main_loop 2", reason
);
1422 if (KDB_STATE(LEAVING
))
1423 break; /* Another cpu said 'go' */
1424 /* Still using kdb, this processor is in control */
1425 result
= kdb_local(reason2
, error
, regs
, db_result
);
1426 KDB_DEBUG_STATE("kdb_main_loop 3", result
);
1428 if (result
== KDB_CMD_CPU
)
1431 if (result
== KDB_CMD_SS
) {
1432 KDB_STATE_SET(DOING_SS
);
1436 if (result
== KDB_CMD_KGDB
) {
1437 if (!KDB_STATE(DOING_KGDB
))
1438 kdb_printf("Entering please attach debugger "
1439 "or use $D#44+ or $3#33\n");
1442 if (result
&& result
!= 1 && result
!= KDB_CMD_GO
)
1443 kdb_printf("\nUnexpected kdb_local return code %d\n",
1445 KDB_DEBUG_STATE("kdb_main_loop 4", reason
);
1448 if (KDB_STATE(DOING_SS
))
1449 KDB_STATE_CLEAR(SSBPT
);
1451 /* Clean up any keyboard devices before leaving */
1452 kdb_kbd_cleanup_state();
1458 * kdb_mdr - This function implements the guts of the 'mdr', memory
1460 * mdr <addr arg>,<byte count>
1462 * addr Start address
1463 * count Number of bytes
1465 * Always 0. Any errors are detected and printed by kdb_getarea.
1467 static int kdb_mdr(unsigned long addr
, unsigned int count
)
1471 if (kdb_getarea(c
, addr
))
1473 kdb_printf("%02x", c
);
1481 * kdb_md - This function implements the 'md', 'md1', 'md2', 'md4',
1482 * 'md8' 'mdr' and 'mds' commands.
1484 * md|mds [<addr arg> [<line count> [<radix>]]]
1485 * mdWcN [<addr arg> [<line count> [<radix>]]]
1486 * where W = is the width (1, 2, 4 or 8) and N is the count.
1487 * for eg., md1c20 reads 20 bytes, 1 at a time.
1488 * mdr <addr arg>,<byte count>
1490 static void kdb_md_line(const char *fmtstr
, unsigned long addr
,
1491 int symbolic
, int nosect
, int bytesperword
,
1492 int num
, int repeat
, int phys
)
1494 /* print just one line of data */
1495 kdb_symtab_t symtab
;
1502 memset(cbuf
, '\0', sizeof(cbuf
));
1504 kdb_printf("phys " kdb_machreg_fmt0
" ", addr
);
1506 kdb_printf(kdb_machreg_fmt0
" ", addr
);
1508 for (i
= 0; i
< num
&& repeat
--; i
++) {
1510 if (kdb_getphysword(&word
, addr
, bytesperword
))
1512 } else if (kdb_getword(&word
, addr
, bytesperword
))
1514 kdb_printf(fmtstr
, word
);
1516 kdbnearsym(word
, &symtab
);
1518 memset(&symtab
, 0, sizeof(symtab
));
1519 if (symtab
.sym_name
) {
1520 kdb_symbol_print(word
, &symtab
, 0);
1523 kdb_printf(" %s %s "
1526 kdb_machreg_fmt
, symtab
.mod_name
,
1527 symtab
.sec_name
, symtab
.sec_start
,
1528 symtab
.sym_start
, symtab
.sym_end
);
1530 addr
+= bytesperword
;
1538 cp
= wc
.c
+ 8 - bytesperword
;
1543 #define printable_char(c) \
1544 ({unsigned char __c = c; isascii(__c) && isprint(__c) ? __c : '.'; })
1545 for (j
= 0; j
< bytesperword
; j
++)
1546 *c
++ = printable_char(*cp
++);
1547 addr
+= bytesperword
;
1548 #undef printable_char
1551 kdb_printf("%*s %s\n", (int)((num
-i
)*(2*bytesperword
+ 1)+1),
1555 static int kdb_md(int argc
, const char **argv
)
1557 static unsigned long last_addr
;
1558 static int last_radix
, last_bytesperword
, last_repeat
;
1559 int radix
= 16, mdcount
= 8, bytesperword
= KDB_WORD_SIZE
, repeat
;
1561 char fmtchar
, fmtstr
[64];
1570 kdbgetintenv("MDCOUNT", &mdcount
);
1571 kdbgetintenv("RADIX", &radix
);
1572 kdbgetintenv("BYTESPERWORD", &bytesperword
);
1574 /* Assume 'md <addr>' and start with environment values */
1575 repeat
= mdcount
* 16 / bytesperword
;
1577 if (strcmp(argv
[0], "mdr") == 0) {
1578 if (argc
== 2 || (argc
== 0 && last_addr
!= 0))
1581 return KDB_ARGCOUNT
;
1582 } else if (isdigit(argv
[0][2])) {
1583 bytesperword
= (int)(argv
[0][2] - '0');
1584 if (bytesperword
== 0) {
1585 bytesperword
= last_bytesperword
;
1586 if (bytesperword
== 0)
1589 last_bytesperword
= bytesperword
;
1590 repeat
= mdcount
* 16 / bytesperword
;
1593 else if (argv
[0][3] == 'c' && argv
[0][4]) {
1595 repeat
= simple_strtoul(argv
[0] + 4, &p
, 10);
1596 mdcount
= ((repeat
* bytesperword
) + 15) / 16;
1599 last_repeat
= repeat
;
1600 } else if (strcmp(argv
[0], "md") == 0)
1602 else if (strcmp(argv
[0], "mds") == 0)
1604 else if (strcmp(argv
[0], "mdp") == 0) {
1608 return KDB_NOTFOUND
;
1612 return KDB_ARGCOUNT
;
1615 bytesperword
= last_bytesperword
;
1616 repeat
= last_repeat
;
1620 mdcount
= ((repeat
* bytesperword
) + 15) / 16;
1625 int diag
, nextarg
= 1;
1626 diag
= kdbgetaddrarg(argc
, argv
, &nextarg
, &addr
,
1630 if (argc
> nextarg
+2)
1631 return KDB_ARGCOUNT
;
1633 if (argc
>= nextarg
) {
1634 diag
= kdbgetularg(argv
[nextarg
], &val
);
1636 mdcount
= (int) val
;
1640 repeat
= mdcount
* 16 / bytesperword
;
1643 if (argc
>= nextarg
+1) {
1644 diag
= kdbgetularg(argv
[nextarg
+1], &val
);
1650 if (strcmp(argv
[0], "mdr") == 0) {
1653 ret
= kdb_mdr(addr
, mdcount
);
1654 last_addr
+= mdcount
;
1655 last_repeat
= mdcount
;
1656 last_bytesperword
= bytesperword
; // to make REPEAT happy
1671 return KDB_BADRADIX
;
1676 if (bytesperword
> KDB_WORD_SIZE
)
1677 return KDB_BADWIDTH
;
1679 switch (bytesperword
) {
1681 sprintf(fmtstr
, "%%16.16l%c ", fmtchar
);
1684 sprintf(fmtstr
, "%%8.8l%c ", fmtchar
);
1687 sprintf(fmtstr
, "%%4.4l%c ", fmtchar
);
1690 sprintf(fmtstr
, "%%2.2l%c ", fmtchar
);
1693 return KDB_BADWIDTH
;
1696 last_repeat
= repeat
;
1697 last_bytesperword
= bytesperword
;
1699 if (strcmp(argv
[0], "mds") == 0) {
1701 /* Do not save these changes as last_*, they are temporary mds
1704 bytesperword
= KDB_WORD_SIZE
;
1706 kdbgetintenv("NOSECT", &nosect
);
1709 /* Round address down modulo BYTESPERWORD */
1711 addr
&= ~(bytesperword
-1);
1713 while (repeat
> 0) {
1715 int n
, z
, num
= (symbolic
? 1 : (16 / bytesperword
));
1717 if (KDB_FLAG(CMD_INTERRUPT
))
1719 for (a
= addr
, z
= 0; z
< repeat
; a
+= bytesperword
, ++z
) {
1721 if (kdb_getphysword(&word
, a
, bytesperword
)
1724 } else if (kdb_getword(&word
, a
, bytesperword
) || word
)
1727 n
= min(num
, repeat
);
1728 kdb_md_line(fmtstr
, addr
, symbolic
, nosect
, bytesperword
,
1730 addr
+= bytesperword
* n
;
1732 z
= (z
+ num
- 1) / num
;
1734 int s
= num
* (z
-2);
1735 kdb_printf(kdb_machreg_fmt0
"-" kdb_machreg_fmt0
1736 " zero suppressed\n",
1737 addr
, addr
+ bytesperword
* s
- 1);
1738 addr
+= bytesperword
* s
;
1748 * kdb_mm - This function implements the 'mm' command.
1749 * mm address-expression new-value
1751 * mm works on machine words, mmW works on bytes.
1753 static int kdb_mm(int argc
, const char **argv
)
1758 unsigned long contents
;
1762 if (argv
[0][2] && !isdigit(argv
[0][2]))
1763 return KDB_NOTFOUND
;
1766 return KDB_ARGCOUNT
;
1769 diag
= kdbgetaddrarg(argc
, argv
, &nextarg
, &addr
, &offset
, NULL
);
1774 return KDB_ARGCOUNT
;
1775 diag
= kdbgetaddrarg(argc
, argv
, &nextarg
, &contents
, NULL
, NULL
);
1779 if (nextarg
!= argc
+ 1)
1780 return KDB_ARGCOUNT
;
1782 width
= argv
[0][2] ? (argv
[0][2] - '0') : (KDB_WORD_SIZE
);
1783 diag
= kdb_putword(addr
, contents
, width
);
1787 kdb_printf(kdb_machreg_fmt
" = " kdb_machreg_fmt
"\n", addr
, contents
);
1793 * kdb_go - This function implements the 'go' command.
1794 * go [address-expression]
1796 static int kdb_go(int argc
, const char **argv
)
1803 if (raw_smp_processor_id() != kdb_initial_cpu
) {
1804 kdb_printf("go must execute on the entry cpu, "
1805 "please use \"cpu %d\" and then execute go\n",
1807 return KDB_BADCPUNUM
;
1811 diag
= kdbgetaddrarg(argc
, argv
, &nextarg
,
1812 &addr
, &offset
, NULL
);
1816 return KDB_ARGCOUNT
;
1820 if (KDB_FLAG(CATASTROPHIC
)) {
1821 kdb_printf("Catastrophic error detected\n");
1822 kdb_printf("kdb_continue_catastrophic=%d, ",
1823 kdb_continue_catastrophic
);
1824 if (kdb_continue_catastrophic
== 0 && kdb_go_count
++ == 0) {
1825 kdb_printf("type go a second time if you really want "
1829 if (kdb_continue_catastrophic
== 2) {
1830 kdb_printf("forcing reboot\n");
1831 kdb_reboot(0, NULL
);
1833 kdb_printf("attempting to continue\n");
1839 * kdb_rd - This function implements the 'rd' command.
1841 static int kdb_rd(int argc
, const char **argv
)
1843 int len
= kdb_check_regs();
1844 #if DBG_MAX_REG_NUM > 0
1856 for (i
= 0; i
< DBG_MAX_REG_NUM
; i
++) {
1857 rsize
= dbg_reg_def
[i
].size
* 2;
1860 if (len
+ strlen(dbg_reg_def
[i
].name
) + 4 + rsize
> 80) {
1865 len
+= kdb_printf(" ");
1866 switch(dbg_reg_def
[i
].size
* 8) {
1868 rname
= dbg_get_reg(i
, ®8
, kdb_current_regs
);
1871 len
+= kdb_printf("%s: %02x", rname
, reg8
);
1874 rname
= dbg_get_reg(i
, ®16
, kdb_current_regs
);
1877 len
+= kdb_printf("%s: %04x", rname
, reg16
);
1880 rname
= dbg_get_reg(i
, ®32
, kdb_current_regs
);
1883 len
+= kdb_printf("%s: %08x", rname
, reg32
);
1886 rname
= dbg_get_reg(i
, ®64
, kdb_current_regs
);
1889 len
+= kdb_printf("%s: %016llx", rname
, reg64
);
1892 len
+= kdb_printf("%s: ??", dbg_reg_def
[i
].name
);
1900 kdb_dumpregs(kdb_current_regs
);
1906 * kdb_rm - This function implements the 'rm' (register modify) command.
1907 * rm register-name new-contents
1909 * Allows register modification with the same restrictions as gdb
1911 static int kdb_rm(int argc
, const char **argv
)
1913 #if DBG_MAX_REG_NUM > 0
1923 return KDB_ARGCOUNT
;
1925 * Allow presence or absence of leading '%' symbol.
1931 diag
= kdbgetu64arg(argv
[2], ®64
);
1935 diag
= kdb_check_regs();
1940 for (i
= 0; i
< DBG_MAX_REG_NUM
; i
++) {
1941 if (strcmp(rname
, dbg_reg_def
[i
].name
) == 0) {
1947 switch(dbg_reg_def
[i
].size
* 8) {
1950 dbg_set_reg(i
, ®8
, kdb_current_regs
);
1954 dbg_set_reg(i
, ®16
, kdb_current_regs
);
1958 dbg_set_reg(i
, ®32
, kdb_current_regs
);
1961 dbg_set_reg(i
, ®64
, kdb_current_regs
);
1967 kdb_printf("ERROR: Register set currently not implemented\n");
1972 #if defined(CONFIG_MAGIC_SYSRQ)
1974 * kdb_sr - This function implements the 'sr' (SYSRQ key) command
1975 * which interfaces to the soi-disant MAGIC SYSRQ functionality.
1976 * sr <magic-sysrq-code>
1978 static int kdb_sr(int argc
, const char **argv
)
1981 !kdb_check_flags(KDB_ENABLE_ALL
, kdb_cmd_enabled
, false);
1984 return KDB_ARGCOUNT
;
1987 __handle_sysrq(*argv
[1], check_mask
);
1992 #endif /* CONFIG_MAGIC_SYSRQ */
1995 * kdb_ef - This function implements the 'regs' (display exception
1996 * frame) command. This command takes an address and expects to
1997 * find an exception frame at that address, formats and prints
1999 * regs address-expression
2003 static int kdb_ef(int argc
, const char **argv
)
2011 return KDB_ARGCOUNT
;
2014 diag
= kdbgetaddrarg(argc
, argv
, &nextarg
, &addr
, &offset
, NULL
);
2017 show_regs((struct pt_regs
*)addr
);
2021 #if defined(CONFIG_MODULES)
2023 * kdb_lsmod - This function implements the 'lsmod' command. Lists
2024 * currently loaded kernel modules.
2025 * Mostly taken from userland lsmod.
2027 static int kdb_lsmod(int argc
, const char **argv
)
2032 return KDB_ARGCOUNT
;
2034 kdb_printf("Module Size modstruct Used by\n");
2035 list_for_each_entry(mod
, kdb_modules
, list
) {
2036 if (mod
->state
== MODULE_STATE_UNFORMED
)
2039 kdb_printf("%-20s%8u 0x%px ", mod
->name
,
2040 mod
->core_layout
.size
, (void *)mod
);
2041 #ifdef CONFIG_MODULE_UNLOAD
2042 kdb_printf("%4d ", module_refcount(mod
));
2044 if (mod
->state
== MODULE_STATE_GOING
)
2045 kdb_printf(" (Unloading)");
2046 else if (mod
->state
== MODULE_STATE_COMING
)
2047 kdb_printf(" (Loading)");
2049 kdb_printf(" (Live)");
2050 kdb_printf(" 0x%px", mod
->core_layout
.base
);
2052 #ifdef CONFIG_MODULE_UNLOAD
2054 struct module_use
*use
;
2056 list_for_each_entry(use
, &mod
->source_list
,
2058 kdb_printf("%s ", use
->target
->name
);
2067 #endif /* CONFIG_MODULES */
2070 * kdb_env - This function implements the 'env' command. Display the
2071 * current environment variables.
2074 static int kdb_env(int argc
, const char **argv
)
2078 for (i
= 0; i
< __nenv
; i
++) {
2080 kdb_printf("%s\n", __env
[i
]);
2083 if (KDB_DEBUG(MASK
))
2084 kdb_printf("KDBDEBUG=0x%x\n",
2085 (kdb_flags
& KDB_DEBUG(MASK
)) >> KDB_DEBUG_FLAG_SHIFT
);
2090 #ifdef CONFIG_PRINTK
2092 * kdb_dmesg - This function implements the 'dmesg' command to display
2093 * the contents of the syslog buffer.
2094 * dmesg [lines] [adjust]
2096 static int kdb_dmesg(int argc
, const char **argv
)
2104 struct kmsg_dumper dumper
= { .active
= 1 };
2109 return KDB_ARGCOUNT
;
2112 lines
= simple_strtol(argv
[1], &cp
, 0);
2116 adjust
= simple_strtoul(argv
[2], &cp
, 0);
2117 if (*cp
|| adjust
< 0)
2122 /* disable LOGGING if set */
2123 diag
= kdbgetintenv("LOGGING", &logging
);
2124 if (!diag
&& logging
) {
2125 const char *setargs
[] = { "set", "LOGGING", "0" };
2126 kdb_set(2, setargs
);
2129 kmsg_dump_rewind_nolock(&dumper
);
2130 while (kmsg_dump_get_line_nolock(&dumper
, 1, NULL
, 0, NULL
))
2135 kdb_printf("buffer only contains %d lines, nothing "
2137 else if (adjust
- lines
>= n
)
2138 kdb_printf("buffer only contains %d lines, last %d "
2139 "lines printed\n", n
, n
- adjust
);
2142 } else if (lines
> 0) {
2143 skip
= n
- lines
- adjust
;
2146 kdb_printf("buffer only contains %d lines, "
2147 "nothing printed\n", n
);
2149 } else if (skip
< 0) {
2152 kdb_printf("buffer only contains %d lines, first "
2153 "%d lines printed\n", n
, lines
);
2159 if (skip
>= n
|| skip
< 0)
2162 kmsg_dump_rewind_nolock(&dumper
);
2163 while (kmsg_dump_get_line_nolock(&dumper
, 1, buf
, sizeof(buf
), &len
)) {
2170 if (KDB_FLAG(CMD_INTERRUPT
))
2173 kdb_printf("%.*s\n", (int)len
- 1, buf
);
2178 #endif /* CONFIG_PRINTK */
2180 /* Make sure we balance enable/disable calls, must disable first. */
2181 static atomic_t kdb_nmi_disabled
;
2183 static int kdb_disable_nmi(int argc
, const char *argv
[])
2185 if (atomic_read(&kdb_nmi_disabled
))
2187 atomic_set(&kdb_nmi_disabled
, 1);
2188 arch_kgdb_ops
.enable_nmi(0);
2192 static int kdb_param_enable_nmi(const char *val
, const struct kernel_param
*kp
)
2194 if (!atomic_add_unless(&kdb_nmi_disabled
, -1, 0))
2196 arch_kgdb_ops
.enable_nmi(1);
2200 static const struct kernel_param_ops kdb_param_ops_enable_nmi
= {
2201 .set
= kdb_param_enable_nmi
,
2203 module_param_cb(enable_nmi
, &kdb_param_ops_enable_nmi
, NULL
, 0600);
2206 * kdb_cpu - This function implements the 'cpu' command.
2209 * KDB_CMD_CPU for success, a kdb diagnostic if error
2211 static void kdb_cpu_status(void)
2213 int i
, start_cpu
, first_print
= 1;
2214 char state
, prev_state
= '?';
2216 kdb_printf("Currently on cpu %d\n", raw_smp_processor_id());
2217 kdb_printf("Available cpus: ");
2218 for (start_cpu
= -1, i
= 0; i
< NR_CPUS
; i
++) {
2219 if (!cpu_online(i
)) {
2220 state
= 'F'; /* cpu is offline */
2221 } else if (!kgdb_info
[i
].enter_kgdb
) {
2222 state
= 'D'; /* cpu is online but unresponsive */
2224 state
= ' '; /* cpu is responding to kdb */
2225 if (kdb_task_state_char(KDB_TSK(i
)) == 'I')
2226 state
= 'I'; /* idle task */
2228 if (state
!= prev_state
) {
2229 if (prev_state
!= '?') {
2233 kdb_printf("%d", start_cpu
);
2234 if (start_cpu
< i
-1)
2235 kdb_printf("-%d", i
-1);
2236 if (prev_state
!= ' ')
2237 kdb_printf("(%c)", prev_state
);
2243 /* print the trailing cpus, ignoring them if they are all offline */
2244 if (prev_state
!= 'F') {
2247 kdb_printf("%d", start_cpu
);
2248 if (start_cpu
< i
-1)
2249 kdb_printf("-%d", i
-1);
2250 if (prev_state
!= ' ')
2251 kdb_printf("(%c)", prev_state
);
2256 static int kdb_cpu(int argc
, const char **argv
)
2258 unsigned long cpunum
;
2267 return KDB_ARGCOUNT
;
2269 diag
= kdbgetularg(argv
[1], &cpunum
);
2276 if ((cpunum
>= CONFIG_NR_CPUS
) || !kgdb_info
[cpunum
].enter_kgdb
)
2277 return KDB_BADCPUNUM
;
2279 dbg_switch_cpu
= cpunum
;
2282 * Switch to other cpu
2287 /* The user may not realize that ps/bta with no parameters does not print idle
2288 * or sleeping system daemon processes, so tell them how many were suppressed.
2290 void kdb_ps_suppressed(void)
2292 int idle
= 0, daemon
= 0;
2293 unsigned long mask_I
= kdb_task_state_string("I"),
2294 mask_M
= kdb_task_state_string("M");
2296 const struct task_struct
*p
, *g
;
2297 for_each_online_cpu(cpu
) {
2298 p
= kdb_curr_task(cpu
);
2299 if (kdb_task_state(p
, mask_I
))
2302 kdb_do_each_thread(g
, p
) {
2303 if (kdb_task_state(p
, mask_M
))
2305 } kdb_while_each_thread(g
, p
);
2306 if (idle
|| daemon
) {
2308 kdb_printf("%d idle process%s (state I)%s\n",
2309 idle
, idle
== 1 ? "" : "es",
2310 daemon
? " and " : "");
2312 kdb_printf("%d sleeping system daemon (state M) "
2313 "process%s", daemon
,
2314 daemon
== 1 ? "" : "es");
2315 kdb_printf(" suppressed,\nuse 'ps A' to see all.\n");
2320 * kdb_ps - This function implements the 'ps' command which shows a
2321 * list of the active processes.
2322 * ps [DRSTCZEUIMA] All processes, optionally filtered by state
2324 void kdb_ps1(const struct task_struct
*p
)
2330 copy_from_kernel_nofault(&tmp
, (char *)p
, sizeof(unsigned long)))
2333 cpu
= kdb_process_cpu(p
);
2334 kdb_printf("0x%px %8d %8d %d %4d %c 0x%px %c%s\n",
2335 (void *)p
, p
->pid
, p
->parent
->pid
,
2336 kdb_task_has_cpu(p
), kdb_process_cpu(p
),
2337 kdb_task_state_char(p
),
2338 (void *)(&p
->thread
),
2339 p
== kdb_curr_task(raw_smp_processor_id()) ? '*' : ' ',
2341 if (kdb_task_has_cpu(p
)) {
2342 if (!KDB_TSK(cpu
)) {
2343 kdb_printf(" Error: no saved data for this cpu\n");
2345 if (KDB_TSK(cpu
) != p
)
2346 kdb_printf(" Error: does not match running "
2347 "process table (0x%px)\n", KDB_TSK(cpu
));
2352 static int kdb_ps(int argc
, const char **argv
)
2354 struct task_struct
*g
, *p
;
2355 unsigned long mask
, cpu
;
2358 kdb_ps_suppressed();
2359 kdb_printf("%-*s Pid Parent [*] cpu State %-*s Command\n",
2360 (int)(2*sizeof(void *))+2, "Task Addr",
2361 (int)(2*sizeof(void *))+2, "Thread");
2362 mask
= kdb_task_state_string(argc
? argv
[1] : NULL
);
2363 /* Run the active tasks first */
2364 for_each_online_cpu(cpu
) {
2365 if (KDB_FLAG(CMD_INTERRUPT
))
2367 p
= kdb_curr_task(cpu
);
2368 if (kdb_task_state(p
, mask
))
2372 /* Now the real tasks */
2373 kdb_do_each_thread(g
, p
) {
2374 if (KDB_FLAG(CMD_INTERRUPT
))
2376 if (kdb_task_state(p
, mask
))
2378 } kdb_while_each_thread(g
, p
);
2384 * kdb_pid - This function implements the 'pid' command which switches
2385 * the currently active process.
2388 static int kdb_pid(int argc
, const char **argv
)
2390 struct task_struct
*p
;
2395 return KDB_ARGCOUNT
;
2398 if (strcmp(argv
[1], "R") == 0) {
2399 p
= KDB_TSK(kdb_initial_cpu
);
2401 diag
= kdbgetularg(argv
[1], &val
);
2405 p
= find_task_by_pid_ns((pid_t
)val
, &init_pid_ns
);
2407 kdb_printf("No task with pid=%d\n", (pid_t
)val
);
2411 kdb_set_current_task(p
);
2413 kdb_printf("KDB current process is %s(pid=%d)\n",
2414 kdb_current_task
->comm
,
2415 kdb_current_task
->pid
);
2420 static int kdb_kgdb(int argc
, const char **argv
)
2422 return KDB_CMD_KGDB
;
2426 * kdb_help - This function implements the 'help' and '?' commands.
2428 static int kdb_help(int argc
, const char **argv
)
2433 kdb_printf("%-15.15s %-20.20s %s\n", "Command", "Usage", "Description");
2434 kdb_printf("-----------------------------"
2435 "-----------------------------\n");
2436 for_each_kdbcmd(kt
, i
) {
2438 if (KDB_FLAG(CMD_INTERRUPT
))
2442 if (!kdb_check_flags(kt
->cmd_flags
, kdb_cmd_enabled
, true))
2444 if (strlen(kt
->cmd_usage
) > 20)
2446 kdb_printf("%-15.15s %-20s%s%s\n", kt
->cmd_name
,
2447 kt
->cmd_usage
, space
, kt
->cmd_help
);
2453 * kdb_kill - This function implements the 'kill' commands.
2455 static int kdb_kill(int argc
, const char **argv
)
2459 struct task_struct
*p
;
2462 return KDB_ARGCOUNT
;
2464 sig
= simple_strtol(argv
[1], &endp
, 0);
2467 if ((sig
>= 0) || !valid_signal(-sig
)) {
2468 kdb_printf("Invalid signal parameter.<-signal>\n");
2473 pid
= simple_strtol(argv
[2], &endp
, 0);
2477 kdb_printf("Process ID must be large than 0.\n");
2481 /* Find the process. */
2482 p
= find_task_by_pid_ns(pid
, &init_pid_ns
);
2484 kdb_printf("The specified process isn't found.\n");
2487 p
= p
->group_leader
;
2488 kdb_send_sig(p
, sig
);
2493 * Most of this code has been lifted from kernel/timer.c::sys_sysinfo().
2494 * I cannot call that code directly from kdb, it has an unconditional
2495 * cli()/sti() and calls routines that take locks which can stop the debugger.
2497 static void kdb_sysinfo(struct sysinfo
*val
)
2499 u64 uptime
= ktime_get_mono_fast_ns();
2501 memset(val
, 0, sizeof(*val
));
2502 val
->uptime
= div_u64(uptime
, NSEC_PER_SEC
);
2503 val
->loads
[0] = avenrun
[0];
2504 val
->loads
[1] = avenrun
[1];
2505 val
->loads
[2] = avenrun
[2];
2506 val
->procs
= nr_threads
-1;
2513 * kdb_summary - This function implements the 'summary' command.
2515 static int kdb_summary(int argc
, const char **argv
)
2522 return KDB_ARGCOUNT
;
2524 kdb_printf("sysname %s\n", init_uts_ns
.name
.sysname
);
2525 kdb_printf("release %s\n", init_uts_ns
.name
.release
);
2526 kdb_printf("version %s\n", init_uts_ns
.name
.version
);
2527 kdb_printf("machine %s\n", init_uts_ns
.name
.machine
);
2528 kdb_printf("nodename %s\n", init_uts_ns
.name
.nodename
);
2529 kdb_printf("domainname %s\n", init_uts_ns
.name
.domainname
);
2531 now
= __ktime_get_real_seconds();
2532 time64_to_tm(now
, 0, &tm
);
2533 kdb_printf("date %04ld-%02d-%02d %02d:%02d:%02d "
2534 "tz_minuteswest %d\n",
2535 1900+tm
.tm_year
, tm
.tm_mon
+1, tm
.tm_mday
,
2536 tm
.tm_hour
, tm
.tm_min
, tm
.tm_sec
,
2537 sys_tz
.tz_minuteswest
);
2540 kdb_printf("uptime ");
2541 if (val
.uptime
> (24*60*60)) {
2542 int days
= val
.uptime
/ (24*60*60);
2543 val
.uptime
%= (24*60*60);
2544 kdb_printf("%d day%s ", days
, days
== 1 ? "" : "s");
2546 kdb_printf("%02ld:%02ld\n", val
.uptime
/(60*60), (val
.uptime
/60)%60);
2548 kdb_printf("load avg %ld.%02ld %ld.%02ld %ld.%02ld\n",
2549 LOAD_INT(val
.loads
[0]), LOAD_FRAC(val
.loads
[0]),
2550 LOAD_INT(val
.loads
[1]), LOAD_FRAC(val
.loads
[1]),
2551 LOAD_INT(val
.loads
[2]), LOAD_FRAC(val
.loads
[2]));
2553 /* Display in kilobytes */
2554 #define K(x) ((x) << (PAGE_SHIFT - 10))
2555 kdb_printf("\nMemTotal: %8lu kB\nMemFree: %8lu kB\n"
2556 "Buffers: %8lu kB\n",
2557 K(val
.totalram
), K(val
.freeram
), K(val
.bufferram
));
2562 * kdb_per_cpu - This function implements the 'per_cpu' command.
2564 static int kdb_per_cpu(int argc
, const char **argv
)
2567 int cpu
, diag
, nextarg
= 1;
2568 unsigned long addr
, symaddr
, val
, bytesperword
= 0, whichcpu
= ~0UL;
2570 if (argc
< 1 || argc
> 3)
2571 return KDB_ARGCOUNT
;
2573 diag
= kdbgetaddrarg(argc
, argv
, &nextarg
, &symaddr
, NULL
, NULL
);
2578 diag
= kdbgetularg(argv
[2], &bytesperword
);
2583 bytesperword
= KDB_WORD_SIZE
;
2584 else if (bytesperword
> KDB_WORD_SIZE
)
2585 return KDB_BADWIDTH
;
2586 sprintf(fmtstr
, "%%0%dlx ", (int)(2*bytesperword
));
2588 diag
= kdbgetularg(argv
[3], &whichcpu
);
2591 if (whichcpu
>= nr_cpu_ids
|| !cpu_online(whichcpu
)) {
2592 kdb_printf("cpu %ld is not online\n", whichcpu
);
2593 return KDB_BADCPUNUM
;
2597 /* Most architectures use __per_cpu_offset[cpu], some use
2598 * __per_cpu_offset(cpu), smp has no __per_cpu_offset.
2600 #ifdef __per_cpu_offset
2601 #define KDB_PCU(cpu) __per_cpu_offset(cpu)
2604 #define KDB_PCU(cpu) __per_cpu_offset[cpu]
2606 #define KDB_PCU(cpu) 0
2609 for_each_online_cpu(cpu
) {
2610 if (KDB_FLAG(CMD_INTERRUPT
))
2613 if (whichcpu
!= ~0UL && whichcpu
!= cpu
)
2615 addr
= symaddr
+ KDB_PCU(cpu
);
2616 diag
= kdb_getword(&val
, addr
, bytesperword
);
2618 kdb_printf("%5d " kdb_bfd_vma_fmt0
" - unable to "
2619 "read, diag=%d\n", cpu
, addr
, diag
);
2622 kdb_printf("%5d ", cpu
);
2623 kdb_md_line(fmtstr
, addr
,
2624 bytesperword
== KDB_WORD_SIZE
,
2625 1, bytesperword
, 1, 1, 0);
2632 * display help for the use of cmd | grep pattern
2634 static int kdb_grep_help(int argc
, const char **argv
)
2636 kdb_printf("Usage of cmd args | grep pattern:\n");
2637 kdb_printf(" Any command's output may be filtered through an ");
2638 kdb_printf("emulated 'pipe'.\n");
2639 kdb_printf(" 'grep' is just a key word.\n");
2640 kdb_printf(" The pattern may include a very limited set of "
2641 "metacharacters:\n");
2642 kdb_printf(" pattern or ^pattern or pattern$ or ^pattern$\n");
2643 kdb_printf(" And if there are spaces in the pattern, you may "
2645 kdb_printf(" \"pat tern\" or \"^pat tern\" or \"pat tern$\""
2646 " or \"^pat tern$\"\n");
2651 * kdb_register_flags - This function is used to register a kernel
2655 * func Function to execute the command
2656 * usage A simple usage string showing arguments
2657 * help A simple help string describing command
2658 * repeat Does the command auto repeat on enter?
2660 * zero for success, one if a duplicate command.
2662 #define kdb_command_extend 50 /* arbitrary */
2663 int kdb_register_flags(char *cmd
,
2668 kdb_cmdflags_t flags
)
2674 * Brute force method to determine duplicates
2676 for_each_kdbcmd(kp
, i
) {
2677 if (kp
->cmd_name
&& (strcmp(kp
->cmd_name
, cmd
) == 0)) {
2678 kdb_printf("Duplicate kdb command registered: "
2679 "%s, func %px help %s\n", cmd
, func
, help
);
2685 * Insert command into first available location in table
2687 for_each_kdbcmd(kp
, i
) {
2688 if (kp
->cmd_name
== NULL
)
2692 if (i
>= kdb_max_commands
) {
2693 kdbtab_t
*new = kmalloc_array(kdb_max_commands
-
2699 kdb_printf("Could not allocate new kdb_command "
2704 memcpy(new, kdb_commands
,
2705 (kdb_max_commands
- KDB_BASE_CMD_MAX
) * sizeof(*new));
2706 kfree(kdb_commands
);
2708 memset(new + kdb_max_commands
- KDB_BASE_CMD_MAX
, 0,
2709 kdb_command_extend
* sizeof(*new));
2711 kp
= kdb_commands
+ kdb_max_commands
- KDB_BASE_CMD_MAX
;
2712 kdb_max_commands
+= kdb_command_extend
;
2716 kp
->cmd_func
= func
;
2717 kp
->cmd_usage
= usage
;
2718 kp
->cmd_help
= help
;
2719 kp
->cmd_minlen
= minlen
;
2720 kp
->cmd_flags
= flags
;
2724 EXPORT_SYMBOL_GPL(kdb_register_flags
);
2728 * kdb_register - Compatibility register function for commands that do
2729 * not need to specify a repeat state. Equivalent to
2730 * kdb_register_flags with flags set to 0.
2733 * func Function to execute the command
2734 * usage A simple usage string showing arguments
2735 * help A simple help string describing command
2737 * zero for success, one if a duplicate command.
2739 int kdb_register(char *cmd
,
2745 return kdb_register_flags(cmd
, func
, usage
, help
, minlen
, 0);
2747 EXPORT_SYMBOL_GPL(kdb_register
);
2750 * kdb_unregister - This function is used to unregister a kernel
2751 * debugger command. It is generally called when a module which
2752 * implements kdb commands is unloaded.
2756 * zero for success, one command not registered.
2758 int kdb_unregister(char *cmd
)
2766 for_each_kdbcmd(kp
, i
) {
2767 if (kp
->cmd_name
&& (strcmp(kp
->cmd_name
, cmd
) == 0)) {
2768 kp
->cmd_name
= NULL
;
2773 /* Couldn't find it. */
2776 EXPORT_SYMBOL_GPL(kdb_unregister
);
2778 /* Initialize the kdb command table. */
2779 static void __init
kdb_inittab(void)
2784 for_each_kdbcmd(kp
, i
)
2785 kp
->cmd_name
= NULL
;
2787 kdb_register_flags("md", kdb_md
, "<vaddr>",
2788 "Display Memory Contents, also mdWcN, e.g. md8c1", 1,
2789 KDB_ENABLE_MEM_READ
| KDB_REPEAT_NO_ARGS
);
2790 kdb_register_flags("mdr", kdb_md
, "<vaddr> <bytes>",
2791 "Display Raw Memory", 0,
2792 KDB_ENABLE_MEM_READ
| KDB_REPEAT_NO_ARGS
);
2793 kdb_register_flags("mdp", kdb_md
, "<paddr> <bytes>",
2794 "Display Physical Memory", 0,
2795 KDB_ENABLE_MEM_READ
| KDB_REPEAT_NO_ARGS
);
2796 kdb_register_flags("mds", kdb_md
, "<vaddr>",
2797 "Display Memory Symbolically", 0,
2798 KDB_ENABLE_MEM_READ
| KDB_REPEAT_NO_ARGS
);
2799 kdb_register_flags("mm", kdb_mm
, "<vaddr> <contents>",
2800 "Modify Memory Contents", 0,
2801 KDB_ENABLE_MEM_WRITE
| KDB_REPEAT_NO_ARGS
);
2802 kdb_register_flags("go", kdb_go
, "[<vaddr>]",
2803 "Continue Execution", 1,
2804 KDB_ENABLE_REG_WRITE
| KDB_ENABLE_ALWAYS_SAFE_NO_ARGS
);
2805 kdb_register_flags("rd", kdb_rd
, "",
2806 "Display Registers", 0,
2807 KDB_ENABLE_REG_READ
);
2808 kdb_register_flags("rm", kdb_rm
, "<reg> <contents>",
2809 "Modify Registers", 0,
2810 KDB_ENABLE_REG_WRITE
);
2811 kdb_register_flags("ef", kdb_ef
, "<vaddr>",
2812 "Display exception frame", 0,
2813 KDB_ENABLE_MEM_READ
);
2814 kdb_register_flags("bt", kdb_bt
, "[<vaddr>]",
2815 "Stack traceback", 1,
2816 KDB_ENABLE_MEM_READ
| KDB_ENABLE_INSPECT_NO_ARGS
);
2817 kdb_register_flags("btp", kdb_bt
, "<pid>",
2818 "Display stack for process <pid>", 0,
2819 KDB_ENABLE_INSPECT
);
2820 kdb_register_flags("bta", kdb_bt
, "[D|R|S|T|C|Z|E|U|I|M|A]",
2821 "Backtrace all processes matching state flag", 0,
2822 KDB_ENABLE_INSPECT
);
2823 kdb_register_flags("btc", kdb_bt
, "",
2824 "Backtrace current process on each cpu", 0,
2825 KDB_ENABLE_INSPECT
);
2826 kdb_register_flags("btt", kdb_bt
, "<vaddr>",
2827 "Backtrace process given its struct task address", 0,
2828 KDB_ENABLE_MEM_READ
| KDB_ENABLE_INSPECT_NO_ARGS
);
2829 kdb_register_flags("env", kdb_env
, "",
2830 "Show environment variables", 0,
2831 KDB_ENABLE_ALWAYS_SAFE
);
2832 kdb_register_flags("set", kdb_set
, "",
2833 "Set environment variables", 0,
2834 KDB_ENABLE_ALWAYS_SAFE
);
2835 kdb_register_flags("help", kdb_help
, "",
2836 "Display Help Message", 1,
2837 KDB_ENABLE_ALWAYS_SAFE
);
2838 kdb_register_flags("?", kdb_help
, "",
2839 "Display Help Message", 0,
2840 KDB_ENABLE_ALWAYS_SAFE
);
2841 kdb_register_flags("cpu", kdb_cpu
, "<cpunum>",
2842 "Switch to new cpu", 0,
2843 KDB_ENABLE_ALWAYS_SAFE_NO_ARGS
);
2844 kdb_register_flags("kgdb", kdb_kgdb
, "",
2845 "Enter kgdb mode", 0, 0);
2846 kdb_register_flags("ps", kdb_ps
, "[<flags>|A]",
2847 "Display active task list", 0,
2848 KDB_ENABLE_INSPECT
);
2849 kdb_register_flags("pid", kdb_pid
, "<pidnum>",
2850 "Switch to another task", 0,
2851 KDB_ENABLE_INSPECT
);
2852 kdb_register_flags("reboot", kdb_reboot
, "",
2853 "Reboot the machine immediately", 0,
2855 #if defined(CONFIG_MODULES)
2856 kdb_register_flags("lsmod", kdb_lsmod
, "",
2857 "List loaded kernel modules", 0,
2858 KDB_ENABLE_INSPECT
);
2860 #if defined(CONFIG_MAGIC_SYSRQ)
2861 kdb_register_flags("sr", kdb_sr
, "<key>",
2862 "Magic SysRq key", 0,
2863 KDB_ENABLE_ALWAYS_SAFE
);
2865 #if defined(CONFIG_PRINTK)
2866 kdb_register_flags("dmesg", kdb_dmesg
, "[lines]",
2867 "Display syslog buffer", 0,
2868 KDB_ENABLE_ALWAYS_SAFE
);
2870 if (arch_kgdb_ops
.enable_nmi
) {
2871 kdb_register_flags("disable_nmi", kdb_disable_nmi
, "",
2872 "Disable NMI entry to KDB", 0,
2873 KDB_ENABLE_ALWAYS_SAFE
);
2875 kdb_register_flags("defcmd", kdb_defcmd
, "name \"usage\" \"help\"",
2876 "Define a set of commands, down to endefcmd", 0,
2877 KDB_ENABLE_ALWAYS_SAFE
);
2878 kdb_register_flags("kill", kdb_kill
, "<-signal> <pid>",
2879 "Send a signal to a process", 0,
2881 kdb_register_flags("summary", kdb_summary
, "",
2882 "Summarize the system", 4,
2883 KDB_ENABLE_ALWAYS_SAFE
);
2884 kdb_register_flags("per_cpu", kdb_per_cpu
, "<sym> [<bytes>] [<cpu>]",
2885 "Display per_cpu variables", 3,
2886 KDB_ENABLE_MEM_READ
);
2887 kdb_register_flags("grephelp", kdb_grep_help
, "",
2888 "Display help on | grep", 0,
2889 KDB_ENABLE_ALWAYS_SAFE
);
2892 /* Execute any commands defined in kdb_cmds. */
2893 static void __init
kdb_cmd_init(void)
2896 for (i
= 0; kdb_cmds
[i
]; ++i
) {
2897 diag
= kdb_parse(kdb_cmds
[i
]);
2899 kdb_printf("kdb command %s failed, kdb diag %d\n",
2902 if (defcmd_in_progress
) {
2903 kdb_printf("Incomplete 'defcmd' set, forcing endefcmd\n");
2904 kdb_parse("endefcmd");
2908 /* Initialize kdb_printf, breakpoint tables and kdb state */
2909 void __init
kdb_init(int lvl
)
2911 static int kdb_init_lvl
= KDB_NOT_INITIALIZED
;
2914 if (kdb_init_lvl
== KDB_INIT_FULL
|| lvl
<= kdb_init_lvl
)
2916 for (i
= kdb_init_lvl
; i
< lvl
; i
++) {
2918 case KDB_NOT_INITIALIZED
:
2919 kdb_inittab(); /* Initialize Command Table */
2920 kdb_initbptab(); /* Initialize Breakpoints */
2922 case KDB_INIT_EARLY
:
2923 kdb_cmd_init(); /* Build kdb_cmds tables */