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/moduleparam.h>
31 #include <linux/init.h>
32 #include <linux/kallsyms.h>
33 #include <linux/kgdb.h>
34 #include <linux/kdb.h>
35 #include <linux/notifier.h>
36 #include <linux/interrupt.h>
37 #include <linux/delay.h>
38 #include <linux/nmi.h>
39 #include <linux/time.h>
40 #include <linux/ptrace.h>
41 #include <linux/sysctl.h>
42 #include <linux/cpu.h>
43 #include <linux/kdebug.h>
44 #include <linux/proc_fs.h>
45 #include <linux/uaccess.h>
46 #include <linux/slab.h>
47 #include <linux/security.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_cmds_head describes the available commands. */
88 static LIST_HEAD(kdb_cmds_head);
90 typedef struct _kdbmsg {
91 int km_diag; /* kdb diagnostic */
92 char *km_msg; /* Corresponding message text */
95 #define KDBMSG(msgnum, text) \
96 { KDB_##msgnum, text }
98 static kdbmsg_t kdbmsgs[] = {
99 KDBMSG(NOTFOUND, "Command Not Found"),
100 KDBMSG(ARGCOUNT, "Improper argument count, see usage."),
101 KDBMSG(BADWIDTH, "Illegal value for BYTESPERWORD use 1, 2, 4 or 8, "
102 "8 is only allowed on 64 bit systems"),
103 KDBMSG(BADRADIX, "Illegal value for RADIX use 8, 10 or 16"),
104 KDBMSG(NOTENV, "Cannot find environment variable"),
105 KDBMSG(NOENVVALUE, "Environment variable should have value"),
106 KDBMSG(NOTIMP, "Command not implemented"),
107 KDBMSG(ENVFULL, "Environment full"),
108 KDBMSG(ENVBUFFULL, "Environment buffer full"),
109 KDBMSG(TOOMANYBPT, "Too many breakpoints defined"),
110 #ifdef CONFIG_CPU_XSCALE
111 KDBMSG(TOOMANYDBREGS, "More breakpoints than ibcr registers defined"),
113 KDBMSG(TOOMANYDBREGS, "More breakpoints than db registers defined"),
115 KDBMSG(DUPBPT, "Duplicate breakpoint address"),
116 KDBMSG(BPTNOTFOUND, "Breakpoint not found"),
117 KDBMSG(BADMODE, "Invalid IDMODE"),
118 KDBMSG(BADINT, "Illegal numeric value"),
119 KDBMSG(INVADDRFMT, "Invalid symbolic address format"),
120 KDBMSG(BADREG, "Invalid register name"),
121 KDBMSG(BADCPUNUM, "Invalid cpu number"),
122 KDBMSG(BADLENGTH, "Invalid length field"),
123 KDBMSG(NOBP, "No Breakpoint exists"),
124 KDBMSG(BADADDR, "Invalid address"),
125 KDBMSG(NOPERM, "Permission denied"),
129 static const int __nkdb_err = ARRAY_SIZE(kdbmsgs);
133 * Initial environment. This is all kept static and local to
134 * this file. We don't want to rely on the memory allocation
135 * mechanisms in the kernel, so we use a very limited allocate-only
136 * heap for new and altered environment variables. The entire
137 * environment is limited to a fixed number of entries (add more
138 * to __env[] if required) and a fixed amount of heap (add more to
139 * KDB_ENVBUFSIZE if required).
142 static char *__env[31] = {
143 #if defined(CONFIG_SMP)
150 "MDCOUNT=8", /* lines of md output */
156 static const int __nenv = ARRAY_SIZE(__env);
159 * Update the permissions flags (kdb_cmd_enabled) to match the
160 * current lockdown state.
162 * Within this function the calls to security_locked_down() are "lazy". We
163 * avoid calling them if the current value of kdb_cmd_enabled already excludes
164 * flags that might be subject to lockdown. Additionally we deliberately check
165 * the lockdown flags independently (even though read lockdown implies write
166 * lockdown) since that results in both simpler code and clearer messages to
167 * the user on first-time debugger entry.
169 * The permission masks during a read+write lockdown permits the following
170 * flags: INSPECT, SIGNAL, REBOOT (and ALWAYS_SAFE).
172 * The INSPECT commands are not blocked during lockdown because they are
173 * not arbitrary memory reads. INSPECT covers the backtrace family (sometimes
174 * forcing them to have no arguments) and lsmod. These commands do expose
175 * some kernel state but do not allow the developer seated at the console to
176 * choose what state is reported. SIGNAL and REBOOT should not be controversial,
177 * given these are allowed for root during lockdown already.
179 static void kdb_check_for_lockdown(void)
181 const int write_flags = KDB_ENABLE_MEM_WRITE |
182 KDB_ENABLE_REG_WRITE |
183 KDB_ENABLE_FLOW_CTRL;
184 const int read_flags = KDB_ENABLE_MEM_READ |
187 bool need_to_lockdown_write = false;
188 bool need_to_lockdown_read = false;
190 if (kdb_cmd_enabled & (KDB_ENABLE_ALL | write_flags))
191 need_to_lockdown_write =
192 security_locked_down(LOCKDOWN_DBG_WRITE_KERNEL);
194 if (kdb_cmd_enabled & (KDB_ENABLE_ALL | read_flags))
195 need_to_lockdown_read =
196 security_locked_down(LOCKDOWN_DBG_READ_KERNEL);
198 /* De-compose KDB_ENABLE_ALL if required */
199 if (need_to_lockdown_write || need_to_lockdown_read)
200 if (kdb_cmd_enabled & KDB_ENABLE_ALL)
201 kdb_cmd_enabled = KDB_ENABLE_MASK & ~KDB_ENABLE_ALL;
203 if (need_to_lockdown_write)
204 kdb_cmd_enabled &= ~write_flags;
206 if (need_to_lockdown_read)
207 kdb_cmd_enabled &= ~read_flags;
211 * Check whether the flags of the current command, the permissions of the kdb
212 * console and the lockdown state allow a command to be run.
214 static bool kdb_check_flags(kdb_cmdflags_t flags, int permissions,
217 /* permissions comes from userspace so needs massaging slightly */
218 permissions &= KDB_ENABLE_MASK;
219 permissions |= KDB_ENABLE_ALWAYS_SAFE;
221 /* some commands change group when launched with no arguments */
223 permissions |= permissions << KDB_ENABLE_NO_ARGS_SHIFT;
225 flags |= KDB_ENABLE_ALL;
227 return permissions & flags;
231 * kdbgetenv - This function will return the character string value of
232 * an environment variable.
234 * match A character string representing an environment variable.
236 * NULL No environment variable matches 'match'
237 * char* Pointer to string value of environment variable.
239 char *kdbgetenv(const char *match)
242 int matchlen = strlen(match);
245 for (i = 0; i < __nenv; i++) {
251 if ((strncmp(match, e, matchlen) == 0)
252 && ((e[matchlen] == '\0')
253 || (e[matchlen] == '='))) {
254 char *cp = strchr(e, '=');
255 return cp ? ++cp : "";
262 * kdballocenv - This function is used to allocate bytes for
263 * environment entries.
265 * bytes The number of bytes to allocate in the static buffer.
267 * A pointer to the allocated space in the buffer on success.
268 * NULL if bytes > size available in the envbuffer.
270 * We use a static environment buffer (envbuffer) to hold the values
271 * of dynamically generated environment variables (see kdb_set). Buffer
272 * space once allocated is never free'd, so over time, the amount of space
273 * (currently 512 bytes) will be exhausted if env variables are changed
276 static char *kdballocenv(size_t bytes)
278 #define KDB_ENVBUFSIZE 512
279 static char envbuffer[KDB_ENVBUFSIZE];
280 static int envbufsize;
283 if ((KDB_ENVBUFSIZE - envbufsize) >= bytes) {
284 ep = &envbuffer[envbufsize];
291 * kdbgetulenv - This function will return the value of an unsigned
292 * long-valued environment variable.
294 * match A character string representing a numeric value
296 * *value the unsigned long representation of the env variable 'match'
298 * Zero on success, a kdb diagnostic on failure.
300 static int kdbgetulenv(const char *match, unsigned long *value)
304 ep = kdbgetenv(match);
308 return KDB_NOENVVALUE;
310 *value = simple_strtoul(ep, NULL, 0);
316 * kdbgetintenv - This function will return the value of an
317 * integer-valued environment variable.
319 * match A character string representing an integer-valued env variable
321 * *value the integer representation of the environment variable 'match'
323 * Zero on success, a kdb diagnostic on failure.
325 int kdbgetintenv(const char *match, int *value)
330 diag = kdbgetulenv(match, &val);
337 * kdb_setenv() - Alter an existing environment variable or create a new one.
338 * @var: Name of the variable
339 * @val: Value of the variable
341 * Return: Zero on success, a kdb diagnostic on failure.
343 static int kdb_setenv(const char *var, const char *val)
347 size_t varlen, vallen;
349 varlen = strlen(var);
350 vallen = strlen(val);
351 ep = kdballocenv(varlen + vallen + 2);
353 return KDB_ENVBUFFULL;
355 sprintf(ep, "%s=%s", var, val);
357 for (i = 0; i < __nenv; i++) {
359 && ((strncmp(__env[i], var, varlen) == 0)
360 && ((__env[i][varlen] == '\0')
361 || (__env[i][varlen] == '=')))) {
368 * Wasn't existing variable. Fit into slot.
370 for (i = 0; i < __nenv-1; i++) {
371 if (__env[i] == (char *)0) {
381 * kdb_printenv() - Display the current environment variables.
383 static void kdb_printenv(void)
387 for (i = 0; i < __nenv; i++) {
389 kdb_printf("%s\n", __env[i]);
394 * kdbgetularg - This function will convert a numeric string into an
395 * unsigned long value.
397 * arg A character string representing a numeric value
399 * *value the unsigned long representation of arg.
401 * Zero on success, a kdb diagnostic on failure.
403 int kdbgetularg(const char *arg, unsigned long *value)
408 val = simple_strtoul(arg, &endp, 0);
412 * Also try base 16, for us folks too lazy to type the
415 val = simple_strtoul(arg, &endp, 16);
425 int kdbgetu64arg(const char *arg, u64 *value)
430 val = simple_strtoull(arg, &endp, 0);
434 val = simple_strtoull(arg, &endp, 16);
445 * kdb_set - This function implements the 'set' command. Alter an
446 * existing environment variable or create a new one.
448 int kdb_set(int argc, const char **argv)
451 * we can be invoked two ways:
452 * set var=value argv[1]="var", argv[2]="value"
453 * set var = value argv[1]="var", argv[2]="=", argv[3]="value"
454 * - if the latter, shift 'em down.
465 * Censor sensitive variables
467 if (strcmp(argv[1], "PROMPT") == 0 &&
468 !kdb_check_flags(KDB_ENABLE_MEM_READ, kdb_cmd_enabled, false))
472 * Check for internal variables
474 if (strcmp(argv[1], "KDBDEBUG") == 0) {
475 unsigned int debugflags;
478 debugflags = simple_strtoul(argv[2], &cp, 0);
479 if (cp == argv[2] || debugflags & ~KDB_DEBUG_FLAG_MASK) {
480 kdb_printf("kdb: illegal debug flags '%s'\n",
484 kdb_flags = (kdb_flags & ~KDB_DEBUG(MASK))
485 | (debugflags << KDB_DEBUG_FLAG_SHIFT);
491 * Tokenizer squashed the '=' sign. argv[1] is variable
492 * name, argv[2] = value.
494 return kdb_setenv(argv[1], argv[2]);
497 static int kdb_check_regs(void)
499 if (!kdb_current_regs) {
500 kdb_printf("No current kdb registers."
501 " You may need to select another task\n");
508 * kdbgetaddrarg - This function is responsible for parsing an
509 * address-expression and returning the value of the expression,
510 * symbol name, and offset to the caller.
512 * The argument may consist of a numeric value (decimal or
513 * hexadecimal), a symbol name, a register name (preceded by the
514 * percent sign), an environment variable with a numeric value
515 * (preceded by a dollar sign) or a simple arithmetic expression
516 * consisting of a symbol name, +/-, and a numeric constant value
519 * argc - count of arguments in argv
520 * argv - argument vector
521 * *nextarg - index to next unparsed argument in argv[]
522 * regs - Register state at time of KDB entry
524 * *value - receives the value of the address-expression
525 * *offset - receives the offset specified, if any
526 * *name - receives the symbol name, if any
527 * *nextarg - index to next unparsed argument in argv[]
529 * zero is returned on success, a kdb diagnostic code is
532 int kdbgetaddrarg(int argc, const char **argv, int *nextarg,
533 unsigned long *value, long *offset,
537 unsigned long off = 0;
547 * If the enable flags prohibit both arbitrary memory access
548 * and flow control then there are no reasonable grounds to
549 * provide symbol lookup.
551 if (!kdb_check_flags(KDB_ENABLE_MEM_READ | KDB_ENABLE_FLOW_CTRL,
552 kdb_cmd_enabled, false))
556 * Process arguments which follow the following syntax:
558 * symbol | numeric-address [+/- numeric-offset]
560 * $environment-variable
566 symname = (char *)argv[*nextarg];
569 * If there is no whitespace between the symbol
570 * or address and the '+' or '-' symbols, we
571 * remember the character and replace it with a
572 * null so the symbol/value can be properly parsed
574 cp = strpbrk(symname, "+-");
580 if (symname[0] == '$') {
581 diag = kdbgetulenv(&symname[1], &addr);
584 } else if (symname[0] == '%') {
585 diag = kdb_check_regs();
588 /* Implement register values with % at a later time as it is
593 found = kdbgetsymval(symname, &symtab);
595 addr = symtab.sym_start;
597 diag = kdbgetularg(argv[*nextarg], &addr);
604 found = kdbnearsym(addr, &symtab);
612 if (offset && name && *name)
613 *offset = addr - symtab.sym_start;
615 if ((*nextarg > argc)
620 * check for +/- and offset
623 if (symbol == '\0') {
624 if ((argv[*nextarg][0] != '+')
625 && (argv[*nextarg][0] != '-')) {
627 * Not our argument. Return.
631 positive = (argv[*nextarg][0] == '+');
635 positive = (symbol == '+');
638 * Now there must be an offset!
640 if ((*nextarg > argc)
641 && (symbol == '\0')) {
642 return KDB_INVADDRFMT;
646 cp = (char *)argv[*nextarg];
650 diag = kdbgetularg(cp, &off);
666 static void kdb_cmderror(int diag)
671 kdb_printf("no error detected (diagnostic is %d)\n", diag);
675 for (i = 0; i < __nkdb_err; i++) {
676 if (kdbmsgs[i].km_diag == diag) {
677 kdb_printf("diag: %d: %s\n", diag, kdbmsgs[i].km_msg);
682 kdb_printf("Unknown diag %d\n", -diag);
686 * kdb_defcmd, kdb_defcmd2 - This function implements the 'defcmd'
687 * command which defines one command as a set of other commands,
688 * terminated by endefcmd. kdb_defcmd processes the initial
689 * 'defcmd' command, kdb_defcmd2 is invoked from kdb_parse for
690 * the following commands until 'endefcmd'.
692 * argc argument count
693 * argv argument vector
695 * zero for success, a kdb diagnostic if error
698 kdbtab_t cmd; /* Macro command */
699 struct list_head statements; /* Associated statement list */
702 struct kdb_macro_statement {
703 char *statement; /* Statement text */
704 struct list_head list_node; /* Statement list node */
707 static struct kdb_macro *kdb_macro;
708 static bool defcmd_in_progress;
710 /* Forward references */
711 static int kdb_exec_defcmd(int argc, const char **argv);
713 static int kdb_defcmd2(const char *cmdstr, const char *argv0)
715 struct kdb_macro_statement *kms;
720 if (strcmp(argv0, "endefcmd") == 0) {
721 defcmd_in_progress = false;
722 if (!list_empty(&kdb_macro->statements))
723 kdb_register(&kdb_macro->cmd);
727 kms = kmalloc(sizeof(*kms), GFP_KDB);
729 kdb_printf("Could not allocate new kdb macro command: %s\n",
734 kms->statement = kdb_strdup(cmdstr, GFP_KDB);
735 list_add_tail(&kms->list_node, &kdb_macro->statements);
740 static int kdb_defcmd(int argc, const char **argv)
744 if (defcmd_in_progress) {
745 kdb_printf("kdb: nested defcmd detected, assuming missing "
747 kdb_defcmd2("endefcmd", "endefcmd");
751 struct kdb_macro *kmp;
752 struct kdb_macro_statement *kms;
754 list_for_each_entry(kp, &kdb_cmds_head, list_node) {
755 if (kp->func == kdb_exec_defcmd) {
756 kdb_printf("defcmd %s \"%s\" \"%s\"\n",
757 kp->name, kp->usage, kp->help);
758 kmp = container_of(kp, struct kdb_macro, cmd);
759 list_for_each_entry(kms, &kmp->statements,
761 kdb_printf("%s", kms->statement);
762 kdb_printf("endefcmd\n");
769 if (in_dbg_master()) {
770 kdb_printf("Command only available during kdb_init()\n");
773 kdb_macro = kzalloc(sizeof(*kdb_macro), GFP_KDB);
777 mp = &kdb_macro->cmd;
778 mp->func = kdb_exec_defcmd;
780 mp->flags = KDB_ENABLE_ALWAYS_SAFE;
781 mp->name = kdb_strdup(argv[1], GFP_KDB);
784 mp->usage = kdb_strdup(argv[2], GFP_KDB);
787 mp->help = kdb_strdup(argv[3], GFP_KDB);
790 if (mp->usage[0] == '"') {
791 strcpy(mp->usage, argv[2]+1);
792 mp->usage[strlen(mp->usage)-1] = '\0';
794 if (mp->help[0] == '"') {
795 strcpy(mp->help, argv[3]+1);
796 mp->help[strlen(mp->help)-1] = '\0';
799 INIT_LIST_HEAD(&kdb_macro->statements);
800 defcmd_in_progress = true;
809 kdb_printf("Could not allocate new kdb_macro entry for %s\n", argv[1]);
814 * kdb_exec_defcmd - Execute the set of commands associated with this
817 * argc argument count
818 * argv argument vector
820 * zero for success, a kdb diagnostic if error
822 static int kdb_exec_defcmd(int argc, const char **argv)
826 struct kdb_macro *kmp;
827 struct kdb_macro_statement *kms;
832 list_for_each_entry(kp, &kdb_cmds_head, list_node) {
833 if (strcmp(kp->name, argv[0]) == 0)
836 if (list_entry_is_head(kp, &kdb_cmds_head, list_node)) {
837 kdb_printf("kdb_exec_defcmd: could not find commands for %s\n",
841 kmp = container_of(kp, struct kdb_macro, cmd);
842 list_for_each_entry(kms, &kmp->statements, list_node) {
844 * Recursive use of kdb_parse, do not use argv after this point.
847 kdb_printf("[%s]kdb> %s\n", kmp->cmd.name, kms->statement);
848 ret = kdb_parse(kms->statement);
855 /* Command history */
856 #define KDB_CMD_HISTORY_COUNT 32
857 #define CMD_BUFLEN 200 /* kdb_printf: max printline
859 static unsigned int cmd_head, cmd_tail;
860 static unsigned int cmdptr;
861 static char cmd_hist[KDB_CMD_HISTORY_COUNT][CMD_BUFLEN];
862 static char cmd_cur[CMD_BUFLEN];
865 * The "str" argument may point to something like | grep xyz
867 static void parse_grep(const char *str)
870 char *cp = (char *)str, *cp2;
872 /* sanity check: we should have been called with the \ first */
878 if (!str_has_prefix(cp, "grep ")) {
879 kdb_printf("invalid 'pipe', see grephelp\n");
885 cp2 = strchr(cp, '\n');
887 *cp2 = '\0'; /* remove the trailing newline */
890 kdb_printf("invalid 'pipe', see grephelp\n");
893 /* now cp points to a nonzero length search string */
895 /* allow it be "x y z" by removing the "'s - there must
898 cp2 = strchr(cp, '"');
900 kdb_printf("invalid quoted string, see grephelp\n");
903 *cp2 = '\0'; /* end the string where the 2nd " was */
905 kdb_grep_leading = 0;
907 kdb_grep_leading = 1;
911 kdb_grep_trailing = 0;
912 if (*(cp+len-1) == '$') {
913 kdb_grep_trailing = 1;
919 if (len >= KDB_GREP_STRLEN) {
920 kdb_printf("search string too long\n");
923 strcpy(kdb_grep_string, cp);
929 * kdb_parse - Parse the command line, search the command table for a
930 * matching command and invoke the command function. This
931 * function may be called recursively, if it is, the second call
932 * will overwrite argv and cbuf. It is the caller's
933 * responsibility to save their argv if they recursively call
936 * cmdstr The input command line to be parsed.
937 * regs The registers at the time kdb was entered.
939 * Zero for success, a kdb diagnostic if failure.
941 * Limited to 20 tokens.
943 * Real rudimentary tokenization. Basically only whitespace
944 * is considered a token delimiter (but special consideration
945 * is taken of the '=' sign as used by the 'set' command).
947 * The algorithm used to tokenize the input string relies on
948 * there being at least one whitespace (or otherwise useless)
949 * character between tokens as the character immediately following
950 * the token is altered in-place to a null-byte to terminate the
956 int kdb_parse(const char *cmdstr)
958 static char *argv[MAXARGC];
960 static char cbuf[CMD_BUFLEN+2];
964 int escaped, ignore_errors = 0, check_grep = 0;
967 * First tokenize the command string.
971 if (KDB_FLAG(CMD_INTERRUPT)) {
972 /* Previous command was interrupted, newline must not
973 * repeat the command */
974 KDB_FLAG_CLEAR(CMD_INTERRUPT);
975 KDB_STATE_SET(PAGER);
976 argc = 0; /* no repeat */
979 if (*cp != '\n' && *cp != '\0') {
983 /* skip whitespace */
986 if ((*cp == '\0') || (*cp == '\n') ||
987 (*cp == '#' && !defcmd_in_progress))
989 /* special case: check for | grep pattern */
994 if (cpp >= cbuf + CMD_BUFLEN) {
995 kdb_printf("kdb_parse: command buffer "
996 "overflow, command ignored\n%s\n",
1000 if (argc >= MAXARGC - 1) {
1001 kdb_printf("kdb_parse: too many arguments, "
1002 "command ignored\n%s\n", cmdstr);
1003 return KDB_NOTFOUND;
1008 /* Copy to next unquoted and unescaped
1009 * whitespace or '=' */
1010 while (*cp && *cp != '\n' &&
1011 (escaped || quoted || !isspace(*cp))) {
1012 if (cpp >= cbuf + CMD_BUFLEN)
1026 else if (*cp == '\'' || *cp == '"')
1029 if (*cpp == '=' && !quoted)
1033 *cpp++ = '\0'; /* Squash a ws or '=' character */
1040 if (defcmd_in_progress) {
1041 int result = kdb_defcmd2(cmdstr, argv[0]);
1042 if (!defcmd_in_progress) {
1043 argc = 0; /* avoid repeat on endefcmd */
1048 if (argv[0][0] == '-' && argv[0][1] &&
1049 (argv[0][1] < '0' || argv[0][1] > '9')) {
1054 list_for_each_entry(tp, &kdb_cmds_head, list_node) {
1056 * If this command is allowed to be abbreviated,
1057 * check to see if this is it.
1059 if (tp->minlen && (strlen(argv[0]) <= tp->minlen) &&
1060 (strncmp(argv[0], tp->name, tp->minlen) == 0))
1063 if (strcmp(argv[0], tp->name) == 0)
1068 * If we don't find a command by this name, see if the first
1069 * few characters of this match any of the known commands.
1070 * e.g., md1c20 should match md.
1072 if (list_entry_is_head(tp, &kdb_cmds_head, list_node)) {
1073 list_for_each_entry(tp, &kdb_cmds_head, list_node) {
1074 if (strncmp(argv[0], tp->name, strlen(tp->name)) == 0)
1079 if (!list_entry_is_head(tp, &kdb_cmds_head, list_node)) {
1082 if (!kdb_check_flags(tp->flags, kdb_cmd_enabled, argc <= 1))
1086 result = (*tp->func)(argc-1, (const char **)argv);
1087 if (result && ignore_errors && result > KDB_CMD_GO)
1089 KDB_STATE_CLEAR(CMD);
1091 if (tp->flags & KDB_REPEAT_WITH_ARGS)
1094 argc = tp->flags & KDB_REPEAT_NO_ARGS ? 1 : 0;
1096 *(argv[argc]) = '\0';
1101 * If the input with which we were presented does not
1102 * map to an existing command, attempt to parse it as an
1103 * address argument and display the result. Useful for
1104 * obtaining the address of a variable, or the nearest symbol
1105 * to an address contained in a register.
1108 unsigned long value;
1113 if (kdbgetaddrarg(0, (const char **)argv, &nextarg,
1114 &value, &offset, &name)) {
1115 return KDB_NOTFOUND;
1118 kdb_printf("%s = ", argv[0]);
1119 kdb_symbol_print(value, NULL, KDB_SP_DEFAULT);
1126 static int handle_ctrl_cmd(char *cmd)
1131 /* initial situation */
1132 if (cmd_head == cmd_tail)
1136 if (cmdptr != cmd_tail)
1137 cmdptr = (cmdptr + KDB_CMD_HISTORY_COUNT - 1) %
1138 KDB_CMD_HISTORY_COUNT;
1139 strscpy(cmd_cur, cmd_hist[cmdptr], CMD_BUFLEN);
1142 if (cmdptr != cmd_head)
1143 cmdptr = (cmdptr+1) % KDB_CMD_HISTORY_COUNT;
1144 strscpy(cmd_cur, cmd_hist[cmdptr], CMD_BUFLEN);
1151 * kdb_reboot - This function implements the 'reboot' command. Reboot
1152 * the system immediately, or loop for ever on failure.
1154 static int kdb_reboot(int argc, const char **argv)
1156 emergency_restart();
1157 kdb_printf("Hmm, kdb_reboot did not reboot, spinning here\n");
1164 static void kdb_dumpregs(struct pt_regs *regs)
1166 int old_lvl = console_loglevel;
1167 console_loglevel = CONSOLE_LOGLEVEL_MOTORMOUTH;
1172 console_loglevel = old_lvl;
1175 static void kdb_set_current_task(struct task_struct *p)
1177 kdb_current_task = p;
1179 if (kdb_task_has_cpu(p)) {
1180 kdb_current_regs = KDB_TSKREGS(kdb_process_cpu(p));
1183 kdb_current_regs = NULL;
1186 static void drop_newline(char *buf)
1188 size_t len = strlen(buf);
1192 if (*(buf + len - 1) == '\n')
1193 *(buf + len - 1) = '\0';
1197 * kdb_local - The main code for kdb. This routine is invoked on a
1198 * specific processor, it is not global. The main kdb() routine
1199 * ensures that only one processor at a time is in this routine.
1200 * This code is called with the real reason code on the first
1201 * entry to a kdb session, thereafter it is called with reason
1202 * SWITCH, even if the user goes back to the original cpu.
1204 * reason The reason KDB was invoked
1205 * error The hardware-defined error code
1206 * regs The exception frame at time of fault/breakpoint.
1207 * db_result Result code from the break or debug point.
1209 * 0 KDB was invoked for an event which it wasn't responsible
1210 * 1 KDB handled the event for which it was invoked.
1211 * KDB_CMD_GO User typed 'go'.
1212 * KDB_CMD_CPU User switched to another cpu.
1213 * KDB_CMD_SS Single step.
1215 static int kdb_local(kdb_reason_t reason, int error, struct pt_regs *regs,
1216 kdb_dbtrap_t db_result)
1220 struct task_struct *kdb_current =
1221 curr_task(raw_smp_processor_id());
1223 KDB_DEBUG_STATE("kdb_local 1", reason);
1225 kdb_check_for_lockdown();
1228 if (reason == KDB_REASON_DEBUG) {
1229 /* special case below */
1231 kdb_printf("\nEntering kdb (current=0x%px, pid %d) ",
1232 kdb_current, kdb_current ? kdb_current->pid : 0);
1233 #if defined(CONFIG_SMP)
1234 kdb_printf("on processor %d ", raw_smp_processor_id());
1239 case KDB_REASON_DEBUG:
1242 * If re-entering kdb after a single step
1243 * command, don't print the message.
1245 switch (db_result) {
1247 kdb_printf("\nEntering kdb (0x%px, pid %d) ",
1248 kdb_current, kdb_current->pid);
1249 #if defined(CONFIG_SMP)
1250 kdb_printf("on processor %d ", raw_smp_processor_id());
1252 kdb_printf("due to Debug @ " kdb_machreg_fmt "\n",
1253 instruction_pointer(regs));
1258 KDB_DEBUG_STATE("kdb_local 4", reason);
1259 return 1; /* kdba_db_trap did the work */
1261 kdb_printf("kdb: Bad result from kdba_db_trap: %d\n",
1268 case KDB_REASON_ENTER:
1269 if (KDB_STATE(KEYBOARD))
1270 kdb_printf("due to Keyboard Entry\n");
1272 kdb_printf("due to KDB_ENTER()\n");
1274 case KDB_REASON_KEYBOARD:
1275 KDB_STATE_SET(KEYBOARD);
1276 kdb_printf("due to Keyboard Entry\n");
1278 case KDB_REASON_ENTER_SLAVE:
1279 /* drop through, slaves only get released via cpu switch */
1280 case KDB_REASON_SWITCH:
1281 kdb_printf("due to cpu switch\n");
1283 case KDB_REASON_OOPS:
1284 kdb_printf("Oops: %s\n", kdb_diemsg);
1285 kdb_printf("due to oops @ " kdb_machreg_fmt "\n",
1286 instruction_pointer(regs));
1289 case KDB_REASON_SYSTEM_NMI:
1290 kdb_printf("due to System NonMaskable Interrupt\n");
1292 case KDB_REASON_NMI:
1293 kdb_printf("due to NonMaskable Interrupt @ "
1294 kdb_machreg_fmt "\n",
1295 instruction_pointer(regs));
1297 case KDB_REASON_SSTEP:
1298 case KDB_REASON_BREAK:
1299 kdb_printf("due to %s @ " kdb_machreg_fmt "\n",
1300 reason == KDB_REASON_BREAK ?
1301 "Breakpoint" : "SS trap", instruction_pointer(regs));
1303 * Determine if this breakpoint is one that we
1304 * are interested in.
1306 if (db_result != KDB_DB_BPT) {
1307 kdb_printf("kdb: error return from kdba_bp_trap: %d\n",
1309 KDB_DEBUG_STATE("kdb_local 6", reason);
1310 return 0; /* Not for us, dismiss it */
1313 case KDB_REASON_RECURSE:
1314 kdb_printf("due to Recursion @ " kdb_machreg_fmt "\n",
1315 instruction_pointer(regs));
1318 kdb_printf("kdb: unexpected reason code: %d\n", reason);
1319 KDB_DEBUG_STATE("kdb_local 8", reason);
1320 return 0; /* Not for us, dismiss it */
1325 * Initialize pager context.
1328 KDB_STATE_CLEAR(SUPPRESS);
1329 kdb_grepping_flag = 0;
1330 /* ensure the old search does not leak into '/' commands */
1331 kdb_grep_string[0] = '\0';
1335 *(cmd_hist[cmd_head]) = '\0';
1338 /* PROMPT can only be set if we have MEM_READ permission. */
1339 snprintf(kdb_prompt_str, CMD_BUFLEN, kdbgetenv("PROMPT"),
1340 raw_smp_processor_id());
1343 * Fetch command from keyboard
1345 cmdbuf = kdb_getstr(cmdbuf, CMD_BUFLEN, kdb_prompt_str);
1346 if (*cmdbuf != '\n') {
1348 if (cmdptr == cmd_head) {
1349 strscpy(cmd_hist[cmd_head], cmd_cur,
1351 *(cmd_hist[cmd_head] +
1352 strlen(cmd_hist[cmd_head])-1) = '\0';
1354 if (!handle_ctrl_cmd(cmdbuf))
1355 *(cmd_cur+strlen(cmd_cur)-1) = '\0';
1357 goto do_full_getstr;
1359 strscpy(cmd_hist[cmd_head], cmd_cur,
1363 cmd_head = (cmd_head+1) % KDB_CMD_HISTORY_COUNT;
1364 if (cmd_head == cmd_tail)
1365 cmd_tail = (cmd_tail+1) % KDB_CMD_HISTORY_COUNT;
1369 diag = kdb_parse(cmdbuf);
1370 if (diag == KDB_NOTFOUND) {
1371 drop_newline(cmdbuf);
1372 kdb_printf("Unknown kdb command: '%s'\n", cmdbuf);
1375 if (diag == KDB_CMD_GO
1376 || diag == KDB_CMD_CPU
1377 || diag == KDB_CMD_SS
1378 || diag == KDB_CMD_KGDB)
1384 KDB_DEBUG_STATE("kdb_local 9", diag);
1390 * kdb_print_state - Print the state data for the current processor
1393 * text Identifies the debug point
1394 * value Any integer value to be printed, e.g. reason code.
1396 void kdb_print_state(const char *text, int value)
1398 kdb_printf("state: %s cpu %d value %d initial %d state %x\n",
1399 text, raw_smp_processor_id(), value, kdb_initial_cpu,
1404 * kdb_main_loop - After initial setup and assignment of the
1405 * controlling cpu, all cpus are in this loop. One cpu is in
1406 * control and will issue the kdb prompt, the others will spin
1407 * until 'go' or cpu switch.
1409 * To get a consistent view of the kernel stacks for all
1410 * processes, this routine is invoked from the main kdb code via
1411 * an architecture specific routine. kdba_main_loop is
1412 * responsible for making the kernel stacks consistent for all
1413 * processes, there should be no difference between a blocked
1414 * process and a running process as far as kdb is concerned.
1416 * reason The reason KDB was invoked
1417 * error The hardware-defined error code
1418 * reason2 kdb's current reason code.
1419 * Initially error but can change
1420 * according to kdb state.
1421 * db_result Result code from break or debug point.
1422 * regs The exception frame at time of fault/breakpoint.
1423 * should always be valid.
1425 * 0 KDB was invoked for an event which it wasn't responsible
1426 * 1 KDB handled the event for which it was invoked.
1428 int kdb_main_loop(kdb_reason_t reason, kdb_reason_t reason2, int error,
1429 kdb_dbtrap_t db_result, struct pt_regs *regs)
1432 /* Stay in kdb() until 'go', 'ss[b]' or an error */
1435 * All processors except the one that is in control
1438 KDB_DEBUG_STATE("kdb_main_loop 1", reason);
1439 while (KDB_STATE(HOLD_CPU)) {
1440 /* state KDB is turned off by kdb_cpu to see if the
1441 * other cpus are still live, each cpu in this loop
1444 if (!KDB_STATE(KDB))
1448 KDB_STATE_CLEAR(SUPPRESS);
1449 KDB_DEBUG_STATE("kdb_main_loop 2", reason);
1450 if (KDB_STATE(LEAVING))
1451 break; /* Another cpu said 'go' */
1452 /* Still using kdb, this processor is in control */
1453 result = kdb_local(reason2, error, regs, db_result);
1454 KDB_DEBUG_STATE("kdb_main_loop 3", result);
1456 if (result == KDB_CMD_CPU)
1459 if (result == KDB_CMD_SS) {
1460 KDB_STATE_SET(DOING_SS);
1464 if (result == KDB_CMD_KGDB) {
1465 if (!KDB_STATE(DOING_KGDB))
1466 kdb_printf("Entering please attach debugger "
1467 "or use $D#44+ or $3#33\n");
1470 if (result && result != 1 && result != KDB_CMD_GO)
1471 kdb_printf("\nUnexpected kdb_local return code %d\n",
1473 KDB_DEBUG_STATE("kdb_main_loop 4", reason);
1476 if (KDB_STATE(DOING_SS))
1477 KDB_STATE_CLEAR(SSBPT);
1479 /* Clean up any keyboard devices before leaving */
1480 kdb_kbd_cleanup_state();
1486 * kdb_mdr - This function implements the guts of the 'mdr', memory
1488 * mdr <addr arg>,<byte count>
1490 * addr Start address
1491 * count Number of bytes
1493 * Always 0. Any errors are detected and printed by kdb_getarea.
1495 static int kdb_mdr(unsigned long addr, unsigned int count)
1499 if (kdb_getarea(c, addr))
1501 kdb_printf("%02x", c);
1509 * kdb_md - This function implements the 'md', 'md1', 'md2', 'md4',
1510 * 'md8' 'mdr' and 'mds' commands.
1512 * md|mds [<addr arg> [<line count> [<radix>]]]
1513 * mdWcN [<addr arg> [<line count> [<radix>]]]
1514 * where W = is the width (1, 2, 4 or 8) and N is the count.
1515 * for eg., md1c20 reads 20 bytes, 1 at a time.
1516 * mdr <addr arg>,<byte count>
1518 static void kdb_md_line(const char *fmtstr, unsigned long addr,
1519 int symbolic, int nosect, int bytesperword,
1520 int num, int repeat, int phys)
1522 /* print just one line of data */
1523 kdb_symtab_t symtab;
1530 memset(cbuf, '\0', sizeof(cbuf));
1532 kdb_printf("phys " kdb_machreg_fmt0 " ", addr);
1534 kdb_printf(kdb_machreg_fmt0 " ", addr);
1536 for (i = 0; i < num && repeat--; i++) {
1538 if (kdb_getphysword(&word, addr, bytesperword))
1540 } else if (kdb_getword(&word, addr, bytesperword))
1542 kdb_printf(fmtstr, word);
1544 kdbnearsym(word, &symtab);
1546 memset(&symtab, 0, sizeof(symtab));
1547 if (symtab.sym_name) {
1548 kdb_symbol_print(word, &symtab, 0);
1551 kdb_printf(" %s %s "
1554 kdb_machreg_fmt, symtab.mod_name,
1555 symtab.sec_name, symtab.sec_start,
1556 symtab.sym_start, symtab.sym_end);
1558 addr += bytesperword;
1566 cp = wc.c + 8 - bytesperword;
1571 #define printable_char(c) \
1572 ({unsigned char __c = c; isascii(__c) && isprint(__c) ? __c : '.'; })
1573 for (j = 0; j < bytesperword; j++)
1574 *c++ = printable_char(*cp++);
1575 addr += bytesperword;
1576 #undef printable_char
1579 kdb_printf("%*s %s\n", (int)((num-i)*(2*bytesperword + 1)+1),
1583 static int kdb_md(int argc, const char **argv)
1585 static unsigned long last_addr;
1586 static int last_radix, last_bytesperword, last_repeat;
1587 int radix = 16, mdcount = 8, bytesperword = KDB_WORD_SIZE, repeat;
1589 char fmtchar, fmtstr[64];
1598 kdbgetintenv("MDCOUNT", &mdcount);
1599 kdbgetintenv("RADIX", &radix);
1600 kdbgetintenv("BYTESPERWORD", &bytesperword);
1602 /* Assume 'md <addr>' and start with environment values */
1603 repeat = mdcount * 16 / bytesperword;
1605 if (strcmp(argv[0], "mdr") == 0) {
1606 if (argc == 2 || (argc == 0 && last_addr != 0))
1609 return KDB_ARGCOUNT;
1610 } else if (isdigit(argv[0][2])) {
1611 bytesperword = (int)(argv[0][2] - '0');
1612 if (bytesperword == 0) {
1613 bytesperword = last_bytesperword;
1614 if (bytesperword == 0)
1617 last_bytesperword = bytesperword;
1618 repeat = mdcount * 16 / bytesperword;
1621 else if (argv[0][3] == 'c' && argv[0][4]) {
1623 repeat = simple_strtoul(argv[0] + 4, &p, 10);
1624 mdcount = ((repeat * bytesperword) + 15) / 16;
1627 last_repeat = repeat;
1628 } else if (strcmp(argv[0], "md") == 0)
1630 else if (strcmp(argv[0], "mds") == 0)
1632 else if (strcmp(argv[0], "mdp") == 0) {
1636 return KDB_NOTFOUND;
1640 return KDB_ARGCOUNT;
1643 bytesperword = last_bytesperword;
1644 repeat = last_repeat;
1648 mdcount = ((repeat * bytesperword) + 15) / 16;
1653 int diag, nextarg = 1;
1654 diag = kdbgetaddrarg(argc, argv, &nextarg, &addr,
1658 if (argc > nextarg+2)
1659 return KDB_ARGCOUNT;
1661 if (argc >= nextarg) {
1662 diag = kdbgetularg(argv[nextarg], &val);
1664 mdcount = (int) val;
1668 repeat = mdcount * 16 / bytesperword;
1671 if (argc >= nextarg+1) {
1672 diag = kdbgetularg(argv[nextarg+1], &val);
1678 if (strcmp(argv[0], "mdr") == 0) {
1681 ret = kdb_mdr(addr, mdcount);
1682 last_addr += mdcount;
1683 last_repeat = mdcount;
1684 last_bytesperword = bytesperword; // to make REPEAT happy
1699 return KDB_BADRADIX;
1704 if (bytesperword > KDB_WORD_SIZE)
1705 return KDB_BADWIDTH;
1707 switch (bytesperword) {
1709 sprintf(fmtstr, "%%16.16l%c ", fmtchar);
1712 sprintf(fmtstr, "%%8.8l%c ", fmtchar);
1715 sprintf(fmtstr, "%%4.4l%c ", fmtchar);
1718 sprintf(fmtstr, "%%2.2l%c ", fmtchar);
1721 return KDB_BADWIDTH;
1724 last_repeat = repeat;
1725 last_bytesperword = bytesperword;
1727 if (strcmp(argv[0], "mds") == 0) {
1729 /* Do not save these changes as last_*, they are temporary mds
1732 bytesperword = KDB_WORD_SIZE;
1734 kdbgetintenv("NOSECT", &nosect);
1737 /* Round address down modulo BYTESPERWORD */
1739 addr &= ~(bytesperword-1);
1741 while (repeat > 0) {
1743 int n, z, num = (symbolic ? 1 : (16 / bytesperword));
1745 if (KDB_FLAG(CMD_INTERRUPT))
1747 for (a = addr, z = 0; z < repeat; a += bytesperword, ++z) {
1749 if (kdb_getphysword(&word, a, bytesperword)
1752 } else if (kdb_getword(&word, a, bytesperword) || word)
1755 n = min(num, repeat);
1756 kdb_md_line(fmtstr, addr, symbolic, nosect, bytesperword,
1758 addr += bytesperword * n;
1760 z = (z + num - 1) / num;
1762 int s = num * (z-2);
1763 kdb_printf(kdb_machreg_fmt0 "-" kdb_machreg_fmt0
1764 " zero suppressed\n",
1765 addr, addr + bytesperword * s - 1);
1766 addr += bytesperword * s;
1776 * kdb_mm - This function implements the 'mm' command.
1777 * mm address-expression new-value
1779 * mm works on machine words, mmW works on bytes.
1781 static int kdb_mm(int argc, const char **argv)
1786 unsigned long contents;
1790 if (argv[0][2] && !isdigit(argv[0][2]))
1791 return KDB_NOTFOUND;
1794 return KDB_ARGCOUNT;
1797 diag = kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL);
1802 return KDB_ARGCOUNT;
1803 diag = kdbgetaddrarg(argc, argv, &nextarg, &contents, NULL, NULL);
1807 if (nextarg != argc + 1)
1808 return KDB_ARGCOUNT;
1810 width = argv[0][2] ? (argv[0][2] - '0') : (KDB_WORD_SIZE);
1811 diag = kdb_putword(addr, contents, width);
1815 kdb_printf(kdb_machreg_fmt " = " kdb_machreg_fmt "\n", addr, contents);
1821 * kdb_go - This function implements the 'go' command.
1822 * go [address-expression]
1824 static int kdb_go(int argc, const char **argv)
1831 if (raw_smp_processor_id() != kdb_initial_cpu) {
1832 kdb_printf("go must execute on the entry cpu, "
1833 "please use \"cpu %d\" and then execute go\n",
1835 return KDB_BADCPUNUM;
1839 diag = kdbgetaddrarg(argc, argv, &nextarg,
1840 &addr, &offset, NULL);
1844 return KDB_ARGCOUNT;
1848 if (KDB_FLAG(CATASTROPHIC)) {
1849 kdb_printf("Catastrophic error detected\n");
1850 kdb_printf("kdb_continue_catastrophic=%d, ",
1851 kdb_continue_catastrophic);
1852 if (kdb_continue_catastrophic == 0 && kdb_go_count++ == 0) {
1853 kdb_printf("type go a second time if you really want "
1857 if (kdb_continue_catastrophic == 2) {
1858 kdb_printf("forcing reboot\n");
1859 kdb_reboot(0, NULL);
1861 kdb_printf("attempting to continue\n");
1867 * kdb_rd - This function implements the 'rd' command.
1869 static int kdb_rd(int argc, const char **argv)
1871 int len = kdb_check_regs();
1872 #if DBG_MAX_REG_NUM > 0
1884 for (i = 0; i < DBG_MAX_REG_NUM; i++) {
1885 rsize = dbg_reg_def[i].size * 2;
1888 if (len + strlen(dbg_reg_def[i].name) + 4 + rsize > 80) {
1893 len += kdb_printf(" ");
1894 switch(dbg_reg_def[i].size * 8) {
1896 rname = dbg_get_reg(i, ®8, kdb_current_regs);
1899 len += kdb_printf("%s: %02x", rname, reg8);
1902 rname = dbg_get_reg(i, ®16, kdb_current_regs);
1905 len += kdb_printf("%s: %04x", rname, reg16);
1908 rname = dbg_get_reg(i, ®32, kdb_current_regs);
1911 len += kdb_printf("%s: %08x", rname, reg32);
1914 rname = dbg_get_reg(i, ®64, kdb_current_regs);
1917 len += kdb_printf("%s: %016llx", rname, reg64);
1920 len += kdb_printf("%s: ??", dbg_reg_def[i].name);
1928 kdb_dumpregs(kdb_current_regs);
1934 * kdb_rm - This function implements the 'rm' (register modify) command.
1935 * rm register-name new-contents
1937 * Allows register modification with the same restrictions as gdb
1939 static int kdb_rm(int argc, const char **argv)
1941 #if DBG_MAX_REG_NUM > 0
1951 return KDB_ARGCOUNT;
1953 * Allow presence or absence of leading '%' symbol.
1959 diag = kdbgetu64arg(argv[2], ®64);
1963 diag = kdb_check_regs();
1968 for (i = 0; i < DBG_MAX_REG_NUM; i++) {
1969 if (strcmp(rname, dbg_reg_def[i].name) == 0) {
1975 switch(dbg_reg_def[i].size * 8) {
1978 dbg_set_reg(i, ®8, kdb_current_regs);
1982 dbg_set_reg(i, ®16, kdb_current_regs);
1986 dbg_set_reg(i, ®32, kdb_current_regs);
1989 dbg_set_reg(i, ®64, kdb_current_regs);
1995 kdb_printf("ERROR: Register set currently not implemented\n");
2000 #if defined(CONFIG_MAGIC_SYSRQ)
2002 * kdb_sr - This function implements the 'sr' (SYSRQ key) command
2003 * which interfaces to the soi-disant MAGIC SYSRQ functionality.
2004 * sr <magic-sysrq-code>
2006 static int kdb_sr(int argc, const char **argv)
2009 !kdb_check_flags(KDB_ENABLE_ALL, kdb_cmd_enabled, false);
2012 return KDB_ARGCOUNT;
2015 __handle_sysrq(*argv[1], check_mask);
2020 #endif /* CONFIG_MAGIC_SYSRQ */
2023 * kdb_ef - This function implements the 'regs' (display exception
2024 * frame) command. This command takes an address and expects to
2025 * find an exception frame at that address, formats and prints
2027 * regs address-expression
2031 static int kdb_ef(int argc, const char **argv)
2039 return KDB_ARGCOUNT;
2042 diag = kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL);
2045 show_regs((struct pt_regs *)addr);
2050 * kdb_env - This function implements the 'env' command. Display the
2051 * current environment variables.
2054 static int kdb_env(int argc, const char **argv)
2058 if (KDB_DEBUG(MASK))
2059 kdb_printf("KDBDEBUG=0x%x\n",
2060 (kdb_flags & KDB_DEBUG(MASK)) >> KDB_DEBUG_FLAG_SHIFT);
2065 #ifdef CONFIG_PRINTK
2067 * kdb_dmesg - This function implements the 'dmesg' command to display
2068 * the contents of the syslog buffer.
2069 * dmesg [lines] [adjust]
2071 static int kdb_dmesg(int argc, const char **argv)
2079 struct kmsg_dump_iter iter;
2084 return KDB_ARGCOUNT;
2087 lines = simple_strtol(argv[1], &cp, 0);
2091 adjust = simple_strtoul(argv[2], &cp, 0);
2092 if (*cp || adjust < 0)
2097 /* disable LOGGING if set */
2098 diag = kdbgetintenv("LOGGING", &logging);
2099 if (!diag && logging) {
2100 const char *setargs[] = { "set", "LOGGING", "0" };
2101 kdb_set(2, setargs);
2104 kmsg_dump_rewind(&iter);
2105 while (kmsg_dump_get_line(&iter, 1, NULL, 0, NULL))
2110 kdb_printf("buffer only contains %d lines, nothing "
2112 else if (adjust - lines >= n)
2113 kdb_printf("buffer only contains %d lines, last %d "
2114 "lines printed\n", n, n - adjust);
2117 } else if (lines > 0) {
2118 skip = n - lines - adjust;
2121 kdb_printf("buffer only contains %d lines, "
2122 "nothing printed\n", n);
2124 } else if (skip < 0) {
2127 kdb_printf("buffer only contains %d lines, first "
2128 "%d lines printed\n", n, lines);
2134 if (skip >= n || skip < 0)
2137 kmsg_dump_rewind(&iter);
2138 while (kmsg_dump_get_line(&iter, 1, buf, sizeof(buf), &len)) {
2145 if (KDB_FLAG(CMD_INTERRUPT))
2148 kdb_printf("%.*s\n", (int)len - 1, buf);
2153 #endif /* CONFIG_PRINTK */
2155 /* Make sure we balance enable/disable calls, must disable first. */
2156 static atomic_t kdb_nmi_disabled;
2158 static int kdb_disable_nmi(int argc, const char *argv[])
2160 if (atomic_read(&kdb_nmi_disabled))
2162 atomic_set(&kdb_nmi_disabled, 1);
2163 arch_kgdb_ops.enable_nmi(0);
2167 static int kdb_param_enable_nmi(const char *val, const struct kernel_param *kp)
2169 if (!atomic_add_unless(&kdb_nmi_disabled, -1, 0))
2171 arch_kgdb_ops.enable_nmi(1);
2175 static const struct kernel_param_ops kdb_param_ops_enable_nmi = {
2176 .set = kdb_param_enable_nmi,
2178 module_param_cb(enable_nmi, &kdb_param_ops_enable_nmi, NULL, 0600);
2181 * kdb_cpu - This function implements the 'cpu' command.
2184 * KDB_CMD_CPU for success, a kdb diagnostic if error
2186 static void kdb_cpu_status(void)
2188 int i, start_cpu, first_print = 1;
2189 char state, prev_state = '?';
2191 kdb_printf("Currently on cpu %d\n", raw_smp_processor_id());
2192 kdb_printf("Available cpus: ");
2193 for (start_cpu = -1, i = 0; i < NR_CPUS; i++) {
2194 if (!cpu_online(i)) {
2195 state = 'F'; /* cpu is offline */
2196 } else if (!kgdb_info[i].enter_kgdb) {
2197 state = 'D'; /* cpu is online but unresponsive */
2199 state = ' '; /* cpu is responding to kdb */
2200 if (kdb_task_state_char(KDB_TSK(i)) == '-')
2201 state = '-'; /* idle task */
2203 if (state != prev_state) {
2204 if (prev_state != '?') {
2208 kdb_printf("%d", start_cpu);
2209 if (start_cpu < i-1)
2210 kdb_printf("-%d", i-1);
2211 if (prev_state != ' ')
2212 kdb_printf("(%c)", prev_state);
2218 /* print the trailing cpus, ignoring them if they are all offline */
2219 if (prev_state != 'F') {
2222 kdb_printf("%d", start_cpu);
2223 if (start_cpu < i-1)
2224 kdb_printf("-%d", i-1);
2225 if (prev_state != ' ')
2226 kdb_printf("(%c)", prev_state);
2231 static int kdb_cpu(int argc, const char **argv)
2233 unsigned long cpunum;
2242 return KDB_ARGCOUNT;
2244 diag = kdbgetularg(argv[1], &cpunum);
2251 if ((cpunum >= CONFIG_NR_CPUS) || !kgdb_info[cpunum].enter_kgdb)
2252 return KDB_BADCPUNUM;
2254 dbg_switch_cpu = cpunum;
2257 * Switch to other cpu
2262 /* The user may not realize that ps/bta with no parameters does not print idle
2263 * or sleeping system daemon processes, so tell them how many were suppressed.
2265 void kdb_ps_suppressed(void)
2267 int idle = 0, daemon = 0;
2269 const struct task_struct *p, *g;
2270 for_each_online_cpu(cpu) {
2272 if (kdb_task_state(p, "-"))
2275 for_each_process_thread(g, p) {
2276 if (kdb_task_state(p, "ims"))
2279 if (idle || daemon) {
2281 kdb_printf("%d idle process%s (state -)%s\n",
2282 idle, idle == 1 ? "" : "es",
2283 daemon ? " and " : "");
2285 kdb_printf("%d sleeping system daemon (state [ims]) "
2286 "process%s", daemon,
2287 daemon == 1 ? "" : "es");
2288 kdb_printf(" suppressed,\nuse 'ps A' to see all.\n");
2292 void kdb_ps1(const struct task_struct *p)
2298 copy_from_kernel_nofault(&tmp, (char *)p, sizeof(unsigned long)))
2301 cpu = kdb_process_cpu(p);
2302 kdb_printf("0x%px %8d %8d %d %4d %c 0x%px %c%s\n",
2303 (void *)p, p->pid, p->parent->pid,
2304 kdb_task_has_cpu(p), kdb_process_cpu(p),
2305 kdb_task_state_char(p),
2306 (void *)(&p->thread),
2307 p == curr_task(raw_smp_processor_id()) ? '*' : ' ',
2309 if (kdb_task_has_cpu(p)) {
2310 if (!KDB_TSK(cpu)) {
2311 kdb_printf(" Error: no saved data for this cpu\n");
2313 if (KDB_TSK(cpu) != p)
2314 kdb_printf(" Error: does not match running "
2315 "process table (0x%px)\n", KDB_TSK(cpu));
2321 * kdb_ps - This function implements the 'ps' command which shows a
2322 * list of the active processes.
2324 * ps [<state_chars>] Show processes, optionally selecting only those whose
2325 * state character is found in <state_chars>.
2327 static int kdb_ps(int argc, const char **argv)
2329 struct task_struct *g, *p;
2334 kdb_ps_suppressed();
2335 kdb_printf("%-*s Pid Parent [*] cpu State %-*s Command\n",
2336 (int)(2*sizeof(void *))+2, "Task Addr",
2337 (int)(2*sizeof(void *))+2, "Thread");
2338 mask = argc ? argv[1] : kdbgetenv("PS");
2339 /* Run the active tasks first */
2340 for_each_online_cpu(cpu) {
2341 if (KDB_FLAG(CMD_INTERRUPT))
2344 if (kdb_task_state(p, mask))
2348 /* Now the real tasks */
2349 for_each_process_thread(g, p) {
2350 if (KDB_FLAG(CMD_INTERRUPT))
2352 if (kdb_task_state(p, mask))
2360 * kdb_pid - This function implements the 'pid' command which switches
2361 * the currently active process.
2364 static int kdb_pid(int argc, const char **argv)
2366 struct task_struct *p;
2371 return KDB_ARGCOUNT;
2374 if (strcmp(argv[1], "R") == 0) {
2375 p = KDB_TSK(kdb_initial_cpu);
2377 diag = kdbgetularg(argv[1], &val);
2381 p = find_task_by_pid_ns((pid_t)val, &init_pid_ns);
2383 kdb_printf("No task with pid=%d\n", (pid_t)val);
2387 kdb_set_current_task(p);
2389 kdb_printf("KDB current process is %s(pid=%d)\n",
2390 kdb_current_task->comm,
2391 kdb_current_task->pid);
2396 static int kdb_kgdb(int argc, const char **argv)
2398 return KDB_CMD_KGDB;
2402 * kdb_help - This function implements the 'help' and '?' commands.
2404 static int kdb_help(int argc, const char **argv)
2408 kdb_printf("%-15.15s %-20.20s %s\n", "Command", "Usage", "Description");
2409 kdb_printf("-----------------------------"
2410 "-----------------------------\n");
2411 list_for_each_entry(kt, &kdb_cmds_head, list_node) {
2413 if (KDB_FLAG(CMD_INTERRUPT))
2415 if (!kdb_check_flags(kt->flags, kdb_cmd_enabled, true))
2417 if (strlen(kt->usage) > 20)
2419 kdb_printf("%-15.15s %-20s%s%s\n", kt->name,
2420 kt->usage, space, kt->help);
2426 * kdb_kill - This function implements the 'kill' commands.
2428 static int kdb_kill(int argc, const char **argv)
2432 struct task_struct *p;
2435 return KDB_ARGCOUNT;
2437 sig = simple_strtol(argv[1], &endp, 0);
2440 if ((sig >= 0) || !valid_signal(-sig)) {
2441 kdb_printf("Invalid signal parameter.<-signal>\n");
2446 pid = simple_strtol(argv[2], &endp, 0);
2450 kdb_printf("Process ID must be large than 0.\n");
2454 /* Find the process. */
2455 p = find_task_by_pid_ns(pid, &init_pid_ns);
2457 kdb_printf("The specified process isn't found.\n");
2460 p = p->group_leader;
2461 kdb_send_sig(p, sig);
2466 * Most of this code has been lifted from kernel/timer.c::sys_sysinfo().
2467 * I cannot call that code directly from kdb, it has an unconditional
2468 * cli()/sti() and calls routines that take locks which can stop the debugger.
2470 static void kdb_sysinfo(struct sysinfo *val)
2472 u64 uptime = ktime_get_mono_fast_ns();
2474 memset(val, 0, sizeof(*val));
2475 val->uptime = div_u64(uptime, NSEC_PER_SEC);
2476 val->loads[0] = avenrun[0];
2477 val->loads[1] = avenrun[1];
2478 val->loads[2] = avenrun[2];
2479 val->procs = nr_threads-1;
2486 * kdb_summary - This function implements the 'summary' command.
2488 static int kdb_summary(int argc, const char **argv)
2494 return KDB_ARGCOUNT;
2496 kdb_printf("sysname %s\n", init_uts_ns.name.sysname);
2497 kdb_printf("release %s\n", init_uts_ns.name.release);
2498 kdb_printf("version %s\n", init_uts_ns.name.version);
2499 kdb_printf("machine %s\n", init_uts_ns.name.machine);
2500 kdb_printf("nodename %s\n", init_uts_ns.name.nodename);
2501 kdb_printf("domainname %s\n", init_uts_ns.name.domainname);
2503 now = __ktime_get_real_seconds();
2504 kdb_printf("date %ptTs tz_minuteswest %d\n", &now, sys_tz.tz_minuteswest);
2506 kdb_printf("uptime ");
2507 if (val.uptime > (24*60*60)) {
2508 int days = val.uptime / (24*60*60);
2509 val.uptime %= (24*60*60);
2510 kdb_printf("%d day%s ", days, str_plural(days));
2512 kdb_printf("%02ld:%02ld\n", val.uptime/(60*60), (val.uptime/60)%60);
2514 kdb_printf("load avg %ld.%02ld %ld.%02ld %ld.%02ld\n",
2515 LOAD_INT(val.loads[0]), LOAD_FRAC(val.loads[0]),
2516 LOAD_INT(val.loads[1]), LOAD_FRAC(val.loads[1]),
2517 LOAD_INT(val.loads[2]), LOAD_FRAC(val.loads[2]));
2519 /* Display in kilobytes */
2520 #define K(x) ((x) << (PAGE_SHIFT - 10))
2521 kdb_printf("\nMemTotal: %8lu kB\nMemFree: %8lu kB\n"
2522 "Buffers: %8lu kB\n",
2523 K(val.totalram), K(val.freeram), K(val.bufferram));
2528 * kdb_per_cpu - This function implements the 'per_cpu' command.
2530 static int kdb_per_cpu(int argc, const char **argv)
2533 int cpu, diag, nextarg = 1;
2534 unsigned long addr, symaddr, val, bytesperword = 0, whichcpu = ~0UL;
2536 if (argc < 1 || argc > 3)
2537 return KDB_ARGCOUNT;
2539 diag = kdbgetaddrarg(argc, argv, &nextarg, &symaddr, NULL, NULL);
2544 diag = kdbgetularg(argv[2], &bytesperword);
2549 bytesperword = KDB_WORD_SIZE;
2550 else if (bytesperword > KDB_WORD_SIZE)
2551 return KDB_BADWIDTH;
2552 sprintf(fmtstr, "%%0%dlx ", (int)(2*bytesperword));
2554 diag = kdbgetularg(argv[3], &whichcpu);
2557 if (whichcpu >= nr_cpu_ids || !cpu_online(whichcpu)) {
2558 kdb_printf("cpu %ld is not online\n", whichcpu);
2559 return KDB_BADCPUNUM;
2563 /* Most architectures use __per_cpu_offset[cpu], some use
2564 * __per_cpu_offset(cpu), smp has no __per_cpu_offset.
2566 #ifdef __per_cpu_offset
2567 #define KDB_PCU(cpu) __per_cpu_offset(cpu)
2570 #define KDB_PCU(cpu) __per_cpu_offset[cpu]
2572 #define KDB_PCU(cpu) 0
2575 for_each_online_cpu(cpu) {
2576 if (KDB_FLAG(CMD_INTERRUPT))
2579 if (whichcpu != ~0UL && whichcpu != cpu)
2581 addr = symaddr + KDB_PCU(cpu);
2582 diag = kdb_getword(&val, addr, bytesperword);
2584 kdb_printf("%5d " kdb_bfd_vma_fmt0 " - unable to "
2585 "read, diag=%d\n", cpu, addr, diag);
2588 kdb_printf("%5d ", cpu);
2589 kdb_md_line(fmtstr, addr,
2590 bytesperword == KDB_WORD_SIZE,
2591 1, bytesperword, 1, 1, 0);
2598 * display help for the use of cmd | grep pattern
2600 static int kdb_grep_help(int argc, const char **argv)
2602 kdb_printf("Usage of cmd args | grep pattern:\n");
2603 kdb_printf(" Any command's output may be filtered through an ");
2604 kdb_printf("emulated 'pipe'.\n");
2605 kdb_printf(" 'grep' is just a key word.\n");
2606 kdb_printf(" The pattern may include a very limited set of "
2607 "metacharacters:\n");
2608 kdb_printf(" pattern or ^pattern or pattern$ or ^pattern$\n");
2609 kdb_printf(" And if there are spaces in the pattern, you may "
2611 kdb_printf(" \"pat tern\" or \"^pat tern\" or \"pat tern$\""
2612 " or \"^pat tern$\"\n");
2617 * kdb_register() - This function is used to register a kernel debugger
2619 * @cmd: pointer to kdb command
2621 * Note that it's the job of the caller to keep the memory for the cmd
2622 * allocated until unregister is called.
2624 int kdb_register(kdbtab_t *cmd)
2628 list_for_each_entry(kp, &kdb_cmds_head, list_node) {
2629 if (strcmp(kp->name, cmd->name) == 0) {
2630 kdb_printf("Duplicate kdb cmd: %s, func %p help %s\n",
2631 cmd->name, cmd->func, cmd->help);
2636 list_add_tail(&cmd->list_node, &kdb_cmds_head);
2639 EXPORT_SYMBOL_GPL(kdb_register);
2642 * kdb_register_table() - This function is used to register a kdb command
2644 * @kp: pointer to kdb command table
2645 * @len: length of kdb command table
2647 void kdb_register_table(kdbtab_t *kp, size_t len)
2650 list_add_tail(&kp->list_node, &kdb_cmds_head);
2656 * kdb_unregister() - This function is used to unregister a kernel debugger
2657 * command. It is generally called when a module which
2658 * implements kdb command is unloaded.
2659 * @cmd: pointer to kdb command
2661 void kdb_unregister(kdbtab_t *cmd)
2663 list_del(&cmd->list_node);
2665 EXPORT_SYMBOL_GPL(kdb_unregister);
2667 static kdbtab_t maintab[] = {
2671 .help = "Display Memory Contents, also mdWcN, e.g. md8c1",
2673 .flags = KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS,
2677 .usage = "<vaddr> <bytes>",
2678 .help = "Display Raw Memory",
2679 .flags = KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS,
2683 .usage = "<paddr> <bytes>",
2684 .help = "Display Physical Memory",
2685 .flags = KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS,
2690 .help = "Display Memory Symbolically",
2691 .flags = KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS,
2695 .usage = "<vaddr> <contents>",
2696 .help = "Modify Memory Contents",
2697 .flags = KDB_ENABLE_MEM_WRITE | KDB_REPEAT_NO_ARGS,
2701 .usage = "[<vaddr>]",
2702 .help = "Continue Execution",
2704 .flags = KDB_ENABLE_REG_WRITE |
2705 KDB_ENABLE_ALWAYS_SAFE_NO_ARGS,
2710 .help = "Display Registers",
2711 .flags = KDB_ENABLE_REG_READ,
2715 .usage = "<reg> <contents>",
2716 .help = "Modify Registers",
2717 .flags = KDB_ENABLE_REG_WRITE,
2722 .help = "Display exception frame",
2723 .flags = KDB_ENABLE_MEM_READ,
2727 .usage = "[<vaddr>]",
2728 .help = "Stack traceback",
2730 .flags = KDB_ENABLE_MEM_READ | KDB_ENABLE_INSPECT_NO_ARGS,
2735 .help = "Display stack for process <pid>",
2736 .flags = KDB_ENABLE_INSPECT,
2740 .usage = "[<state_chars>|A]",
2741 .help = "Backtrace all processes whose state matches",
2742 .flags = KDB_ENABLE_INSPECT,
2747 .help = "Backtrace current process on each cpu",
2748 .flags = KDB_ENABLE_INSPECT,
2753 .help = "Backtrace process given its struct task address",
2754 .flags = KDB_ENABLE_MEM_READ | KDB_ENABLE_INSPECT_NO_ARGS,
2759 .help = "Show environment variables",
2760 .flags = KDB_ENABLE_ALWAYS_SAFE,
2765 .help = "Set environment variables",
2766 .flags = KDB_ENABLE_ALWAYS_SAFE,
2771 .help = "Display Help Message",
2773 .flags = KDB_ENABLE_ALWAYS_SAFE,
2778 .help = "Display Help Message",
2779 .flags = KDB_ENABLE_ALWAYS_SAFE,
2783 .usage = "<cpunum>",
2784 .help = "Switch to new cpu",
2785 .flags = KDB_ENABLE_ALWAYS_SAFE_NO_ARGS,
2790 .help = "Enter kgdb mode",
2795 .usage = "[<state_chars>|A]",
2796 .help = "Display active task list",
2797 .flags = KDB_ENABLE_INSPECT,
2801 .usage = "<pidnum>",
2802 .help = "Switch to another task",
2803 .flags = KDB_ENABLE_INSPECT,
2808 .help = "Reboot the machine immediately",
2809 .flags = KDB_ENABLE_REBOOT,
2811 #if defined(CONFIG_MODULES)
2815 .help = "List loaded kernel modules",
2816 .flags = KDB_ENABLE_INSPECT,
2819 #if defined(CONFIG_MAGIC_SYSRQ)
2823 .help = "Magic SysRq key",
2824 .flags = KDB_ENABLE_ALWAYS_SAFE,
2827 #if defined(CONFIG_PRINTK)
2831 .help = "Display syslog buffer",
2832 .flags = KDB_ENABLE_ALWAYS_SAFE,
2837 .usage = "name \"usage\" \"help\"",
2838 .help = "Define a set of commands, down to endefcmd",
2840 * Macros are always safe because when executed each
2841 * internal command re-enters kdb_parse() and is safety
2842 * checked individually.
2844 .flags = KDB_ENABLE_ALWAYS_SAFE,
2848 .usage = "<-signal> <pid>",
2849 .help = "Send a signal to a process",
2850 .flags = KDB_ENABLE_SIGNAL,
2852 { .name = "summary",
2853 .func = kdb_summary,
2855 .help = "Summarize the system",
2857 .flags = KDB_ENABLE_ALWAYS_SAFE,
2859 { .name = "per_cpu",
2860 .func = kdb_per_cpu,
2861 .usage = "<sym> [<bytes>] [<cpu>]",
2862 .help = "Display per_cpu variables",
2864 .flags = KDB_ENABLE_MEM_READ,
2866 { .name = "grephelp",
2867 .func = kdb_grep_help,
2869 .help = "Display help on | grep",
2870 .flags = KDB_ENABLE_ALWAYS_SAFE,
2874 static kdbtab_t nmicmd = {
2875 .name = "disable_nmi",
2876 .func = kdb_disable_nmi,
2878 .help = "Disable NMI entry to KDB",
2879 .flags = KDB_ENABLE_ALWAYS_SAFE,
2882 /* Initialize the kdb command table. */
2883 static void __init kdb_inittab(void)
2885 kdb_register_table(maintab, ARRAY_SIZE(maintab));
2886 if (arch_kgdb_ops.enable_nmi)
2887 kdb_register_table(&nmicmd, 1);
2890 /* Execute any commands defined in kdb_cmds. */
2891 static void __init kdb_cmd_init(void)
2894 for (i = 0; kdb_cmds[i]; ++i) {
2895 diag = kdb_parse(kdb_cmds[i]);
2897 kdb_printf("kdb command %s failed, kdb diag %d\n",
2900 if (defcmd_in_progress) {
2901 kdb_printf("Incomplete 'defcmd' set, forcing endefcmd\n");
2902 kdb_parse("endefcmd");
2906 /* Initialize kdb_printf, breakpoint tables and kdb state */
2907 void __init kdb_init(int lvl)
2909 static int kdb_init_lvl = KDB_NOT_INITIALIZED;
2912 if (kdb_init_lvl == KDB_INIT_FULL || lvl <= kdb_init_lvl)
2914 for (i = kdb_init_lvl; i < lvl; i++) {
2916 case KDB_NOT_INITIALIZED:
2917 kdb_inittab(); /* Initialize Command Table */
2918 kdb_initbptab(); /* Initialize Breakpoints */
2920 case KDB_INIT_EARLY:
2921 kdb_cmd_init(); /* Build kdb_cmds tables */