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/string.h>
16 #include <linux/kernel.h>
17 #include <linux/kmsg_dump.h>
18 #include <linux/reboot.h>
19 #include <linux/sched.h>
20 #include <linux/sysrq.h>
21 #include <linux/smp.h>
22 #include <linux/utsname.h>
23 #include <linux/vmalloc.h>
24 #include <linux/atomic.h>
25 #include <linux/module.h>
27 #include <linux/init.h>
28 #include <linux/kallsyms.h>
29 #include <linux/kgdb.h>
30 #include <linux/kdb.h>
31 #include <linux/notifier.h>
32 #include <linux/interrupt.h>
33 #include <linux/delay.h>
34 #include <linux/nmi.h>
35 #include <linux/time.h>
36 #include <linux/ptrace.h>
37 #include <linux/sysctl.h>
38 #include <linux/cpu.h>
39 #include <linux/kdebug.h>
40 #include <linux/proc_fs.h>
41 #include <linux/uaccess.h>
42 #include <linux/slab.h>
43 #include "kdb_private.h"
46 char kdb_grep_string[GREP_LEN];
47 int kdb_grepping_flag;
48 EXPORT_SYMBOL(kdb_grepping_flag);
50 int kdb_grep_trailing;
53 * Kernel debugger state flags
59 * kdb_lock protects updates to kdb_initial_cpu. Used to
60 * single thread processors through the kernel debugger.
62 int kdb_initial_cpu = -1; /* cpu number that owns kdb */
64 int kdb_state; /* General KDB state */
66 struct task_struct *kdb_current_task;
67 EXPORT_SYMBOL(kdb_current_task);
68 struct pt_regs *kdb_current_regs;
70 const char *kdb_diemsg;
71 static int kdb_go_count;
72 #ifdef CONFIG_KDB_CONTINUE_CATASTROPHIC
73 static unsigned int kdb_continue_catastrophic =
74 CONFIG_KDB_CONTINUE_CATASTROPHIC;
76 static unsigned int kdb_continue_catastrophic;
79 /* kdb_commands describes the available commands. */
80 static kdbtab_t *kdb_commands;
81 #define KDB_BASE_CMD_MAX 50
82 static int kdb_max_commands = KDB_BASE_CMD_MAX;
83 static kdbtab_t kdb_base_commands[KDB_BASE_CMD_MAX];
84 #define for_each_kdbcmd(cmd, num) \
85 for ((cmd) = kdb_base_commands, (num) = 0; \
86 num < kdb_max_commands; \
87 num++, num == KDB_BASE_CMD_MAX ? cmd = kdb_commands : cmd++)
89 typedef struct _kdbmsg {
90 int km_diag; /* kdb diagnostic */
91 char *km_msg; /* Corresponding message text */
94 #define KDBMSG(msgnum, text) \
95 { KDB_##msgnum, text }
97 static kdbmsg_t kdbmsgs[] = {
98 KDBMSG(NOTFOUND, "Command Not Found"),
99 KDBMSG(ARGCOUNT, "Improper argument count, see usage."),
100 KDBMSG(BADWIDTH, "Illegal value for BYTESPERWORD use 1, 2, 4 or 8, "
101 "8 is only allowed on 64 bit systems"),
102 KDBMSG(BADRADIX, "Illegal value for RADIX use 8, 10 or 16"),
103 KDBMSG(NOTENV, "Cannot find environment variable"),
104 KDBMSG(NOENVVALUE, "Environment variable should have value"),
105 KDBMSG(NOTIMP, "Command not implemented"),
106 KDBMSG(ENVFULL, "Environment full"),
107 KDBMSG(ENVBUFFULL, "Environment buffer full"),
108 KDBMSG(TOOMANYBPT, "Too many breakpoints defined"),
109 #ifdef CONFIG_CPU_XSCALE
110 KDBMSG(TOOMANYDBREGS, "More breakpoints than ibcr registers defined"),
112 KDBMSG(TOOMANYDBREGS, "More breakpoints than db registers defined"),
114 KDBMSG(DUPBPT, "Duplicate breakpoint address"),
115 KDBMSG(BPTNOTFOUND, "Breakpoint not found"),
116 KDBMSG(BADMODE, "Invalid IDMODE"),
117 KDBMSG(BADINT, "Illegal numeric value"),
118 KDBMSG(INVADDRFMT, "Invalid symbolic address format"),
119 KDBMSG(BADREG, "Invalid register name"),
120 KDBMSG(BADCPUNUM, "Invalid cpu number"),
121 KDBMSG(BADLENGTH, "Invalid length field"),
122 KDBMSG(NOBP, "No Breakpoint exists"),
123 KDBMSG(BADADDR, "Invalid address"),
127 static const int __nkdb_err = ARRAY_SIZE(kdbmsgs);
131 * Initial environment. This is all kept static and local to
132 * this file. We don't want to rely on the memory allocation
133 * mechanisms in the kernel, so we use a very limited allocate-only
134 * heap for new and altered environment variables. The entire
135 * environment is limited to a fixed number of entries (add more
136 * to __env[] if required) and a fixed amount of heap (add more to
137 * KDB_ENVBUFSIZE if required).
140 static char *__env[] = {
141 #if defined(CONFIG_SMP)
148 "MDCOUNT=8", /* lines of md output */
178 static const int __nenv = ARRAY_SIZE(__env);
180 struct task_struct *kdb_curr_task(int cpu)
182 struct task_struct *p = curr_task(cpu);
184 if ((task_thread_info(p)->flags & _TIF_MCA_INIT) && KDB_TSK(cpu))
191 * Check whether the flags of the current command and the permissions
192 * of the kdb console has allow a command to be run.
194 static inline bool kdb_check_flags(kdb_cmdflags_t flags, int permissions,
197 /* permissions comes from userspace so needs massaging slightly */
198 permissions &= KDB_ENABLE_MASK;
199 permissions |= KDB_ENABLE_ALWAYS_SAFE;
201 /* some commands change group when launched with no arguments */
203 permissions |= permissions << KDB_ENABLE_NO_ARGS_SHIFT;
205 flags |= KDB_ENABLE_ALL;
207 return permissions & flags;
211 * kdbgetenv - This function will return the character string value of
212 * an environment variable.
214 * match A character string representing an environment variable.
216 * NULL No environment variable matches 'match'
217 * char* Pointer to string value of environment variable.
219 char *kdbgetenv(const char *match)
222 int matchlen = strlen(match);
225 for (i = 0; i < __nenv; i++) {
231 if ((strncmp(match, e, matchlen) == 0)
232 && ((e[matchlen] == '\0')
233 || (e[matchlen] == '='))) {
234 char *cp = strchr(e, '=');
235 return cp ? ++cp : "";
242 * kdballocenv - This function is used to allocate bytes for
243 * environment entries.
245 * match A character string representing a numeric value
247 * *value the unsigned long representation of the env variable 'match'
249 * Zero on success, a kdb diagnostic on failure.
251 * We use a static environment buffer (envbuffer) to hold the values
252 * of dynamically generated environment variables (see kdb_set). Buffer
253 * space once allocated is never free'd, so over time, the amount of space
254 * (currently 512 bytes) will be exhausted if env variables are changed
257 static char *kdballocenv(size_t bytes)
259 #define KDB_ENVBUFSIZE 512
260 static char envbuffer[KDB_ENVBUFSIZE];
261 static int envbufsize;
264 if ((KDB_ENVBUFSIZE - envbufsize) >= bytes) {
265 ep = &envbuffer[envbufsize];
272 * kdbgetulenv - This function will return the value of an unsigned
273 * long-valued environment variable.
275 * match A character string representing a numeric value
277 * *value the unsigned long represntation of the env variable 'match'
279 * Zero on success, a kdb diagnostic on failure.
281 static int kdbgetulenv(const char *match, unsigned long *value)
285 ep = kdbgetenv(match);
289 return KDB_NOENVVALUE;
291 *value = simple_strtoul(ep, NULL, 0);
297 * kdbgetintenv - This function will return the value of an
298 * integer-valued environment variable.
300 * match A character string representing an integer-valued env variable
302 * *value the integer representation of the environment variable 'match'
304 * Zero on success, a kdb diagnostic on failure.
306 int kdbgetintenv(const char *match, int *value)
311 diag = kdbgetulenv(match, &val);
318 * kdbgetularg - This function will convert a numeric string into an
319 * unsigned long value.
321 * arg A character string representing a numeric value
323 * *value the unsigned long represntation of arg.
325 * Zero on success, a kdb diagnostic on failure.
327 int kdbgetularg(const char *arg, unsigned long *value)
332 val = simple_strtoul(arg, &endp, 0);
336 * Also try base 16, for us folks too lazy to type the
339 val = simple_strtoul(arg, &endp, 16);
349 int kdbgetu64arg(const char *arg, u64 *value)
354 val = simple_strtoull(arg, &endp, 0);
358 val = simple_strtoull(arg, &endp, 16);
369 * kdb_set - This function implements the 'set' command. Alter an
370 * existing environment variable or create a new one.
372 int kdb_set(int argc, const char **argv)
376 size_t varlen, vallen;
379 * we can be invoked two ways:
380 * set var=value argv[1]="var", argv[2]="value"
381 * set var = value argv[1]="var", argv[2]="=", argv[3]="value"
382 * - if the latter, shift 'em down.
393 * Check for internal variables
395 if (strcmp(argv[1], "KDBDEBUG") == 0) {
396 unsigned int debugflags;
399 debugflags = simple_strtoul(argv[2], &cp, 0);
400 if (cp == argv[2] || debugflags & ~KDB_DEBUG_FLAG_MASK) {
401 kdb_printf("kdb: illegal debug flags '%s'\n",
405 kdb_flags = (kdb_flags &
406 ~(KDB_DEBUG_FLAG_MASK << KDB_DEBUG_FLAG_SHIFT))
407 | (debugflags << KDB_DEBUG_FLAG_SHIFT);
413 * Tokenizer squashed the '=' sign. argv[1] is variable
414 * name, argv[2] = value.
416 varlen = strlen(argv[1]);
417 vallen = strlen(argv[2]);
418 ep = kdballocenv(varlen + vallen + 2);
420 return KDB_ENVBUFFULL;
422 sprintf(ep, "%s=%s", argv[1], argv[2]);
424 ep[varlen+vallen+1] = '\0';
426 for (i = 0; i < __nenv; i++) {
428 && ((strncmp(__env[i], argv[1], varlen) == 0)
429 && ((__env[i][varlen] == '\0')
430 || (__env[i][varlen] == '=')))) {
437 * Wasn't existing variable. Fit into slot.
439 for (i = 0; i < __nenv-1; i++) {
440 if (__env[i] == (char *)0) {
449 static int kdb_check_regs(void)
451 if (!kdb_current_regs) {
452 kdb_printf("No current kdb registers."
453 " You may need to select another task\n");
460 * kdbgetaddrarg - This function is responsible for parsing an
461 * address-expression and returning the value of the expression,
462 * symbol name, and offset to the caller.
464 * The argument may consist of a numeric value (decimal or
465 * hexidecimal), a symbol name, a register name (preceded by the
466 * percent sign), an environment variable with a numeric value
467 * (preceded by a dollar sign) or a simple arithmetic expression
468 * consisting of a symbol name, +/-, and a numeric constant value
471 * argc - count of arguments in argv
472 * argv - argument vector
473 * *nextarg - index to next unparsed argument in argv[]
474 * regs - Register state at time of KDB entry
476 * *value - receives the value of the address-expression
477 * *offset - receives the offset specified, if any
478 * *name - receives the symbol name, if any
479 * *nextarg - index to next unparsed argument in argv[]
481 * zero is returned on success, a kdb diagnostic code is
484 int kdbgetaddrarg(int argc, const char **argv, int *nextarg,
485 unsigned long *value, long *offset,
489 unsigned long off = 0;
499 * Process arguments which follow the following syntax:
501 * symbol | numeric-address [+/- numeric-offset]
503 * $environment-variable
509 symname = (char *)argv[*nextarg];
512 * If there is no whitespace between the symbol
513 * or address and the '+' or '-' symbols, we
514 * remember the character and replace it with a
515 * null so the symbol/value can be properly parsed
517 cp = strpbrk(symname, "+-");
523 if (symname[0] == '$') {
524 diag = kdbgetulenv(&symname[1], &addr);
527 } else if (symname[0] == '%') {
528 diag = kdb_check_regs();
531 /* Implement register values with % at a later time as it is
536 found = kdbgetsymval(symname, &symtab);
538 addr = symtab.sym_start;
540 diag = kdbgetularg(argv[*nextarg], &addr);
547 found = kdbnearsym(addr, &symtab);
555 if (offset && name && *name)
556 *offset = addr - symtab.sym_start;
558 if ((*nextarg > argc)
563 * check for +/- and offset
566 if (symbol == '\0') {
567 if ((argv[*nextarg][0] != '+')
568 && (argv[*nextarg][0] != '-')) {
570 * Not our argument. Return.
574 positive = (argv[*nextarg][0] == '+');
578 positive = (symbol == '+');
581 * Now there must be an offset!
583 if ((*nextarg > argc)
584 && (symbol == '\0')) {
585 return KDB_INVADDRFMT;
589 cp = (char *)argv[*nextarg];
593 diag = kdbgetularg(cp, &off);
609 static void kdb_cmderror(int diag)
614 kdb_printf("no error detected (diagnostic is %d)\n", diag);
618 for (i = 0; i < __nkdb_err; i++) {
619 if (kdbmsgs[i].km_diag == diag) {
620 kdb_printf("diag: %d: %s\n", diag, kdbmsgs[i].km_msg);
625 kdb_printf("Unknown diag %d\n", -diag);
629 * kdb_defcmd, kdb_defcmd2 - This function implements the 'defcmd'
630 * command which defines one command as a set of other commands,
631 * terminated by endefcmd. kdb_defcmd processes the initial
632 * 'defcmd' command, kdb_defcmd2 is invoked from kdb_parse for
633 * the following commands until 'endefcmd'.
635 * argc argument count
636 * argv argument vector
638 * zero for success, a kdb diagnostic if error
648 static struct defcmd_set *defcmd_set;
649 static int defcmd_set_count;
650 static int defcmd_in_progress;
652 /* Forward references */
653 static int kdb_exec_defcmd(int argc, const char **argv);
655 static int kdb_defcmd2(const char *cmdstr, const char *argv0)
657 struct defcmd_set *s = defcmd_set + defcmd_set_count - 1;
658 char **save_command = s->command;
659 if (strcmp(argv0, "endefcmd") == 0) {
660 defcmd_in_progress = 0;
664 /* macros are always safe because when executed each
665 * internal command re-enters kdb_parse() and is
666 * safety checked individually.
668 kdb_register_flags(s->name, kdb_exec_defcmd, s->usage,
670 KDB_ENABLE_ALWAYS_SAFE);
675 s->command = kzalloc((s->count + 1) * sizeof(*(s->command)), GFP_KDB);
677 kdb_printf("Could not allocate new kdb_defcmd table for %s\n",
682 memcpy(s->command, save_command, s->count * sizeof(*(s->command)));
683 s->command[s->count++] = kdb_strdup(cmdstr, GFP_KDB);
688 static int kdb_defcmd(int argc, const char **argv)
690 struct defcmd_set *save_defcmd_set = defcmd_set, *s;
691 if (defcmd_in_progress) {
692 kdb_printf("kdb: nested defcmd detected, assuming missing "
694 kdb_defcmd2("endefcmd", "endefcmd");
698 for (s = defcmd_set; s < defcmd_set + defcmd_set_count; ++s) {
699 kdb_printf("defcmd %s \"%s\" \"%s\"\n", s->name,
701 for (i = 0; i < s->count; ++i)
702 kdb_printf("%s", s->command[i]);
703 kdb_printf("endefcmd\n");
709 if (in_dbg_master()) {
710 kdb_printf("Command only available during kdb_init()\n");
713 defcmd_set = kmalloc((defcmd_set_count + 1) * sizeof(*defcmd_set),
717 memcpy(defcmd_set, save_defcmd_set,
718 defcmd_set_count * sizeof(*defcmd_set));
719 s = defcmd_set + defcmd_set_count;
720 memset(s, 0, sizeof(*s));
722 s->name = kdb_strdup(argv[1], GFP_KDB);
725 s->usage = kdb_strdup(argv[2], GFP_KDB);
728 s->help = kdb_strdup(argv[3], GFP_KDB);
731 if (s->usage[0] == '"') {
732 strcpy(s->usage, argv[2]+1);
733 s->usage[strlen(s->usage)-1] = '\0';
735 if (s->help[0] == '"') {
736 strcpy(s->help, argv[3]+1);
737 s->help[strlen(s->help)-1] = '\0';
740 defcmd_in_progress = 1;
741 kfree(save_defcmd_set);
750 kdb_printf("Could not allocate new defcmd_set entry for %s\n", argv[1]);
751 defcmd_set = save_defcmd_set;
756 * kdb_exec_defcmd - Execute the set of commands associated with this
759 * argc argument count
760 * argv argument vector
762 * zero for success, a kdb diagnostic if error
764 static int kdb_exec_defcmd(int argc, const char **argv)
767 struct defcmd_set *s;
770 for (s = defcmd_set, i = 0; i < defcmd_set_count; ++i, ++s) {
771 if (strcmp(s->name, argv[0]) == 0)
774 if (i == defcmd_set_count) {
775 kdb_printf("kdb_exec_defcmd: could not find commands for %s\n",
779 for (i = 0; i < s->count; ++i) {
780 /* Recursive use of kdb_parse, do not use argv after
783 kdb_printf("[%s]kdb> %s\n", s->name, s->command[i]);
784 ret = kdb_parse(s->command[i]);
791 /* Command history */
792 #define KDB_CMD_HISTORY_COUNT 32
793 #define CMD_BUFLEN 200 /* kdb_printf: max printline
795 static unsigned int cmd_head, cmd_tail;
796 static unsigned int cmdptr;
797 static char cmd_hist[KDB_CMD_HISTORY_COUNT][CMD_BUFLEN];
798 static char cmd_cur[CMD_BUFLEN];
801 * The "str" argument may point to something like | grep xyz
803 static void parse_grep(const char *str)
806 char *cp = (char *)str, *cp2;
808 /* sanity check: we should have been called with the \ first */
814 if (strncmp(cp, "grep ", 5)) {
815 kdb_printf("invalid 'pipe', see grephelp\n");
821 cp2 = strchr(cp, '\n');
823 *cp2 = '\0'; /* remove the trailing newline */
826 kdb_printf("invalid 'pipe', see grephelp\n");
829 /* now cp points to a nonzero length search string */
831 /* allow it be "x y z" by removing the "'s - there must
834 cp2 = strchr(cp, '"');
836 kdb_printf("invalid quoted string, see grephelp\n");
839 *cp2 = '\0'; /* end the string where the 2nd " was */
841 kdb_grep_leading = 0;
843 kdb_grep_leading = 1;
847 kdb_grep_trailing = 0;
848 if (*(cp+len-1) == '$') {
849 kdb_grep_trailing = 1;
855 if (len >= GREP_LEN) {
856 kdb_printf("search string too long\n");
859 strcpy(kdb_grep_string, cp);
865 * kdb_parse - Parse the command line, search the command table for a
866 * matching command and invoke the command function. This
867 * function may be called recursively, if it is, the second call
868 * will overwrite argv and cbuf. It is the caller's
869 * responsibility to save their argv if they recursively call
872 * cmdstr The input command line to be parsed.
873 * regs The registers at the time kdb was entered.
875 * Zero for success, a kdb diagnostic if failure.
877 * Limited to 20 tokens.
879 * Real rudimentary tokenization. Basically only whitespace
880 * is considered a token delimeter (but special consideration
881 * is taken of the '=' sign as used by the 'set' command).
883 * The algorithm used to tokenize the input string relies on
884 * there being at least one whitespace (or otherwise useless)
885 * character between tokens as the character immediately following
886 * the token is altered in-place to a null-byte to terminate the
892 int kdb_parse(const char *cmdstr)
894 static char *argv[MAXARGC];
896 static char cbuf[CMD_BUFLEN+2];
900 int i, escaped, ignore_errors = 0, check_grep;
903 * First tokenize the command string.
906 kdb_grepping_flag = check_grep = 0;
908 if (KDB_FLAG(CMD_INTERRUPT)) {
909 /* Previous command was interrupted, newline must not
910 * repeat the command */
911 KDB_FLAG_CLEAR(CMD_INTERRUPT);
912 KDB_STATE_SET(PAGER);
913 argc = 0; /* no repeat */
916 if (*cp != '\n' && *cp != '\0') {
920 /* skip whitespace */
923 if ((*cp == '\0') || (*cp == '\n') ||
924 (*cp == '#' && !defcmd_in_progress))
926 /* special case: check for | grep pattern */
931 if (cpp >= cbuf + CMD_BUFLEN) {
932 kdb_printf("kdb_parse: command buffer "
933 "overflow, command ignored\n%s\n",
937 if (argc >= MAXARGC - 1) {
938 kdb_printf("kdb_parse: too many arguments, "
939 "command ignored\n%s\n", cmdstr);
945 /* Copy to next unquoted and unescaped
946 * whitespace or '=' */
947 while (*cp && *cp != '\n' &&
948 (escaped || quoted || !isspace(*cp))) {
949 if (cpp >= cbuf + CMD_BUFLEN)
963 else if (*cp == '\'' || *cp == '"')
966 if (*cpp == '=' && !quoted)
970 *cpp++ = '\0'; /* Squash a ws or '=' character */
977 if (defcmd_in_progress) {
978 int result = kdb_defcmd2(cmdstr, argv[0]);
979 if (!defcmd_in_progress) {
980 argc = 0; /* avoid repeat on endefcmd */
985 if (argv[0][0] == '-' && argv[0][1] &&
986 (argv[0][1] < '0' || argv[0][1] > '9')) {
991 for_each_kdbcmd(tp, i) {
994 * If this command is allowed to be abbreviated,
995 * check to see if this is it.
999 && (strlen(argv[0]) <= tp->cmd_minlen)) {
1000 if (strncmp(argv[0],
1002 tp->cmd_minlen) == 0) {
1007 if (strcmp(argv[0], tp->cmd_name) == 0)
1013 * If we don't find a command by this name, see if the first
1014 * few characters of this match any of the known commands.
1015 * e.g., md1c20 should match md.
1017 if (i == kdb_max_commands) {
1018 for_each_kdbcmd(tp, i) {
1020 if (strncmp(argv[0],
1022 strlen(tp->cmd_name)) == 0) {
1029 if (i < kdb_max_commands) {
1032 result = (*tp->cmd_func)(argc-1, (const char **)argv);
1033 if (result && ignore_errors && result > KDB_CMD_GO)
1035 KDB_STATE_CLEAR(CMD);
1037 if (tp->cmd_flags & KDB_REPEAT_WITH_ARGS)
1040 argc = tp->cmd_flags & KDB_REPEAT_NO_ARGS ? 1 : 0;
1042 *(argv[argc]) = '\0';
1047 * If the input with which we were presented does not
1048 * map to an existing command, attempt to parse it as an
1049 * address argument and display the result. Useful for
1050 * obtaining the address of a variable, or the nearest symbol
1051 * to an address contained in a register.
1054 unsigned long value;
1059 if (kdbgetaddrarg(0, (const char **)argv, &nextarg,
1060 &value, &offset, &name)) {
1061 return KDB_NOTFOUND;
1064 kdb_printf("%s = ", argv[0]);
1065 kdb_symbol_print(value, NULL, KDB_SP_DEFAULT);
1072 static int handle_ctrl_cmd(char *cmd)
1077 /* initial situation */
1078 if (cmd_head == cmd_tail)
1082 if (cmdptr != cmd_tail)
1083 cmdptr = (cmdptr-1) % KDB_CMD_HISTORY_COUNT;
1084 strncpy(cmd_cur, cmd_hist[cmdptr], CMD_BUFLEN);
1087 if (cmdptr != cmd_head)
1088 cmdptr = (cmdptr+1) % KDB_CMD_HISTORY_COUNT;
1089 strncpy(cmd_cur, cmd_hist[cmdptr], CMD_BUFLEN);
1096 * kdb_reboot - This function implements the 'reboot' command. Reboot
1097 * the system immediately, or loop for ever on failure.
1099 static int kdb_reboot(int argc, const char **argv)
1101 emergency_restart();
1102 kdb_printf("Hmm, kdb_reboot did not reboot, spinning here\n");
1109 static void kdb_dumpregs(struct pt_regs *regs)
1111 int old_lvl = console_loglevel;
1112 console_loglevel = CONSOLE_LOGLEVEL_MOTORMOUTH;
1117 console_loglevel = old_lvl;
1120 void kdb_set_current_task(struct task_struct *p)
1122 kdb_current_task = p;
1124 if (kdb_task_has_cpu(p)) {
1125 kdb_current_regs = KDB_TSKREGS(kdb_process_cpu(p));
1128 kdb_current_regs = NULL;
1132 * kdb_local - The main code for kdb. This routine is invoked on a
1133 * specific processor, it is not global. The main kdb() routine
1134 * ensures that only one processor at a time is in this routine.
1135 * This code is called with the real reason code on the first
1136 * entry to a kdb session, thereafter it is called with reason
1137 * SWITCH, even if the user goes back to the original cpu.
1139 * reason The reason KDB was invoked
1140 * error The hardware-defined error code
1141 * regs The exception frame at time of fault/breakpoint.
1142 * db_result Result code from the break or debug point.
1144 * 0 KDB was invoked for an event which it wasn't responsible
1145 * 1 KDB handled the event for which it was invoked.
1146 * KDB_CMD_GO User typed 'go'.
1147 * KDB_CMD_CPU User switched to another cpu.
1148 * KDB_CMD_SS Single step.
1150 static int kdb_local(kdb_reason_t reason, int error, struct pt_regs *regs,
1151 kdb_dbtrap_t db_result)
1155 struct task_struct *kdb_current =
1156 kdb_curr_task(raw_smp_processor_id());
1158 KDB_DEBUG_STATE("kdb_local 1", reason);
1160 if (reason == KDB_REASON_DEBUG) {
1161 /* special case below */
1163 kdb_printf("\nEntering kdb (current=0x%p, pid %d) ",
1164 kdb_current, kdb_current ? kdb_current->pid : 0);
1165 #if defined(CONFIG_SMP)
1166 kdb_printf("on processor %d ", raw_smp_processor_id());
1171 case KDB_REASON_DEBUG:
1174 * If re-entering kdb after a single step
1175 * command, don't print the message.
1177 switch (db_result) {
1179 kdb_printf("\nEntering kdb (0x%p, pid %d) ",
1180 kdb_current, kdb_current->pid);
1181 #if defined(CONFIG_SMP)
1182 kdb_printf("on processor %d ", raw_smp_processor_id());
1184 kdb_printf("due to Debug @ " kdb_machreg_fmt "\n",
1185 instruction_pointer(regs));
1190 KDB_DEBUG_STATE("kdb_local 4", reason);
1191 return 1; /* kdba_db_trap did the work */
1193 kdb_printf("kdb: Bad result from kdba_db_trap: %d\n",
1200 case KDB_REASON_ENTER:
1201 if (KDB_STATE(KEYBOARD))
1202 kdb_printf("due to Keyboard Entry\n");
1204 kdb_printf("due to KDB_ENTER()\n");
1206 case KDB_REASON_KEYBOARD:
1207 KDB_STATE_SET(KEYBOARD);
1208 kdb_printf("due to Keyboard Entry\n");
1210 case KDB_REASON_ENTER_SLAVE:
1211 /* drop through, slaves only get released via cpu switch */
1212 case KDB_REASON_SWITCH:
1213 kdb_printf("due to cpu switch\n");
1215 case KDB_REASON_OOPS:
1216 kdb_printf("Oops: %s\n", kdb_diemsg);
1217 kdb_printf("due to oops @ " kdb_machreg_fmt "\n",
1218 instruction_pointer(regs));
1221 case KDB_REASON_SYSTEM_NMI:
1222 kdb_printf("due to System NonMaskable Interrupt\n");
1224 case KDB_REASON_NMI:
1225 kdb_printf("due to NonMaskable Interrupt @ "
1226 kdb_machreg_fmt "\n",
1227 instruction_pointer(regs));
1230 case KDB_REASON_SSTEP:
1231 case KDB_REASON_BREAK:
1232 kdb_printf("due to %s @ " kdb_machreg_fmt "\n",
1233 reason == KDB_REASON_BREAK ?
1234 "Breakpoint" : "SS trap", instruction_pointer(regs));
1236 * Determine if this breakpoint is one that we
1237 * are interested in.
1239 if (db_result != KDB_DB_BPT) {
1240 kdb_printf("kdb: error return from kdba_bp_trap: %d\n",
1242 KDB_DEBUG_STATE("kdb_local 6", reason);
1243 return 0; /* Not for us, dismiss it */
1246 case KDB_REASON_RECURSE:
1247 kdb_printf("due to Recursion @ " kdb_machreg_fmt "\n",
1248 instruction_pointer(regs));
1251 kdb_printf("kdb: unexpected reason code: %d\n", reason);
1252 KDB_DEBUG_STATE("kdb_local 8", reason);
1253 return 0; /* Not for us, dismiss it */
1258 * Initialize pager context.
1261 KDB_STATE_CLEAR(SUPPRESS);
1265 *(cmd_hist[cmd_head]) = '\0';
1268 #if defined(CONFIG_SMP)
1269 snprintf(kdb_prompt_str, CMD_BUFLEN, kdbgetenv("PROMPT"),
1270 raw_smp_processor_id());
1272 snprintf(kdb_prompt_str, CMD_BUFLEN, kdbgetenv("PROMPT"));
1274 if (defcmd_in_progress)
1275 strncat(kdb_prompt_str, "[defcmd]", CMD_BUFLEN);
1278 * Fetch command from keyboard
1280 cmdbuf = kdb_getstr(cmdbuf, CMD_BUFLEN, kdb_prompt_str);
1281 if (*cmdbuf != '\n') {
1283 if (cmdptr == cmd_head) {
1284 strncpy(cmd_hist[cmd_head], cmd_cur,
1286 *(cmd_hist[cmd_head] +
1287 strlen(cmd_hist[cmd_head])-1) = '\0';
1289 if (!handle_ctrl_cmd(cmdbuf))
1290 *(cmd_cur+strlen(cmd_cur)-1) = '\0';
1292 goto do_full_getstr;
1294 strncpy(cmd_hist[cmd_head], cmd_cur,
1298 cmd_head = (cmd_head+1) % KDB_CMD_HISTORY_COUNT;
1299 if (cmd_head == cmd_tail)
1300 cmd_tail = (cmd_tail+1) % KDB_CMD_HISTORY_COUNT;
1304 diag = kdb_parse(cmdbuf);
1305 if (diag == KDB_NOTFOUND) {
1306 kdb_printf("Unknown kdb command: '%s'\n", cmdbuf);
1309 if (diag == KDB_CMD_GO
1310 || diag == KDB_CMD_CPU
1311 || diag == KDB_CMD_SS
1312 || diag == KDB_CMD_KGDB)
1318 KDB_DEBUG_STATE("kdb_local 9", diag);
1324 * kdb_print_state - Print the state data for the current processor
1327 * text Identifies the debug point
1328 * value Any integer value to be printed, e.g. reason code.
1330 void kdb_print_state(const char *text, int value)
1332 kdb_printf("state: %s cpu %d value %d initial %d state %x\n",
1333 text, raw_smp_processor_id(), value, kdb_initial_cpu,
1338 * kdb_main_loop - After initial setup and assignment of the
1339 * controlling cpu, all cpus are in this loop. One cpu is in
1340 * control and will issue the kdb prompt, the others will spin
1341 * until 'go' or cpu switch.
1343 * To get a consistent view of the kernel stacks for all
1344 * processes, this routine is invoked from the main kdb code via
1345 * an architecture specific routine. kdba_main_loop is
1346 * responsible for making the kernel stacks consistent for all
1347 * processes, there should be no difference between a blocked
1348 * process and a running process as far as kdb is concerned.
1350 * reason The reason KDB was invoked
1351 * error The hardware-defined error code
1352 * reason2 kdb's current reason code.
1353 * Initially error but can change
1354 * according to kdb state.
1355 * db_result Result code from break or debug point.
1356 * regs The exception frame at time of fault/breakpoint.
1357 * should always be valid.
1359 * 0 KDB was invoked for an event which it wasn't responsible
1360 * 1 KDB handled the event for which it was invoked.
1362 int kdb_main_loop(kdb_reason_t reason, kdb_reason_t reason2, int error,
1363 kdb_dbtrap_t db_result, struct pt_regs *regs)
1366 /* Stay in kdb() until 'go', 'ss[b]' or an error */
1369 * All processors except the one that is in control
1372 KDB_DEBUG_STATE("kdb_main_loop 1", reason);
1373 while (KDB_STATE(HOLD_CPU)) {
1374 /* state KDB is turned off by kdb_cpu to see if the
1375 * other cpus are still live, each cpu in this loop
1378 if (!KDB_STATE(KDB))
1382 KDB_STATE_CLEAR(SUPPRESS);
1383 KDB_DEBUG_STATE("kdb_main_loop 2", reason);
1384 if (KDB_STATE(LEAVING))
1385 break; /* Another cpu said 'go' */
1386 /* Still using kdb, this processor is in control */
1387 result = kdb_local(reason2, error, regs, db_result);
1388 KDB_DEBUG_STATE("kdb_main_loop 3", result);
1390 if (result == KDB_CMD_CPU)
1393 if (result == KDB_CMD_SS) {
1394 KDB_STATE_SET(DOING_SS);
1398 if (result == KDB_CMD_KGDB) {
1399 if (!KDB_STATE(DOING_KGDB))
1400 kdb_printf("Entering please attach debugger "
1401 "or use $D#44+ or $3#33\n");
1404 if (result && result != 1 && result != KDB_CMD_GO)
1405 kdb_printf("\nUnexpected kdb_local return code %d\n",
1407 KDB_DEBUG_STATE("kdb_main_loop 4", reason);
1410 if (KDB_STATE(DOING_SS))
1411 KDB_STATE_CLEAR(SSBPT);
1413 /* Clean up any keyboard devices before leaving */
1414 kdb_kbd_cleanup_state();
1420 * kdb_mdr - This function implements the guts of the 'mdr', memory
1422 * mdr <addr arg>,<byte count>
1424 * addr Start address
1425 * count Number of bytes
1427 * Always 0. Any errors are detected and printed by kdb_getarea.
1429 static int kdb_mdr(unsigned long addr, unsigned int count)
1433 if (kdb_getarea(c, addr))
1435 kdb_printf("%02x", c);
1443 * kdb_md - This function implements the 'md', 'md1', 'md2', 'md4',
1444 * 'md8' 'mdr' and 'mds' commands.
1446 * md|mds [<addr arg> [<line count> [<radix>]]]
1447 * mdWcN [<addr arg> [<line count> [<radix>]]]
1448 * where W = is the width (1, 2, 4 or 8) and N is the count.
1449 * for eg., md1c20 reads 20 bytes, 1 at a time.
1450 * mdr <addr arg>,<byte count>
1452 static void kdb_md_line(const char *fmtstr, unsigned long addr,
1453 int symbolic, int nosect, int bytesperword,
1454 int num, int repeat, int phys)
1456 /* print just one line of data */
1457 kdb_symtab_t symtab;
1463 memset(cbuf, '\0', sizeof(cbuf));
1465 kdb_printf("phys " kdb_machreg_fmt0 " ", addr);
1467 kdb_printf(kdb_machreg_fmt0 " ", addr);
1469 for (i = 0; i < num && repeat--; i++) {
1471 if (kdb_getphysword(&word, addr, bytesperword))
1473 } else if (kdb_getword(&word, addr, bytesperword))
1475 kdb_printf(fmtstr, word);
1477 kdbnearsym(word, &symtab);
1479 memset(&symtab, 0, sizeof(symtab));
1480 if (symtab.sym_name) {
1481 kdb_symbol_print(word, &symtab, 0);
1484 kdb_printf(" %s %s "
1487 kdb_machreg_fmt, symtab.mod_name,
1488 symtab.sec_name, symtab.sec_start,
1489 symtab.sym_start, symtab.sym_end);
1491 addr += bytesperword;
1499 cp = wc.c + 8 - bytesperword;
1504 #define printable_char(c) \
1505 ({unsigned char __c = c; isascii(__c) && isprint(__c) ? __c : '.'; })
1506 switch (bytesperword) {
1508 *c++ = printable_char(*cp++);
1509 *c++ = printable_char(*cp++);
1510 *c++ = printable_char(*cp++);
1511 *c++ = printable_char(*cp++);
1514 *c++ = printable_char(*cp++);
1515 *c++ = printable_char(*cp++);
1518 *c++ = printable_char(*cp++);
1521 *c++ = printable_char(*cp++);
1525 #undef printable_char
1528 kdb_printf("%*s %s\n", (int)((num-i)*(2*bytesperword + 1)+1),
1532 static int kdb_md(int argc, const char **argv)
1534 static unsigned long last_addr;
1535 static int last_radix, last_bytesperword, last_repeat;
1536 int radix = 16, mdcount = 8, bytesperword = KDB_WORD_SIZE, repeat;
1538 char fmtchar, fmtstr[64];
1546 kdbgetintenv("MDCOUNT", &mdcount);
1547 kdbgetintenv("RADIX", &radix);
1548 kdbgetintenv("BYTESPERWORD", &bytesperword);
1550 /* Assume 'md <addr>' and start with environment values */
1551 repeat = mdcount * 16 / bytesperword;
1553 if (strcmp(argv[0], "mdr") == 0) {
1555 return KDB_ARGCOUNT;
1557 } else if (isdigit(argv[0][2])) {
1558 bytesperword = (int)(argv[0][2] - '0');
1559 if (bytesperword == 0) {
1560 bytesperword = last_bytesperword;
1561 if (bytesperword == 0)
1564 last_bytesperword = bytesperword;
1565 repeat = mdcount * 16 / bytesperword;
1568 else if (argv[0][3] == 'c' && argv[0][4]) {
1570 repeat = simple_strtoul(argv[0] + 4, &p, 10);
1571 mdcount = ((repeat * bytesperword) + 15) / 16;
1574 last_repeat = repeat;
1575 } else if (strcmp(argv[0], "md") == 0)
1577 else if (strcmp(argv[0], "mds") == 0)
1579 else if (strcmp(argv[0], "mdp") == 0) {
1583 return KDB_NOTFOUND;
1587 return KDB_ARGCOUNT;
1590 bytesperword = last_bytesperword;
1591 repeat = last_repeat;
1592 mdcount = ((repeat * bytesperword) + 15) / 16;
1597 int diag, nextarg = 1;
1598 diag = kdbgetaddrarg(argc, argv, &nextarg, &addr,
1602 if (argc > nextarg+2)
1603 return KDB_ARGCOUNT;
1605 if (argc >= nextarg) {
1606 diag = kdbgetularg(argv[nextarg], &val);
1608 mdcount = (int) val;
1609 repeat = mdcount * 16 / bytesperword;
1612 if (argc >= nextarg+1) {
1613 diag = kdbgetularg(argv[nextarg+1], &val);
1619 if (strcmp(argv[0], "mdr") == 0)
1620 return kdb_mdr(addr, mdcount);
1633 return KDB_BADRADIX;
1638 if (bytesperword > KDB_WORD_SIZE)
1639 return KDB_BADWIDTH;
1641 switch (bytesperword) {
1643 sprintf(fmtstr, "%%16.16l%c ", fmtchar);
1646 sprintf(fmtstr, "%%8.8l%c ", fmtchar);
1649 sprintf(fmtstr, "%%4.4l%c ", fmtchar);
1652 sprintf(fmtstr, "%%2.2l%c ", fmtchar);
1655 return KDB_BADWIDTH;
1658 last_repeat = repeat;
1659 last_bytesperword = bytesperword;
1661 if (strcmp(argv[0], "mds") == 0) {
1663 /* Do not save these changes as last_*, they are temporary mds
1666 bytesperword = KDB_WORD_SIZE;
1668 kdbgetintenv("NOSECT", &nosect);
1671 /* Round address down modulo BYTESPERWORD */
1673 addr &= ~(bytesperword-1);
1675 while (repeat > 0) {
1677 int n, z, num = (symbolic ? 1 : (16 / bytesperword));
1679 if (KDB_FLAG(CMD_INTERRUPT))
1681 for (a = addr, z = 0; z < repeat; a += bytesperword, ++z) {
1683 if (kdb_getphysword(&word, a, bytesperword)
1686 } else if (kdb_getword(&word, a, bytesperword) || word)
1689 n = min(num, repeat);
1690 kdb_md_line(fmtstr, addr, symbolic, nosect, bytesperword,
1692 addr += bytesperword * n;
1694 z = (z + num - 1) / num;
1696 int s = num * (z-2);
1697 kdb_printf(kdb_machreg_fmt0 "-" kdb_machreg_fmt0
1698 " zero suppressed\n",
1699 addr, addr + bytesperword * s - 1);
1700 addr += bytesperword * s;
1710 * kdb_mm - This function implements the 'mm' command.
1711 * mm address-expression new-value
1713 * mm works on machine words, mmW works on bytes.
1715 static int kdb_mm(int argc, const char **argv)
1720 unsigned long contents;
1724 if (argv[0][2] && !isdigit(argv[0][2]))
1725 return KDB_NOTFOUND;
1728 return KDB_ARGCOUNT;
1731 diag = kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL);
1736 return KDB_ARGCOUNT;
1737 diag = kdbgetaddrarg(argc, argv, &nextarg, &contents, NULL, NULL);
1741 if (nextarg != argc + 1)
1742 return KDB_ARGCOUNT;
1744 width = argv[0][2] ? (argv[0][2] - '0') : (KDB_WORD_SIZE);
1745 diag = kdb_putword(addr, contents, width);
1749 kdb_printf(kdb_machreg_fmt " = " kdb_machreg_fmt "\n", addr, contents);
1755 * kdb_go - This function implements the 'go' command.
1756 * go [address-expression]
1758 static int kdb_go(int argc, const char **argv)
1765 if (raw_smp_processor_id() != kdb_initial_cpu) {
1766 kdb_printf("go must execute on the entry cpu, "
1767 "please use \"cpu %d\" and then execute go\n",
1769 return KDB_BADCPUNUM;
1773 diag = kdbgetaddrarg(argc, argv, &nextarg,
1774 &addr, &offset, NULL);
1778 return KDB_ARGCOUNT;
1782 if (KDB_FLAG(CATASTROPHIC)) {
1783 kdb_printf("Catastrophic error detected\n");
1784 kdb_printf("kdb_continue_catastrophic=%d, ",
1785 kdb_continue_catastrophic);
1786 if (kdb_continue_catastrophic == 0 && kdb_go_count++ == 0) {
1787 kdb_printf("type go a second time if you really want "
1791 if (kdb_continue_catastrophic == 2) {
1792 kdb_printf("forcing reboot\n");
1793 kdb_reboot(0, NULL);
1795 kdb_printf("attempting to continue\n");
1801 * kdb_rd - This function implements the 'rd' command.
1803 static int kdb_rd(int argc, const char **argv)
1805 int len = kdb_check_regs();
1806 #if DBG_MAX_REG_NUM > 0
1818 for (i = 0; i < DBG_MAX_REG_NUM; i++) {
1819 rsize = dbg_reg_def[i].size * 2;
1822 if (len + strlen(dbg_reg_def[i].name) + 4 + rsize > 80) {
1827 len += kdb_printf(" ");
1828 switch(dbg_reg_def[i].size * 8) {
1830 rname = dbg_get_reg(i, ®8, kdb_current_regs);
1833 len += kdb_printf("%s: %02x", rname, reg8);
1836 rname = dbg_get_reg(i, ®16, kdb_current_regs);
1839 len += kdb_printf("%s: %04x", rname, reg16);
1842 rname = dbg_get_reg(i, ®32, kdb_current_regs);
1845 len += kdb_printf("%s: %08x", rname, reg32);
1848 rname = dbg_get_reg(i, ®64, kdb_current_regs);
1851 len += kdb_printf("%s: %016llx", rname, reg64);
1854 len += kdb_printf("%s: ??", dbg_reg_def[i].name);
1862 kdb_dumpregs(kdb_current_regs);
1868 * kdb_rm - This function implements the 'rm' (register modify) command.
1869 * rm register-name new-contents
1871 * Allows register modification with the same restrictions as gdb
1873 static int kdb_rm(int argc, const char **argv)
1875 #if DBG_MAX_REG_NUM > 0
1885 return KDB_ARGCOUNT;
1887 * Allow presence or absence of leading '%' symbol.
1893 diag = kdbgetu64arg(argv[2], ®64);
1897 diag = kdb_check_regs();
1902 for (i = 0; i < DBG_MAX_REG_NUM; i++) {
1903 if (strcmp(rname, dbg_reg_def[i].name) == 0) {
1909 switch(dbg_reg_def[i].size * 8) {
1912 dbg_set_reg(i, ®8, kdb_current_regs);
1916 dbg_set_reg(i, ®16, kdb_current_regs);
1920 dbg_set_reg(i, ®32, kdb_current_regs);
1923 dbg_set_reg(i, ®64, kdb_current_regs);
1929 kdb_printf("ERROR: Register set currently not implemented\n");
1934 #if defined(CONFIG_MAGIC_SYSRQ)
1936 * kdb_sr - This function implements the 'sr' (SYSRQ key) command
1937 * which interfaces to the soi-disant MAGIC SYSRQ functionality.
1938 * sr <magic-sysrq-code>
1940 static int kdb_sr(int argc, const char **argv)
1943 return KDB_ARGCOUNT;
1945 __handle_sysrq(*argv[1], false);
1950 #endif /* CONFIG_MAGIC_SYSRQ */
1953 * kdb_ef - This function implements the 'regs' (display exception
1954 * frame) command. This command takes an address and expects to
1955 * find an exception frame at that address, formats and prints
1957 * regs address-expression
1961 static int kdb_ef(int argc, const char **argv)
1969 return KDB_ARGCOUNT;
1972 diag = kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL);
1975 show_regs((struct pt_regs *)addr);
1979 #if defined(CONFIG_MODULES)
1981 * kdb_lsmod - This function implements the 'lsmod' command. Lists
1982 * currently loaded kernel modules.
1983 * Mostly taken from userland lsmod.
1985 static int kdb_lsmod(int argc, const char **argv)
1990 return KDB_ARGCOUNT;
1992 kdb_printf("Module Size modstruct Used by\n");
1993 list_for_each_entry(mod, kdb_modules, list) {
1994 if (mod->state == MODULE_STATE_UNFORMED)
1997 kdb_printf("%-20s%8u 0x%p ", mod->name,
1998 mod->core_size, (void *)mod);
1999 #ifdef CONFIG_MODULE_UNLOAD
2000 kdb_printf("%4ld ", module_refcount(mod));
2002 if (mod->state == MODULE_STATE_GOING)
2003 kdb_printf(" (Unloading)");
2004 else if (mod->state == MODULE_STATE_COMING)
2005 kdb_printf(" (Loading)");
2007 kdb_printf(" (Live)");
2008 kdb_printf(" 0x%p", mod->module_core);
2010 #ifdef CONFIG_MODULE_UNLOAD
2012 struct module_use *use;
2014 list_for_each_entry(use, &mod->source_list,
2016 kdb_printf("%s ", use->target->name);
2025 #endif /* CONFIG_MODULES */
2028 * kdb_env - This function implements the 'env' command. Display the
2029 * current environment variables.
2032 static int kdb_env(int argc, const char **argv)
2036 for (i = 0; i < __nenv; i++) {
2038 kdb_printf("%s\n", __env[i]);
2041 if (KDB_DEBUG(MASK))
2042 kdb_printf("KDBFLAGS=0x%x\n", kdb_flags);
2047 #ifdef CONFIG_PRINTK
2049 * kdb_dmesg - This function implements the 'dmesg' command to display
2050 * the contents of the syslog buffer.
2051 * dmesg [lines] [adjust]
2053 static int kdb_dmesg(int argc, const char **argv)
2061 struct kmsg_dumper dumper = { .active = 1 };
2066 return KDB_ARGCOUNT;
2069 lines = simple_strtol(argv[1], &cp, 0);
2073 adjust = simple_strtoul(argv[2], &cp, 0);
2074 if (*cp || adjust < 0)
2079 /* disable LOGGING if set */
2080 diag = kdbgetintenv("LOGGING", &logging);
2081 if (!diag && logging) {
2082 const char *setargs[] = { "set", "LOGGING", "0" };
2083 kdb_set(2, setargs);
2086 kmsg_dump_rewind_nolock(&dumper);
2087 while (kmsg_dump_get_line_nolock(&dumper, 1, NULL, 0, NULL))
2092 kdb_printf("buffer only contains %d lines, nothing "
2094 else if (adjust - lines >= n)
2095 kdb_printf("buffer only contains %d lines, last %d "
2096 "lines printed\n", n, n - adjust);
2099 } else if (lines > 0) {
2100 skip = n - lines - adjust;
2103 kdb_printf("buffer only contains %d lines, "
2104 "nothing printed\n", n);
2106 } else if (skip < 0) {
2109 kdb_printf("buffer only contains %d lines, first "
2110 "%d lines printed\n", n, lines);
2116 if (skip >= n || skip < 0)
2119 kmsg_dump_rewind_nolock(&dumper);
2120 while (kmsg_dump_get_line_nolock(&dumper, 1, buf, sizeof(buf), &len)) {
2127 if (KDB_FLAG(CMD_INTERRUPT))
2130 kdb_printf("%.*s\n", (int)len - 1, buf);
2135 #endif /* CONFIG_PRINTK */
2137 /* Make sure we balance enable/disable calls, must disable first. */
2138 static atomic_t kdb_nmi_disabled;
2140 static int kdb_disable_nmi(int argc, const char *argv[])
2142 if (atomic_read(&kdb_nmi_disabled))
2144 atomic_set(&kdb_nmi_disabled, 1);
2145 arch_kgdb_ops.enable_nmi(0);
2149 static int kdb_param_enable_nmi(const char *val, const struct kernel_param *kp)
2151 if (!atomic_add_unless(&kdb_nmi_disabled, -1, 0))
2153 arch_kgdb_ops.enable_nmi(1);
2157 static const struct kernel_param_ops kdb_param_ops_enable_nmi = {
2158 .set = kdb_param_enable_nmi,
2160 module_param_cb(enable_nmi, &kdb_param_ops_enable_nmi, NULL, 0600);
2163 * kdb_cpu - This function implements the 'cpu' command.
2166 * KDB_CMD_CPU for success, a kdb diagnostic if error
2168 static void kdb_cpu_status(void)
2170 int i, start_cpu, first_print = 1;
2171 char state, prev_state = '?';
2173 kdb_printf("Currently on cpu %d\n", raw_smp_processor_id());
2174 kdb_printf("Available cpus: ");
2175 for (start_cpu = -1, i = 0; i < NR_CPUS; i++) {
2176 if (!cpu_online(i)) {
2177 state = 'F'; /* cpu is offline */
2179 state = ' '; /* cpu is responding to kdb */
2180 if (kdb_task_state_char(KDB_TSK(i)) == 'I')
2181 state = 'I'; /* idle task */
2183 if (state != prev_state) {
2184 if (prev_state != '?') {
2188 kdb_printf("%d", start_cpu);
2189 if (start_cpu < i-1)
2190 kdb_printf("-%d", i-1);
2191 if (prev_state != ' ')
2192 kdb_printf("(%c)", prev_state);
2198 /* print the trailing cpus, ignoring them if they are all offline */
2199 if (prev_state != 'F') {
2202 kdb_printf("%d", start_cpu);
2203 if (start_cpu < i-1)
2204 kdb_printf("-%d", i-1);
2205 if (prev_state != ' ')
2206 kdb_printf("(%c)", prev_state);
2211 static int kdb_cpu(int argc, const char **argv)
2213 unsigned long cpunum;
2222 return KDB_ARGCOUNT;
2224 diag = kdbgetularg(argv[1], &cpunum);
2231 if ((cpunum > NR_CPUS) || !cpu_online(cpunum))
2232 return KDB_BADCPUNUM;
2234 dbg_switch_cpu = cpunum;
2237 * Switch to other cpu
2242 /* The user may not realize that ps/bta with no parameters does not print idle
2243 * or sleeping system daemon processes, so tell them how many were suppressed.
2245 void kdb_ps_suppressed(void)
2247 int idle = 0, daemon = 0;
2248 unsigned long mask_I = kdb_task_state_string("I"),
2249 mask_M = kdb_task_state_string("M");
2251 const struct task_struct *p, *g;
2252 for_each_online_cpu(cpu) {
2253 p = kdb_curr_task(cpu);
2254 if (kdb_task_state(p, mask_I))
2257 kdb_do_each_thread(g, p) {
2258 if (kdb_task_state(p, mask_M))
2260 } kdb_while_each_thread(g, p);
2261 if (idle || daemon) {
2263 kdb_printf("%d idle process%s (state I)%s\n",
2264 idle, idle == 1 ? "" : "es",
2265 daemon ? " and " : "");
2267 kdb_printf("%d sleeping system daemon (state M) "
2268 "process%s", daemon,
2269 daemon == 1 ? "" : "es");
2270 kdb_printf(" suppressed,\nuse 'ps A' to see all.\n");
2275 * kdb_ps - This function implements the 'ps' command which shows a
2276 * list of the active processes.
2277 * ps [DRSTCZEUIMA] All processes, optionally filtered by state
2279 void kdb_ps1(const struct task_struct *p)
2284 if (!p || probe_kernel_read(&tmp, (char *)p, sizeof(unsigned long)))
2287 cpu = kdb_process_cpu(p);
2288 kdb_printf("0x%p %8d %8d %d %4d %c 0x%p %c%s\n",
2289 (void *)p, p->pid, p->parent->pid,
2290 kdb_task_has_cpu(p), kdb_process_cpu(p),
2291 kdb_task_state_char(p),
2292 (void *)(&p->thread),
2293 p == kdb_curr_task(raw_smp_processor_id()) ? '*' : ' ',
2295 if (kdb_task_has_cpu(p)) {
2296 if (!KDB_TSK(cpu)) {
2297 kdb_printf(" Error: no saved data for this cpu\n");
2299 if (KDB_TSK(cpu) != p)
2300 kdb_printf(" Error: does not match running "
2301 "process table (0x%p)\n", KDB_TSK(cpu));
2306 static int kdb_ps(int argc, const char **argv)
2308 struct task_struct *g, *p;
2309 unsigned long mask, cpu;
2312 kdb_ps_suppressed();
2313 kdb_printf("%-*s Pid Parent [*] cpu State %-*s Command\n",
2314 (int)(2*sizeof(void *))+2, "Task Addr",
2315 (int)(2*sizeof(void *))+2, "Thread");
2316 mask = kdb_task_state_string(argc ? argv[1] : NULL);
2317 /* Run the active tasks first */
2318 for_each_online_cpu(cpu) {
2319 if (KDB_FLAG(CMD_INTERRUPT))
2321 p = kdb_curr_task(cpu);
2322 if (kdb_task_state(p, mask))
2326 /* Now the real tasks */
2327 kdb_do_each_thread(g, p) {
2328 if (KDB_FLAG(CMD_INTERRUPT))
2330 if (kdb_task_state(p, mask))
2332 } kdb_while_each_thread(g, p);
2338 * kdb_pid - This function implements the 'pid' command which switches
2339 * the currently active process.
2342 static int kdb_pid(int argc, const char **argv)
2344 struct task_struct *p;
2349 return KDB_ARGCOUNT;
2352 if (strcmp(argv[1], "R") == 0) {
2353 p = KDB_TSK(kdb_initial_cpu);
2355 diag = kdbgetularg(argv[1], &val);
2359 p = find_task_by_pid_ns((pid_t)val, &init_pid_ns);
2361 kdb_printf("No task with pid=%d\n", (pid_t)val);
2365 kdb_set_current_task(p);
2367 kdb_printf("KDB current process is %s(pid=%d)\n",
2368 kdb_current_task->comm,
2369 kdb_current_task->pid);
2374 static int kdb_kgdb(int argc, const char **argv)
2376 return KDB_CMD_KGDB;
2380 * kdb_help - This function implements the 'help' and '?' commands.
2382 static int kdb_help(int argc, const char **argv)
2387 kdb_printf("%-15.15s %-20.20s %s\n", "Command", "Usage", "Description");
2388 kdb_printf("-----------------------------"
2389 "-----------------------------\n");
2390 for_each_kdbcmd(kt, i) {
2392 if (KDB_FLAG(CMD_INTERRUPT))
2396 if (strlen(kt->cmd_usage) > 20)
2398 kdb_printf("%-15.15s %-20s%s%s\n", kt->cmd_name,
2399 kt->cmd_usage, space, kt->cmd_help);
2405 * kdb_kill - This function implements the 'kill' commands.
2407 static int kdb_kill(int argc, const char **argv)
2411 struct task_struct *p;
2412 struct siginfo info;
2415 return KDB_ARGCOUNT;
2417 sig = simple_strtol(argv[1], &endp, 0);
2421 kdb_printf("Invalid signal parameter.<-signal>\n");
2426 pid = simple_strtol(argv[2], &endp, 0);
2430 kdb_printf("Process ID must be large than 0.\n");
2434 /* Find the process. */
2435 p = find_task_by_pid_ns(pid, &init_pid_ns);
2437 kdb_printf("The specified process isn't found.\n");
2440 p = p->group_leader;
2441 info.si_signo = sig;
2443 info.si_code = SI_USER;
2444 info.si_pid = pid; /* same capabilities as process being signalled */
2445 info.si_uid = 0; /* kdb has root authority */
2446 kdb_send_sig_info(p, &info);
2451 int tm_sec; /* seconds */
2452 int tm_min; /* minutes */
2453 int tm_hour; /* hours */
2454 int tm_mday; /* day of the month */
2455 int tm_mon; /* month */
2456 int tm_year; /* year */
2459 static void kdb_gmtime(struct timespec *tv, struct kdb_tm *tm)
2461 /* This will work from 1970-2099, 2100 is not a leap year */
2462 static int mon_day[] = { 31, 29, 31, 30, 31, 30, 31,
2463 31, 30, 31, 30, 31 };
2464 memset(tm, 0, sizeof(*tm));
2465 tm->tm_sec = tv->tv_sec % (24 * 60 * 60);
2466 tm->tm_mday = tv->tv_sec / (24 * 60 * 60) +
2467 (2 * 365 + 1); /* shift base from 1970 to 1968 */
2468 tm->tm_min = tm->tm_sec / 60 % 60;
2469 tm->tm_hour = tm->tm_sec / 60 / 60;
2470 tm->tm_sec = tm->tm_sec % 60;
2471 tm->tm_year = 68 + 4*(tm->tm_mday / (4*365+1));
2472 tm->tm_mday %= (4*365+1);
2474 while (tm->tm_mday >= mon_day[tm->tm_mon]) {
2475 tm->tm_mday -= mon_day[tm->tm_mon];
2476 if (++tm->tm_mon == 12) {
2486 * Most of this code has been lifted from kernel/timer.c::sys_sysinfo().
2487 * I cannot call that code directly from kdb, it has an unconditional
2488 * cli()/sti() and calls routines that take locks which can stop the debugger.
2490 static void kdb_sysinfo(struct sysinfo *val)
2492 struct timespec uptime;
2493 ktime_get_ts(&uptime);
2494 memset(val, 0, sizeof(*val));
2495 val->uptime = uptime.tv_sec;
2496 val->loads[0] = avenrun[0];
2497 val->loads[1] = avenrun[1];
2498 val->loads[2] = avenrun[2];
2499 val->procs = nr_threads-1;
2506 * kdb_summary - This function implements the 'summary' command.
2508 static int kdb_summary(int argc, const char **argv)
2510 struct timespec now;
2515 return KDB_ARGCOUNT;
2517 kdb_printf("sysname %s\n", init_uts_ns.name.sysname);
2518 kdb_printf("release %s\n", init_uts_ns.name.release);
2519 kdb_printf("version %s\n", init_uts_ns.name.version);
2520 kdb_printf("machine %s\n", init_uts_ns.name.machine);
2521 kdb_printf("nodename %s\n", init_uts_ns.name.nodename);
2522 kdb_printf("domainname %s\n", init_uts_ns.name.domainname);
2523 kdb_printf("ccversion %s\n", __stringify(CCVERSION));
2525 now = __current_kernel_time();
2526 kdb_gmtime(&now, &tm);
2527 kdb_printf("date %04d-%02d-%02d %02d:%02d:%02d "
2528 "tz_minuteswest %d\n",
2529 1900+tm.tm_year, tm.tm_mon+1, tm.tm_mday,
2530 tm.tm_hour, tm.tm_min, tm.tm_sec,
2531 sys_tz.tz_minuteswest);
2534 kdb_printf("uptime ");
2535 if (val.uptime > (24*60*60)) {
2536 int days = val.uptime / (24*60*60);
2537 val.uptime %= (24*60*60);
2538 kdb_printf("%d day%s ", days, days == 1 ? "" : "s");
2540 kdb_printf("%02ld:%02ld\n", val.uptime/(60*60), (val.uptime/60)%60);
2542 /* lifted from fs/proc/proc_misc.c::loadavg_read_proc() */
2544 #define LOAD_INT(x) ((x) >> FSHIFT)
2545 #define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1-1)) * 100)
2546 kdb_printf("load avg %ld.%02ld %ld.%02ld %ld.%02ld\n",
2547 LOAD_INT(val.loads[0]), LOAD_FRAC(val.loads[0]),
2548 LOAD_INT(val.loads[1]), LOAD_FRAC(val.loads[1]),
2549 LOAD_INT(val.loads[2]), LOAD_FRAC(val.loads[2]));
2552 /* Display in kilobytes */
2553 #define K(x) ((x) << (PAGE_SHIFT - 10))
2554 kdb_printf("\nMemTotal: %8lu kB\nMemFree: %8lu kB\n"
2555 "Buffers: %8lu kB\n",
2556 val.totalram, val.freeram, val.bufferram);
2561 * kdb_per_cpu - This function implements the 'per_cpu' command.
2563 static int kdb_per_cpu(int argc, const char **argv)
2566 int cpu, diag, nextarg = 1;
2567 unsigned long addr, symaddr, val, bytesperword = 0, whichcpu = ~0UL;
2569 if (argc < 1 || argc > 3)
2570 return KDB_ARGCOUNT;
2572 diag = kdbgetaddrarg(argc, argv, &nextarg, &symaddr, NULL, NULL);
2577 diag = kdbgetularg(argv[2], &bytesperword);
2582 bytesperword = KDB_WORD_SIZE;
2583 else if (bytesperword > KDB_WORD_SIZE)
2584 return KDB_BADWIDTH;
2585 sprintf(fmtstr, "%%0%dlx ", (int)(2*bytesperword));
2587 diag = kdbgetularg(argv[3], &whichcpu);
2590 if (!cpu_online(whichcpu)) {
2591 kdb_printf("cpu %ld is not online\n", whichcpu);
2592 return KDB_BADCPUNUM;
2596 /* Most architectures use __per_cpu_offset[cpu], some use
2597 * __per_cpu_offset(cpu), smp has no __per_cpu_offset.
2599 #ifdef __per_cpu_offset
2600 #define KDB_PCU(cpu) __per_cpu_offset(cpu)
2603 #define KDB_PCU(cpu) __per_cpu_offset[cpu]
2605 #define KDB_PCU(cpu) 0
2608 for_each_online_cpu(cpu) {
2609 if (KDB_FLAG(CMD_INTERRUPT))
2612 if (whichcpu != ~0UL && whichcpu != cpu)
2614 addr = symaddr + KDB_PCU(cpu);
2615 diag = kdb_getword(&val, addr, bytesperword);
2617 kdb_printf("%5d " kdb_bfd_vma_fmt0 " - unable to "
2618 "read, diag=%d\n", cpu, addr, diag);
2621 kdb_printf("%5d ", cpu);
2622 kdb_md_line(fmtstr, addr,
2623 bytesperword == KDB_WORD_SIZE,
2624 1, bytesperword, 1, 1, 0);
2631 * display help for the use of cmd | grep pattern
2633 static int kdb_grep_help(int argc, const char **argv)
2635 kdb_printf("Usage of cmd args | grep pattern:\n");
2636 kdb_printf(" Any command's output may be filtered through an ");
2637 kdb_printf("emulated 'pipe'.\n");
2638 kdb_printf(" 'grep' is just a key word.\n");
2639 kdb_printf(" The pattern may include a very limited set of "
2640 "metacharacters:\n");
2641 kdb_printf(" pattern or ^pattern or pattern$ or ^pattern$\n");
2642 kdb_printf(" And if there are spaces in the pattern, you may "
2644 kdb_printf(" \"pat tern\" or \"^pat tern\" or \"pat tern$\""
2645 " or \"^pat tern$\"\n");
2650 * kdb_register_flags - This function is used to register a kernel
2654 * func Function to execute the command
2655 * usage A simple usage string showing arguments
2656 * help A simple help string describing command
2657 * repeat Does the command auto repeat on enter?
2659 * zero for success, one if a duplicate command.
2661 #define kdb_command_extend 50 /* arbitrary */
2662 int kdb_register_flags(char *cmd,
2667 kdb_cmdflags_t flags)
2673 * Brute force method to determine duplicates
2675 for_each_kdbcmd(kp, i) {
2676 if (kp->cmd_name && (strcmp(kp->cmd_name, cmd) == 0)) {
2677 kdb_printf("Duplicate kdb command registered: "
2678 "%s, func %p help %s\n", cmd, func, help);
2684 * Insert command into first available location in table
2686 for_each_kdbcmd(kp, i) {
2687 if (kp->cmd_name == NULL)
2691 if (i >= kdb_max_commands) {
2692 kdbtab_t *new = kmalloc((kdb_max_commands - KDB_BASE_CMD_MAX +
2693 kdb_command_extend) * sizeof(*new), GFP_KDB);
2695 kdb_printf("Could not allocate new kdb_command "
2700 memcpy(new, kdb_commands,
2701 (kdb_max_commands - KDB_BASE_CMD_MAX) * sizeof(*new));
2702 kfree(kdb_commands);
2704 memset(new + kdb_max_commands - KDB_BASE_CMD_MAX, 0,
2705 kdb_command_extend * sizeof(*new));
2707 kp = kdb_commands + kdb_max_commands - KDB_BASE_CMD_MAX;
2708 kdb_max_commands += kdb_command_extend;
2712 kp->cmd_func = func;
2713 kp->cmd_usage = usage;
2714 kp->cmd_help = help;
2715 kp->cmd_minlen = minlen;
2716 kp->cmd_flags = flags;
2720 EXPORT_SYMBOL_GPL(kdb_register_flags);
2724 * kdb_register - Compatibility register function for commands that do
2725 * not need to specify a repeat state. Equivalent to
2726 * kdb_register_flags with flags set to 0.
2729 * func Function to execute the command
2730 * usage A simple usage string showing arguments
2731 * help A simple help string describing command
2733 * zero for success, one if a duplicate command.
2735 int kdb_register(char *cmd,
2741 return kdb_register_flags(cmd, func, usage, help, minlen, 0);
2743 EXPORT_SYMBOL_GPL(kdb_register);
2746 * kdb_unregister - This function is used to unregister a kernel
2747 * debugger command. It is generally called when a module which
2748 * implements kdb commands is unloaded.
2752 * zero for success, one command not registered.
2754 int kdb_unregister(char *cmd)
2762 for_each_kdbcmd(kp, i) {
2763 if (kp->cmd_name && (strcmp(kp->cmd_name, cmd) == 0)) {
2764 kp->cmd_name = NULL;
2769 /* Couldn't find it. */
2772 EXPORT_SYMBOL_GPL(kdb_unregister);
2774 /* Initialize the kdb command table. */
2775 static void __init kdb_inittab(void)
2780 for_each_kdbcmd(kp, i)
2781 kp->cmd_name = NULL;
2783 kdb_register_flags("md", kdb_md, "<vaddr>",
2784 "Display Memory Contents, also mdWcN, e.g. md8c1", 1,
2785 KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS);
2786 kdb_register_flags("mdr", kdb_md, "<vaddr> <bytes>",
2787 "Display Raw Memory", 0,
2788 KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS);
2789 kdb_register_flags("mdp", kdb_md, "<paddr> <bytes>",
2790 "Display Physical Memory", 0,
2791 KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS);
2792 kdb_register_flags("mds", kdb_md, "<vaddr>",
2793 "Display Memory Symbolically", 0,
2794 KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS);
2795 kdb_register_flags("mm", kdb_mm, "<vaddr> <contents>",
2796 "Modify Memory Contents", 0,
2797 KDB_ENABLE_MEM_WRITE | KDB_REPEAT_NO_ARGS);
2798 kdb_register_flags("go", kdb_go, "[<vaddr>]",
2799 "Continue Execution", 1,
2800 KDB_ENABLE_REG_WRITE | KDB_ENABLE_ALWAYS_SAFE_NO_ARGS);
2801 kdb_register_flags("rd", kdb_rd, "",
2802 "Display Registers", 0,
2803 KDB_ENABLE_REG_READ);
2804 kdb_register_flags("rm", kdb_rm, "<reg> <contents>",
2805 "Modify Registers", 0,
2806 KDB_ENABLE_REG_WRITE);
2807 kdb_register_flags("ef", kdb_ef, "<vaddr>",
2808 "Display exception frame", 0,
2809 KDB_ENABLE_MEM_READ);
2810 kdb_register_flags("bt", kdb_bt, "[<vaddr>]",
2811 "Stack traceback", 1,
2812 KDB_ENABLE_MEM_READ | KDB_ENABLE_INSPECT_NO_ARGS);
2813 kdb_register_flags("btp", kdb_bt, "<pid>",
2814 "Display stack for process <pid>", 0,
2815 KDB_ENABLE_INSPECT);
2816 kdb_register_flags("bta", kdb_bt, "[D|R|S|T|C|Z|E|U|I|M|A]",
2817 "Backtrace all processes matching state flag", 0,
2818 KDB_ENABLE_INSPECT);
2819 kdb_register_flags("btc", kdb_bt, "",
2820 "Backtrace current process on each cpu", 0,
2821 KDB_ENABLE_INSPECT);
2822 kdb_register_flags("btt", kdb_bt, "<vaddr>",
2823 "Backtrace process given its struct task address", 0,
2824 KDB_ENABLE_MEM_READ | KDB_ENABLE_INSPECT_NO_ARGS);
2825 kdb_register_flags("env", kdb_env, "",
2826 "Show environment variables", 0,
2827 KDB_ENABLE_ALWAYS_SAFE);
2828 kdb_register_flags("set", kdb_set, "",
2829 "Set environment variables", 0,
2830 KDB_ENABLE_ALWAYS_SAFE);
2831 kdb_register_flags("help", kdb_help, "",
2832 "Display Help Message", 1,
2833 KDB_ENABLE_ALWAYS_SAFE);
2834 kdb_register_flags("?", kdb_help, "",
2835 "Display Help Message", 0,
2836 KDB_ENABLE_ALWAYS_SAFE);
2837 kdb_register_flags("cpu", kdb_cpu, "<cpunum>",
2838 "Switch to new cpu", 0,
2839 KDB_ENABLE_ALWAYS_SAFE_NO_ARGS);
2840 kdb_register_flags("kgdb", kdb_kgdb, "",
2841 "Enter kgdb mode", 0, 0);
2842 kdb_register_flags("ps", kdb_ps, "[<flags>|A]",
2843 "Display active task list", 0,
2844 KDB_ENABLE_INSPECT);
2845 kdb_register_flags("pid", kdb_pid, "<pidnum>",
2846 "Switch to another task", 0,
2847 KDB_ENABLE_INSPECT);
2848 kdb_register_flags("reboot", kdb_reboot, "",
2849 "Reboot the machine immediately", 0,
2851 #if defined(CONFIG_MODULES)
2852 kdb_register_flags("lsmod", kdb_lsmod, "",
2853 "List loaded kernel modules", 0,
2854 KDB_ENABLE_INSPECT);
2856 #if defined(CONFIG_MAGIC_SYSRQ)
2857 kdb_register_flags("sr", kdb_sr, "<key>",
2858 "Magic SysRq key", 0,
2859 KDB_ENABLE_ALWAYS_SAFE);
2861 #if defined(CONFIG_PRINTK)
2862 kdb_register_flags("dmesg", kdb_dmesg, "[lines]",
2863 "Display syslog buffer", 0,
2864 KDB_ENABLE_ALWAYS_SAFE);
2866 if (arch_kgdb_ops.enable_nmi) {
2867 kdb_register_flags("disable_nmi", kdb_disable_nmi, "",
2868 "Disable NMI entry to KDB", 0,
2869 KDB_ENABLE_ALWAYS_SAFE);
2871 kdb_register_flags("defcmd", kdb_defcmd, "name \"usage\" \"help\"",
2872 "Define a set of commands, down to endefcmd", 0,
2873 KDB_ENABLE_ALWAYS_SAFE);
2874 kdb_register_flags("kill", kdb_kill, "<-signal> <pid>",
2875 "Send a signal to a process", 0,
2877 kdb_register_flags("summary", kdb_summary, "",
2878 "Summarize the system", 4,
2879 KDB_ENABLE_ALWAYS_SAFE);
2880 kdb_register_flags("per_cpu", kdb_per_cpu, "<sym> [<bytes>] [<cpu>]",
2881 "Display per_cpu variables", 3,
2882 KDB_ENABLE_MEM_READ);
2883 kdb_register_flags("grephelp", kdb_grep_help, "",
2884 "Display help on | grep", 0,
2885 KDB_ENABLE_ALWAYS_SAFE);
2888 /* Execute any commands defined in kdb_cmds. */
2889 static void __init kdb_cmd_init(void)
2892 for (i = 0; kdb_cmds[i]; ++i) {
2893 diag = kdb_parse(kdb_cmds[i]);
2895 kdb_printf("kdb command %s failed, kdb diag %d\n",
2898 if (defcmd_in_progress) {
2899 kdb_printf("Incomplete 'defcmd' set, forcing endefcmd\n");
2900 kdb_parse("endefcmd");
2904 /* Initialize kdb_printf, breakpoint tables and kdb state */
2905 void __init kdb_init(int lvl)
2907 static int kdb_init_lvl = KDB_NOT_INITIALIZED;
2910 if (kdb_init_lvl == KDB_INIT_FULL || lvl <= kdb_init_lvl)
2912 for (i = kdb_init_lvl; i < lvl; i++) {
2914 case KDB_NOT_INITIALIZED:
2915 kdb_inittab(); /* Initialize Command Table */
2916 kdb_initbptab(); /* Initialize Breakpoints */
2918 case KDB_INIT_EARLY:
2919 kdb_cmd_init(); /* Build kdb_cmds tables */