xref: /linux/kernel/debug/kdb/kdb_main.c (revision 8e07e0e3964ca4e23ce7b68e2096fe660a888942)
1 /*
2  * Kernel Debugger Architecture Independent Main Code
3  *
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
6  * for more details.
7  *
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.
12  */
13 
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>
30 #include <linux/mm.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"
49 
50 #undef	MODULE_PARAM_PREFIX
51 #define	MODULE_PARAM_PREFIX "kdb."
52 
53 static int kdb_cmd_enabled = CONFIG_KDB_DEFAULT_ENABLE;
54 module_param_named(cmd_enable, kdb_cmd_enabled, int, 0600);
55 
56 char kdb_grep_string[KDB_GREP_STRLEN];
57 int kdb_grepping_flag;
58 EXPORT_SYMBOL(kdb_grepping_flag);
59 int kdb_grep_leading;
60 int kdb_grep_trailing;
61 
62 /*
63  * Kernel debugger state flags
64  */
65 unsigned int kdb_flags;
66 
67 /*
68  * kdb_lock protects updates to kdb_initial_cpu.  Used to
69  * single thread processors through the kernel debugger.
70  */
71 int kdb_initial_cpu = -1;	/* cpu number that owns kdb */
72 int kdb_nextline = 1;
73 int kdb_state;			/* General KDB state */
74 
75 struct task_struct *kdb_current_task;
76 struct pt_regs *kdb_current_regs;
77 
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;
83 #else
84 static unsigned int kdb_continue_catastrophic;
85 #endif
86 
87 /* kdb_cmds_head describes the available commands. */
88 static LIST_HEAD(kdb_cmds_head);
89 
90 typedef struct _kdbmsg {
91 	int	km_diag;	/* kdb diagnostic */
92 	char	*km_msg;	/* Corresponding message text */
93 } kdbmsg_t;
94 
95 #define KDBMSG(msgnum, text) \
96 	{ KDB_##msgnum, text }
97 
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"),
112 #else
113 	KDBMSG(TOOMANYDBREGS, "More breakpoints than db registers defined"),
114 #endif
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"),
126 };
127 #undef KDBMSG
128 
129 static const int __nkdb_err = ARRAY_SIZE(kdbmsgs);
130 
131 
132 /*
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).
140  */
141 
142 static char *__env[31] = {
143 #if defined(CONFIG_SMP)
144 	"PROMPT=[%d]kdb> ",
145 #else
146 	"PROMPT=kdb> ",
147 #endif
148 	"MOREPROMPT=more> ",
149 	"RADIX=16",
150 	"MDCOUNT=8",		/* lines of md output */
151 	KDB_PLATFORM_ENV,
152 	"DTABCOUNT=30",
153 	"NOSECT=1",
154 };
155 
156 static const int __nenv = ARRAY_SIZE(__env);
157 
158 struct task_struct *kdb_curr_task(int cpu)
159 {
160 	struct task_struct *p = curr_task(cpu);
161 #ifdef	_TIF_MCA_INIT
162 	if ((task_thread_info(p)->flags & _TIF_MCA_INIT) && KDB_TSK(cpu))
163 		p = krp->p;
164 #endif
165 	return p;
166 }
167 
168 /*
169  * Update the permissions flags (kdb_cmd_enabled) to match the
170  * current lockdown state.
171  *
172  * Within this function the calls to security_locked_down() are "lazy". We
173  * avoid calling them if the current value of kdb_cmd_enabled already excludes
174  * flags that might be subject to lockdown. Additionally we deliberately check
175  * the lockdown flags independently (even though read lockdown implies write
176  * lockdown) since that results in both simpler code and clearer messages to
177  * the user on first-time debugger entry.
178  *
179  * The permission masks during a read+write lockdown permits the following
180  * flags: INSPECT, SIGNAL, REBOOT (and ALWAYS_SAFE).
181  *
182  * The INSPECT commands are not blocked during lockdown because they are
183  * not arbitrary memory reads. INSPECT covers the backtrace family (sometimes
184  * forcing them to have no arguments) and lsmod. These commands do expose
185  * some kernel state but do not allow the developer seated at the console to
186  * choose what state is reported. SIGNAL and REBOOT should not be controversial,
187  * given these are allowed for root during lockdown already.
188  */
189 static void kdb_check_for_lockdown(void)
190 {
191 	const int write_flags = KDB_ENABLE_MEM_WRITE |
192 				KDB_ENABLE_REG_WRITE |
193 				KDB_ENABLE_FLOW_CTRL;
194 	const int read_flags = KDB_ENABLE_MEM_READ |
195 			       KDB_ENABLE_REG_READ;
196 
197 	bool need_to_lockdown_write = false;
198 	bool need_to_lockdown_read = false;
199 
200 	if (kdb_cmd_enabled & (KDB_ENABLE_ALL | write_flags))
201 		need_to_lockdown_write =
202 			security_locked_down(LOCKDOWN_DBG_WRITE_KERNEL);
203 
204 	if (kdb_cmd_enabled & (KDB_ENABLE_ALL | read_flags))
205 		need_to_lockdown_read =
206 			security_locked_down(LOCKDOWN_DBG_READ_KERNEL);
207 
208 	/* De-compose KDB_ENABLE_ALL if required */
209 	if (need_to_lockdown_write || need_to_lockdown_read)
210 		if (kdb_cmd_enabled & KDB_ENABLE_ALL)
211 			kdb_cmd_enabled = KDB_ENABLE_MASK & ~KDB_ENABLE_ALL;
212 
213 	if (need_to_lockdown_write)
214 		kdb_cmd_enabled &= ~write_flags;
215 
216 	if (need_to_lockdown_read)
217 		kdb_cmd_enabled &= ~read_flags;
218 }
219 
220 /*
221  * Check whether the flags of the current command, the permissions of the kdb
222  * console and the lockdown state allow a command to be run.
223  */
224 static bool kdb_check_flags(kdb_cmdflags_t flags, int permissions,
225 				   bool no_args)
226 {
227 	/* permissions comes from userspace so needs massaging slightly */
228 	permissions &= KDB_ENABLE_MASK;
229 	permissions |= KDB_ENABLE_ALWAYS_SAFE;
230 
231 	/* some commands change group when launched with no arguments */
232 	if (no_args)
233 		permissions |= permissions << KDB_ENABLE_NO_ARGS_SHIFT;
234 
235 	flags |= KDB_ENABLE_ALL;
236 
237 	return permissions & flags;
238 }
239 
240 /*
241  * kdbgetenv - This function will return the character string value of
242  *	an environment variable.
243  * Parameters:
244  *	match	A character string representing an environment variable.
245  * Returns:
246  *	NULL	No environment variable matches 'match'
247  *	char*	Pointer to string value of environment variable.
248  */
249 char *kdbgetenv(const char *match)
250 {
251 	char **ep = __env;
252 	int matchlen = strlen(match);
253 	int i;
254 
255 	for (i = 0; i < __nenv; i++) {
256 		char *e = *ep++;
257 
258 		if (!e)
259 			continue;
260 
261 		if ((strncmp(match, e, matchlen) == 0)
262 		 && ((e[matchlen] == '\0')
263 		   || (e[matchlen] == '='))) {
264 			char *cp = strchr(e, '=');
265 			return cp ? ++cp : "";
266 		}
267 	}
268 	return NULL;
269 }
270 
271 /*
272  * kdballocenv - This function is used to allocate bytes for
273  *	environment entries.
274  * Parameters:
275  *	bytes	The number of bytes to allocate in the static buffer.
276  * Returns:
277  *	A pointer to the allocated space in the buffer on success.
278  *	NULL if bytes > size available in the envbuffer.
279  * Remarks:
280  *	We use a static environment buffer (envbuffer) to hold the values
281  *	of dynamically generated environment variables (see kdb_set).  Buffer
282  *	space once allocated is never free'd, so over time, the amount of space
283  *	(currently 512 bytes) will be exhausted if env variables are changed
284  *	frequently.
285  */
286 static char *kdballocenv(size_t bytes)
287 {
288 #define	KDB_ENVBUFSIZE	512
289 	static char envbuffer[KDB_ENVBUFSIZE];
290 	static int envbufsize;
291 	char *ep = NULL;
292 
293 	if ((KDB_ENVBUFSIZE - envbufsize) >= bytes) {
294 		ep = &envbuffer[envbufsize];
295 		envbufsize += bytes;
296 	}
297 	return ep;
298 }
299 
300 /*
301  * kdbgetulenv - This function will return the value of an unsigned
302  *	long-valued environment variable.
303  * Parameters:
304  *	match	A character string representing a numeric value
305  * Outputs:
306  *	*value  the unsigned long representation of the env variable 'match'
307  * Returns:
308  *	Zero on success, a kdb diagnostic on failure.
309  */
310 static int kdbgetulenv(const char *match, unsigned long *value)
311 {
312 	char *ep;
313 
314 	ep = kdbgetenv(match);
315 	if (!ep)
316 		return KDB_NOTENV;
317 	if (strlen(ep) == 0)
318 		return KDB_NOENVVALUE;
319 
320 	*value = simple_strtoul(ep, NULL, 0);
321 
322 	return 0;
323 }
324 
325 /*
326  * kdbgetintenv - This function will return the value of an
327  *	integer-valued environment variable.
328  * Parameters:
329  *	match	A character string representing an integer-valued env variable
330  * Outputs:
331  *	*value  the integer representation of the environment variable 'match'
332  * Returns:
333  *	Zero on success, a kdb diagnostic on failure.
334  */
335 int kdbgetintenv(const char *match, int *value)
336 {
337 	unsigned long val;
338 	int diag;
339 
340 	diag = kdbgetulenv(match, &val);
341 	if (!diag)
342 		*value = (int) val;
343 	return diag;
344 }
345 
346 /*
347  * kdb_setenv() - Alter an existing environment variable or create a new one.
348  * @var: Name of the variable
349  * @val: Value of the variable
350  *
351  * Return: Zero on success, a kdb diagnostic on failure.
352  */
353 static int kdb_setenv(const char *var, const char *val)
354 {
355 	int i;
356 	char *ep;
357 	size_t varlen, vallen;
358 
359 	varlen = strlen(var);
360 	vallen = strlen(val);
361 	ep = kdballocenv(varlen + vallen + 2);
362 	if (ep == (char *)0)
363 		return KDB_ENVBUFFULL;
364 
365 	sprintf(ep, "%s=%s", var, val);
366 
367 	for (i = 0; i < __nenv; i++) {
368 		if (__env[i]
369 		 && ((strncmp(__env[i], var, varlen) == 0)
370 		   && ((__env[i][varlen] == '\0')
371 		    || (__env[i][varlen] == '=')))) {
372 			__env[i] = ep;
373 			return 0;
374 		}
375 	}
376 
377 	/*
378 	 * Wasn't existing variable.  Fit into slot.
379 	 */
380 	for (i = 0; i < __nenv-1; i++) {
381 		if (__env[i] == (char *)0) {
382 			__env[i] = ep;
383 			return 0;
384 		}
385 	}
386 
387 	return KDB_ENVFULL;
388 }
389 
390 /*
391  * kdb_printenv() - Display the current environment variables.
392  */
393 static void kdb_printenv(void)
394 {
395 	int i;
396 
397 	for (i = 0; i < __nenv; i++) {
398 		if (__env[i])
399 			kdb_printf("%s\n", __env[i]);
400 	}
401 }
402 
403 /*
404  * kdbgetularg - This function will convert a numeric string into an
405  *	unsigned long value.
406  * Parameters:
407  *	arg	A character string representing a numeric value
408  * Outputs:
409  *	*value  the unsigned long representation of arg.
410  * Returns:
411  *	Zero on success, a kdb diagnostic on failure.
412  */
413 int kdbgetularg(const char *arg, unsigned long *value)
414 {
415 	char *endp;
416 	unsigned long val;
417 
418 	val = simple_strtoul(arg, &endp, 0);
419 
420 	if (endp == arg) {
421 		/*
422 		 * Also try base 16, for us folks too lazy to type the
423 		 * leading 0x...
424 		 */
425 		val = simple_strtoul(arg, &endp, 16);
426 		if (endp == arg)
427 			return KDB_BADINT;
428 	}
429 
430 	*value = val;
431 
432 	return 0;
433 }
434 
435 int kdbgetu64arg(const char *arg, u64 *value)
436 {
437 	char *endp;
438 	u64 val;
439 
440 	val = simple_strtoull(arg, &endp, 0);
441 
442 	if (endp == arg) {
443 
444 		val = simple_strtoull(arg, &endp, 16);
445 		if (endp == arg)
446 			return KDB_BADINT;
447 	}
448 
449 	*value = val;
450 
451 	return 0;
452 }
453 
454 /*
455  * kdb_set - This function implements the 'set' command.  Alter an
456  *	existing environment variable or create a new one.
457  */
458 int kdb_set(int argc, const char **argv)
459 {
460 	/*
461 	 * we can be invoked two ways:
462 	 *   set var=value    argv[1]="var", argv[2]="value"
463 	 *   set var = value  argv[1]="var", argv[2]="=", argv[3]="value"
464 	 * - if the latter, shift 'em down.
465 	 */
466 	if (argc == 3) {
467 		argv[2] = argv[3];
468 		argc--;
469 	}
470 
471 	if (argc != 2)
472 		return KDB_ARGCOUNT;
473 
474 	/*
475 	 * Censor sensitive variables
476 	 */
477 	if (strcmp(argv[1], "PROMPT") == 0 &&
478 	    !kdb_check_flags(KDB_ENABLE_MEM_READ, kdb_cmd_enabled, false))
479 		return KDB_NOPERM;
480 
481 	/*
482 	 * Check for internal variables
483 	 */
484 	if (strcmp(argv[1], "KDBDEBUG") == 0) {
485 		unsigned int debugflags;
486 		char *cp;
487 
488 		debugflags = simple_strtoul(argv[2], &cp, 0);
489 		if (cp == argv[2] || debugflags & ~KDB_DEBUG_FLAG_MASK) {
490 			kdb_printf("kdb: illegal debug flags '%s'\n",
491 				    argv[2]);
492 			return 0;
493 		}
494 		kdb_flags = (kdb_flags & ~KDB_DEBUG(MASK))
495 			| (debugflags << KDB_DEBUG_FLAG_SHIFT);
496 
497 		return 0;
498 	}
499 
500 	/*
501 	 * Tokenizer squashed the '=' sign.  argv[1] is variable
502 	 * name, argv[2] = value.
503 	 */
504 	return kdb_setenv(argv[1], argv[2]);
505 }
506 
507 static int kdb_check_regs(void)
508 {
509 	if (!kdb_current_regs) {
510 		kdb_printf("No current kdb registers."
511 			   "  You may need to select another task\n");
512 		return KDB_BADREG;
513 	}
514 	return 0;
515 }
516 
517 /*
518  * kdbgetaddrarg - This function is responsible for parsing an
519  *	address-expression and returning the value of the expression,
520  *	symbol name, and offset to the caller.
521  *
522  *	The argument may consist of a numeric value (decimal or
523  *	hexadecimal), a symbol name, a register name (preceded by the
524  *	percent sign), an environment variable with a numeric value
525  *	(preceded by a dollar sign) or a simple arithmetic expression
526  *	consisting of a symbol name, +/-, and a numeric constant value
527  *	(offset).
528  * Parameters:
529  *	argc	- count of arguments in argv
530  *	argv	- argument vector
531  *	*nextarg - index to next unparsed argument in argv[]
532  *	regs	- Register state at time of KDB entry
533  * Outputs:
534  *	*value	- receives the value of the address-expression
535  *	*offset - receives the offset specified, if any
536  *	*name   - receives the symbol name, if any
537  *	*nextarg - index to next unparsed argument in argv[]
538  * Returns:
539  *	zero is returned on success, a kdb diagnostic code is
540  *      returned on error.
541  */
542 int kdbgetaddrarg(int argc, const char **argv, int *nextarg,
543 		  unsigned long *value,  long *offset,
544 		  char **name)
545 {
546 	unsigned long addr;
547 	unsigned long off = 0;
548 	int positive;
549 	int diag;
550 	int found = 0;
551 	char *symname;
552 	char symbol = '\0';
553 	char *cp;
554 	kdb_symtab_t symtab;
555 
556 	/*
557 	 * If the enable flags prohibit both arbitrary memory access
558 	 * and flow control then there are no reasonable grounds to
559 	 * provide symbol lookup.
560 	 */
561 	if (!kdb_check_flags(KDB_ENABLE_MEM_READ | KDB_ENABLE_FLOW_CTRL,
562 			     kdb_cmd_enabled, false))
563 		return KDB_NOPERM;
564 
565 	/*
566 	 * Process arguments which follow the following syntax:
567 	 *
568 	 *  symbol | numeric-address [+/- numeric-offset]
569 	 *  %register
570 	 *  $environment-variable
571 	 */
572 
573 	if (*nextarg > argc)
574 		return KDB_ARGCOUNT;
575 
576 	symname = (char *)argv[*nextarg];
577 
578 	/*
579 	 * If there is no whitespace between the symbol
580 	 * or address and the '+' or '-' symbols, we
581 	 * remember the character and replace it with a
582 	 * null so the symbol/value can be properly parsed
583 	 */
584 	cp = strpbrk(symname, "+-");
585 	if (cp != NULL) {
586 		symbol = *cp;
587 		*cp++ = '\0';
588 	}
589 
590 	if (symname[0] == '$') {
591 		diag = kdbgetulenv(&symname[1], &addr);
592 		if (diag)
593 			return diag;
594 	} else if (symname[0] == '%') {
595 		diag = kdb_check_regs();
596 		if (diag)
597 			return diag;
598 		/* Implement register values with % at a later time as it is
599 		 * arch optional.
600 		 */
601 		return KDB_NOTIMP;
602 	} else {
603 		found = kdbgetsymval(symname, &symtab);
604 		if (found) {
605 			addr = symtab.sym_start;
606 		} else {
607 			diag = kdbgetularg(argv[*nextarg], &addr);
608 			if (diag)
609 				return diag;
610 		}
611 	}
612 
613 	if (!found)
614 		found = kdbnearsym(addr, &symtab);
615 
616 	(*nextarg)++;
617 
618 	if (name)
619 		*name = symname;
620 	if (value)
621 		*value = addr;
622 	if (offset && name && *name)
623 		*offset = addr - symtab.sym_start;
624 
625 	if ((*nextarg > argc)
626 	 && (symbol == '\0'))
627 		return 0;
628 
629 	/*
630 	 * check for +/- and offset
631 	 */
632 
633 	if (symbol == '\0') {
634 		if ((argv[*nextarg][0] != '+')
635 		 && (argv[*nextarg][0] != '-')) {
636 			/*
637 			 * Not our argument.  Return.
638 			 */
639 			return 0;
640 		} else {
641 			positive = (argv[*nextarg][0] == '+');
642 			(*nextarg)++;
643 		}
644 	} else
645 		positive = (symbol == '+');
646 
647 	/*
648 	 * Now there must be an offset!
649 	 */
650 	if ((*nextarg > argc)
651 	 && (symbol == '\0')) {
652 		return KDB_INVADDRFMT;
653 	}
654 
655 	if (!symbol) {
656 		cp = (char *)argv[*nextarg];
657 		(*nextarg)++;
658 	}
659 
660 	diag = kdbgetularg(cp, &off);
661 	if (diag)
662 		return diag;
663 
664 	if (!positive)
665 		off = -off;
666 
667 	if (offset)
668 		*offset += off;
669 
670 	if (value)
671 		*value += off;
672 
673 	return 0;
674 }
675 
676 static void kdb_cmderror(int diag)
677 {
678 	int i;
679 
680 	if (diag >= 0) {
681 		kdb_printf("no error detected (diagnostic is %d)\n", diag);
682 		return;
683 	}
684 
685 	for (i = 0; i < __nkdb_err; i++) {
686 		if (kdbmsgs[i].km_diag == diag) {
687 			kdb_printf("diag: %d: %s\n", diag, kdbmsgs[i].km_msg);
688 			return;
689 		}
690 	}
691 
692 	kdb_printf("Unknown diag %d\n", -diag);
693 }
694 
695 /*
696  * kdb_defcmd, kdb_defcmd2 - This function implements the 'defcmd'
697  *	command which defines one command as a set of other commands,
698  *	terminated by endefcmd.  kdb_defcmd processes the initial
699  *	'defcmd' command, kdb_defcmd2 is invoked from kdb_parse for
700  *	the following commands until 'endefcmd'.
701  * Inputs:
702  *	argc	argument count
703  *	argv	argument vector
704  * Returns:
705  *	zero for success, a kdb diagnostic if error
706  */
707 struct kdb_macro {
708 	kdbtab_t cmd;			/* Macro command */
709 	struct list_head statements;	/* Associated statement list */
710 };
711 
712 struct kdb_macro_statement {
713 	char *statement;		/* Statement text */
714 	struct list_head list_node;	/* Statement list node */
715 };
716 
717 static struct kdb_macro *kdb_macro;
718 static bool defcmd_in_progress;
719 
720 /* Forward references */
721 static int kdb_exec_defcmd(int argc, const char **argv);
722 
723 static int kdb_defcmd2(const char *cmdstr, const char *argv0)
724 {
725 	struct kdb_macro_statement *kms;
726 
727 	if (!kdb_macro)
728 		return KDB_NOTIMP;
729 
730 	if (strcmp(argv0, "endefcmd") == 0) {
731 		defcmd_in_progress = false;
732 		if (!list_empty(&kdb_macro->statements))
733 			kdb_register(&kdb_macro->cmd);
734 		return 0;
735 	}
736 
737 	kms = kmalloc(sizeof(*kms), GFP_KDB);
738 	if (!kms) {
739 		kdb_printf("Could not allocate new kdb macro command: %s\n",
740 			   cmdstr);
741 		return KDB_NOTIMP;
742 	}
743 
744 	kms->statement = kdb_strdup(cmdstr, GFP_KDB);
745 	list_add_tail(&kms->list_node, &kdb_macro->statements);
746 
747 	return 0;
748 }
749 
750 static int kdb_defcmd(int argc, const char **argv)
751 {
752 	kdbtab_t *mp;
753 
754 	if (defcmd_in_progress) {
755 		kdb_printf("kdb: nested defcmd detected, assuming missing "
756 			   "endefcmd\n");
757 		kdb_defcmd2("endefcmd", "endefcmd");
758 	}
759 	if (argc == 0) {
760 		kdbtab_t *kp;
761 		struct kdb_macro *kmp;
762 		struct kdb_macro_statement *kms;
763 
764 		list_for_each_entry(kp, &kdb_cmds_head, list_node) {
765 			if (kp->func == kdb_exec_defcmd) {
766 				kdb_printf("defcmd %s \"%s\" \"%s\"\n",
767 					   kp->name, kp->usage, kp->help);
768 				kmp = container_of(kp, struct kdb_macro, cmd);
769 				list_for_each_entry(kms, &kmp->statements,
770 						    list_node)
771 					kdb_printf("%s", kms->statement);
772 				kdb_printf("endefcmd\n");
773 			}
774 		}
775 		return 0;
776 	}
777 	if (argc != 3)
778 		return KDB_ARGCOUNT;
779 	if (in_dbg_master()) {
780 		kdb_printf("Command only available during kdb_init()\n");
781 		return KDB_NOTIMP;
782 	}
783 	kdb_macro = kzalloc(sizeof(*kdb_macro), GFP_KDB);
784 	if (!kdb_macro)
785 		goto fail_defcmd;
786 
787 	mp = &kdb_macro->cmd;
788 	mp->func = kdb_exec_defcmd;
789 	mp->minlen = 0;
790 	mp->flags = KDB_ENABLE_ALWAYS_SAFE;
791 	mp->name = kdb_strdup(argv[1], GFP_KDB);
792 	if (!mp->name)
793 		goto fail_name;
794 	mp->usage = kdb_strdup(argv[2], GFP_KDB);
795 	if (!mp->usage)
796 		goto fail_usage;
797 	mp->help = kdb_strdup(argv[3], GFP_KDB);
798 	if (!mp->help)
799 		goto fail_help;
800 	if (mp->usage[0] == '"') {
801 		strcpy(mp->usage, argv[2]+1);
802 		mp->usage[strlen(mp->usage)-1] = '\0';
803 	}
804 	if (mp->help[0] == '"') {
805 		strcpy(mp->help, argv[3]+1);
806 		mp->help[strlen(mp->help)-1] = '\0';
807 	}
808 
809 	INIT_LIST_HEAD(&kdb_macro->statements);
810 	defcmd_in_progress = true;
811 	return 0;
812 fail_help:
813 	kfree(mp->usage);
814 fail_usage:
815 	kfree(mp->name);
816 fail_name:
817 	kfree(kdb_macro);
818 fail_defcmd:
819 	kdb_printf("Could not allocate new kdb_macro entry for %s\n", argv[1]);
820 	return KDB_NOTIMP;
821 }
822 
823 /*
824  * kdb_exec_defcmd - Execute the set of commands associated with this
825  *	defcmd name.
826  * Inputs:
827  *	argc	argument count
828  *	argv	argument vector
829  * Returns:
830  *	zero for success, a kdb diagnostic if error
831  */
832 static int kdb_exec_defcmd(int argc, const char **argv)
833 {
834 	int ret;
835 	kdbtab_t *kp;
836 	struct kdb_macro *kmp;
837 	struct kdb_macro_statement *kms;
838 
839 	if (argc != 0)
840 		return KDB_ARGCOUNT;
841 
842 	list_for_each_entry(kp, &kdb_cmds_head, list_node) {
843 		if (strcmp(kp->name, argv[0]) == 0)
844 			break;
845 	}
846 	if (list_entry_is_head(kp, &kdb_cmds_head, list_node)) {
847 		kdb_printf("kdb_exec_defcmd: could not find commands for %s\n",
848 			   argv[0]);
849 		return KDB_NOTIMP;
850 	}
851 	kmp = container_of(kp, struct kdb_macro, cmd);
852 	list_for_each_entry(kms, &kmp->statements, list_node) {
853 		/*
854 		 * Recursive use of kdb_parse, do not use argv after this point.
855 		 */
856 		argv = NULL;
857 		kdb_printf("[%s]kdb> %s\n", kmp->cmd.name, kms->statement);
858 		ret = kdb_parse(kms->statement);
859 		if (ret)
860 			return ret;
861 	}
862 	return 0;
863 }
864 
865 /* Command history */
866 #define KDB_CMD_HISTORY_COUNT	32
867 #define CMD_BUFLEN		200	/* kdb_printf: max printline
868 					 * size == 256 */
869 static unsigned int cmd_head, cmd_tail;
870 static unsigned int cmdptr;
871 static char cmd_hist[KDB_CMD_HISTORY_COUNT][CMD_BUFLEN];
872 static char cmd_cur[CMD_BUFLEN];
873 
874 /*
875  * The "str" argument may point to something like  | grep xyz
876  */
877 static void parse_grep(const char *str)
878 {
879 	int	len;
880 	char	*cp = (char *)str, *cp2;
881 
882 	/* sanity check: we should have been called with the \ first */
883 	if (*cp != '|')
884 		return;
885 	cp++;
886 	while (isspace(*cp))
887 		cp++;
888 	if (!str_has_prefix(cp, "grep ")) {
889 		kdb_printf("invalid 'pipe', see grephelp\n");
890 		return;
891 	}
892 	cp += 5;
893 	while (isspace(*cp))
894 		cp++;
895 	cp2 = strchr(cp, '\n');
896 	if (cp2)
897 		*cp2 = '\0'; /* remove the trailing newline */
898 	len = strlen(cp);
899 	if (len == 0) {
900 		kdb_printf("invalid 'pipe', see grephelp\n");
901 		return;
902 	}
903 	/* now cp points to a nonzero length search string */
904 	if (*cp == '"') {
905 		/* allow it be "x y z" by removing the "'s - there must
906 		   be two of them */
907 		cp++;
908 		cp2 = strchr(cp, '"');
909 		if (!cp2) {
910 			kdb_printf("invalid quoted string, see grephelp\n");
911 			return;
912 		}
913 		*cp2 = '\0'; /* end the string where the 2nd " was */
914 	}
915 	kdb_grep_leading = 0;
916 	if (*cp == '^') {
917 		kdb_grep_leading = 1;
918 		cp++;
919 	}
920 	len = strlen(cp);
921 	kdb_grep_trailing = 0;
922 	if (*(cp+len-1) == '$') {
923 		kdb_grep_trailing = 1;
924 		*(cp+len-1) = '\0';
925 	}
926 	len = strlen(cp);
927 	if (!len)
928 		return;
929 	if (len >= KDB_GREP_STRLEN) {
930 		kdb_printf("search string too long\n");
931 		return;
932 	}
933 	strcpy(kdb_grep_string, cp);
934 	kdb_grepping_flag++;
935 	return;
936 }
937 
938 /*
939  * kdb_parse - Parse the command line, search the command table for a
940  *	matching command and invoke the command function.  This
941  *	function may be called recursively, if it is, the second call
942  *	will overwrite argv and cbuf.  It is the caller's
943  *	responsibility to save their argv if they recursively call
944  *	kdb_parse().
945  * Parameters:
946  *      cmdstr	The input command line to be parsed.
947  *	regs	The registers at the time kdb was entered.
948  * Returns:
949  *	Zero for success, a kdb diagnostic if failure.
950  * Remarks:
951  *	Limited to 20 tokens.
952  *
953  *	Real rudimentary tokenization. Basically only whitespace
954  *	is considered a token delimiter (but special consideration
955  *	is taken of the '=' sign as used by the 'set' command).
956  *
957  *	The algorithm used to tokenize the input string relies on
958  *	there being at least one whitespace (or otherwise useless)
959  *	character between tokens as the character immediately following
960  *	the token is altered in-place to a null-byte to terminate the
961  *	token string.
962  */
963 
964 #define MAXARGC	20
965 
966 int kdb_parse(const char *cmdstr)
967 {
968 	static char *argv[MAXARGC];
969 	static int argc;
970 	static char cbuf[CMD_BUFLEN+2];
971 	char *cp;
972 	char *cpp, quoted;
973 	kdbtab_t *tp;
974 	int escaped, ignore_errors = 0, check_grep = 0;
975 
976 	/*
977 	 * First tokenize the command string.
978 	 */
979 	cp = (char *)cmdstr;
980 
981 	if (KDB_FLAG(CMD_INTERRUPT)) {
982 		/* Previous command was interrupted, newline must not
983 		 * repeat the command */
984 		KDB_FLAG_CLEAR(CMD_INTERRUPT);
985 		KDB_STATE_SET(PAGER);
986 		argc = 0;	/* no repeat */
987 	}
988 
989 	if (*cp != '\n' && *cp != '\0') {
990 		argc = 0;
991 		cpp = cbuf;
992 		while (*cp) {
993 			/* skip whitespace */
994 			while (isspace(*cp))
995 				cp++;
996 			if ((*cp == '\0') || (*cp == '\n') ||
997 			    (*cp == '#' && !defcmd_in_progress))
998 				break;
999 			/* special case: check for | grep pattern */
1000 			if (*cp == '|') {
1001 				check_grep++;
1002 				break;
1003 			}
1004 			if (cpp >= cbuf + CMD_BUFLEN) {
1005 				kdb_printf("kdb_parse: command buffer "
1006 					   "overflow, command ignored\n%s\n",
1007 					   cmdstr);
1008 				return KDB_NOTFOUND;
1009 			}
1010 			if (argc >= MAXARGC - 1) {
1011 				kdb_printf("kdb_parse: too many arguments, "
1012 					   "command ignored\n%s\n", cmdstr);
1013 				return KDB_NOTFOUND;
1014 			}
1015 			argv[argc++] = cpp;
1016 			escaped = 0;
1017 			quoted = '\0';
1018 			/* Copy to next unquoted and unescaped
1019 			 * whitespace or '=' */
1020 			while (*cp && *cp != '\n' &&
1021 			       (escaped || quoted || !isspace(*cp))) {
1022 				if (cpp >= cbuf + CMD_BUFLEN)
1023 					break;
1024 				if (escaped) {
1025 					escaped = 0;
1026 					*cpp++ = *cp++;
1027 					continue;
1028 				}
1029 				if (*cp == '\\') {
1030 					escaped = 1;
1031 					++cp;
1032 					continue;
1033 				}
1034 				if (*cp == quoted)
1035 					quoted = '\0';
1036 				else if (*cp == '\'' || *cp == '"')
1037 					quoted = *cp;
1038 				*cpp = *cp++;
1039 				if (*cpp == '=' && !quoted)
1040 					break;
1041 				++cpp;
1042 			}
1043 			*cpp++ = '\0';	/* Squash a ws or '=' character */
1044 		}
1045 	}
1046 	if (!argc)
1047 		return 0;
1048 	if (check_grep)
1049 		parse_grep(cp);
1050 	if (defcmd_in_progress) {
1051 		int result = kdb_defcmd2(cmdstr, argv[0]);
1052 		if (!defcmd_in_progress) {
1053 			argc = 0;	/* avoid repeat on endefcmd */
1054 			*(argv[0]) = '\0';
1055 		}
1056 		return result;
1057 	}
1058 	if (argv[0][0] == '-' && argv[0][1] &&
1059 	    (argv[0][1] < '0' || argv[0][1] > '9')) {
1060 		ignore_errors = 1;
1061 		++argv[0];
1062 	}
1063 
1064 	list_for_each_entry(tp, &kdb_cmds_head, list_node) {
1065 		/*
1066 		 * If this command is allowed to be abbreviated,
1067 		 * check to see if this is it.
1068 		 */
1069 		if (tp->minlen && (strlen(argv[0]) <= tp->minlen) &&
1070 		    (strncmp(argv[0], tp->name, tp->minlen) == 0))
1071 			break;
1072 
1073 		if (strcmp(argv[0], tp->name) == 0)
1074 			break;
1075 	}
1076 
1077 	/*
1078 	 * If we don't find a command by this name, see if the first
1079 	 * few characters of this match any of the known commands.
1080 	 * e.g., md1c20 should match md.
1081 	 */
1082 	if (list_entry_is_head(tp, &kdb_cmds_head, list_node)) {
1083 		list_for_each_entry(tp, &kdb_cmds_head, list_node) {
1084 			if (strncmp(argv[0], tp->name, strlen(tp->name)) == 0)
1085 				break;
1086 		}
1087 	}
1088 
1089 	if (!list_entry_is_head(tp, &kdb_cmds_head, list_node)) {
1090 		int result;
1091 
1092 		if (!kdb_check_flags(tp->flags, kdb_cmd_enabled, argc <= 1))
1093 			return KDB_NOPERM;
1094 
1095 		KDB_STATE_SET(CMD);
1096 		result = (*tp->func)(argc-1, (const char **)argv);
1097 		if (result && ignore_errors && result > KDB_CMD_GO)
1098 			result = 0;
1099 		KDB_STATE_CLEAR(CMD);
1100 
1101 		if (tp->flags & KDB_REPEAT_WITH_ARGS)
1102 			return result;
1103 
1104 		argc = tp->flags & KDB_REPEAT_NO_ARGS ? 1 : 0;
1105 		if (argv[argc])
1106 			*(argv[argc]) = '\0';
1107 		return result;
1108 	}
1109 
1110 	/*
1111 	 * If the input with which we were presented does not
1112 	 * map to an existing command, attempt to parse it as an
1113 	 * address argument and display the result.   Useful for
1114 	 * obtaining the address of a variable, or the nearest symbol
1115 	 * to an address contained in a register.
1116 	 */
1117 	{
1118 		unsigned long value;
1119 		char *name = NULL;
1120 		long offset;
1121 		int nextarg = 0;
1122 
1123 		if (kdbgetaddrarg(0, (const char **)argv, &nextarg,
1124 				  &value, &offset, &name)) {
1125 			return KDB_NOTFOUND;
1126 		}
1127 
1128 		kdb_printf("%s = ", argv[0]);
1129 		kdb_symbol_print(value, NULL, KDB_SP_DEFAULT);
1130 		kdb_printf("\n");
1131 		return 0;
1132 	}
1133 }
1134 
1135 
1136 static int handle_ctrl_cmd(char *cmd)
1137 {
1138 #define CTRL_P	16
1139 #define CTRL_N	14
1140 
1141 	/* initial situation */
1142 	if (cmd_head == cmd_tail)
1143 		return 0;
1144 	switch (*cmd) {
1145 	case CTRL_P:
1146 		if (cmdptr != cmd_tail)
1147 			cmdptr = (cmdptr + KDB_CMD_HISTORY_COUNT - 1) %
1148 				 KDB_CMD_HISTORY_COUNT;
1149 		strscpy(cmd_cur, cmd_hist[cmdptr], CMD_BUFLEN);
1150 		return 1;
1151 	case CTRL_N:
1152 		if (cmdptr != cmd_head)
1153 			cmdptr = (cmdptr+1) % KDB_CMD_HISTORY_COUNT;
1154 		strscpy(cmd_cur, cmd_hist[cmdptr], CMD_BUFLEN);
1155 		return 1;
1156 	}
1157 	return 0;
1158 }
1159 
1160 /*
1161  * kdb_reboot - This function implements the 'reboot' command.  Reboot
1162  *	the system immediately, or loop for ever on failure.
1163  */
1164 static int kdb_reboot(int argc, const char **argv)
1165 {
1166 	emergency_restart();
1167 	kdb_printf("Hmm, kdb_reboot did not reboot, spinning here\n");
1168 	while (1)
1169 		cpu_relax();
1170 	/* NOTREACHED */
1171 	return 0;
1172 }
1173 
1174 static void kdb_dumpregs(struct pt_regs *regs)
1175 {
1176 	int old_lvl = console_loglevel;
1177 	console_loglevel = CONSOLE_LOGLEVEL_MOTORMOUTH;
1178 	kdb_trap_printk++;
1179 	show_regs(regs);
1180 	kdb_trap_printk--;
1181 	kdb_printf("\n");
1182 	console_loglevel = old_lvl;
1183 }
1184 
1185 static void kdb_set_current_task(struct task_struct *p)
1186 {
1187 	kdb_current_task = p;
1188 
1189 	if (kdb_task_has_cpu(p)) {
1190 		kdb_current_regs = KDB_TSKREGS(kdb_process_cpu(p));
1191 		return;
1192 	}
1193 	kdb_current_regs = NULL;
1194 }
1195 
1196 static void drop_newline(char *buf)
1197 {
1198 	size_t len = strlen(buf);
1199 
1200 	if (len == 0)
1201 		return;
1202 	if (*(buf + len - 1) == '\n')
1203 		*(buf + len - 1) = '\0';
1204 }
1205 
1206 /*
1207  * kdb_local - The main code for kdb.  This routine is invoked on a
1208  *	specific processor, it is not global.  The main kdb() routine
1209  *	ensures that only one processor at a time is in this routine.
1210  *	This code is called with the real reason code on the first
1211  *	entry to a kdb session, thereafter it is called with reason
1212  *	SWITCH, even if the user goes back to the original cpu.
1213  * Inputs:
1214  *	reason		The reason KDB was invoked
1215  *	error		The hardware-defined error code
1216  *	regs		The exception frame at time of fault/breakpoint.
1217  *	db_result	Result code from the break or debug point.
1218  * Returns:
1219  *	0	KDB was invoked for an event which it wasn't responsible
1220  *	1	KDB handled the event for which it was invoked.
1221  *	KDB_CMD_GO	User typed 'go'.
1222  *	KDB_CMD_CPU	User switched to another cpu.
1223  *	KDB_CMD_SS	Single step.
1224  */
1225 static int kdb_local(kdb_reason_t reason, int error, struct pt_regs *regs,
1226 		     kdb_dbtrap_t db_result)
1227 {
1228 	char *cmdbuf;
1229 	int diag;
1230 	struct task_struct *kdb_current =
1231 		kdb_curr_task(raw_smp_processor_id());
1232 
1233 	KDB_DEBUG_STATE("kdb_local 1", reason);
1234 
1235 	kdb_check_for_lockdown();
1236 
1237 	kdb_go_count = 0;
1238 	if (reason == KDB_REASON_DEBUG) {
1239 		/* special case below */
1240 	} else {
1241 		kdb_printf("\nEntering kdb (current=0x%px, pid %d) ",
1242 			   kdb_current, kdb_current ? kdb_current->pid : 0);
1243 #if defined(CONFIG_SMP)
1244 		kdb_printf("on processor %d ", raw_smp_processor_id());
1245 #endif
1246 	}
1247 
1248 	switch (reason) {
1249 	case KDB_REASON_DEBUG:
1250 	{
1251 		/*
1252 		 * If re-entering kdb after a single step
1253 		 * command, don't print the message.
1254 		 */
1255 		switch (db_result) {
1256 		case KDB_DB_BPT:
1257 			kdb_printf("\nEntering kdb (0x%px, pid %d) ",
1258 				   kdb_current, kdb_current->pid);
1259 #if defined(CONFIG_SMP)
1260 			kdb_printf("on processor %d ", raw_smp_processor_id());
1261 #endif
1262 			kdb_printf("due to Debug @ " kdb_machreg_fmt "\n",
1263 				   instruction_pointer(regs));
1264 			break;
1265 		case KDB_DB_SS:
1266 			break;
1267 		case KDB_DB_SSBPT:
1268 			KDB_DEBUG_STATE("kdb_local 4", reason);
1269 			return 1;	/* kdba_db_trap did the work */
1270 		default:
1271 			kdb_printf("kdb: Bad result from kdba_db_trap: %d\n",
1272 				   db_result);
1273 			break;
1274 		}
1275 
1276 	}
1277 		break;
1278 	case KDB_REASON_ENTER:
1279 		if (KDB_STATE(KEYBOARD))
1280 			kdb_printf("due to Keyboard Entry\n");
1281 		else
1282 			kdb_printf("due to KDB_ENTER()\n");
1283 		break;
1284 	case KDB_REASON_KEYBOARD:
1285 		KDB_STATE_SET(KEYBOARD);
1286 		kdb_printf("due to Keyboard Entry\n");
1287 		break;
1288 	case KDB_REASON_ENTER_SLAVE:
1289 		/* drop through, slaves only get released via cpu switch */
1290 	case KDB_REASON_SWITCH:
1291 		kdb_printf("due to cpu switch\n");
1292 		break;
1293 	case KDB_REASON_OOPS:
1294 		kdb_printf("Oops: %s\n", kdb_diemsg);
1295 		kdb_printf("due to oops @ " kdb_machreg_fmt "\n",
1296 			   instruction_pointer(regs));
1297 		kdb_dumpregs(regs);
1298 		break;
1299 	case KDB_REASON_SYSTEM_NMI:
1300 		kdb_printf("due to System NonMaskable Interrupt\n");
1301 		break;
1302 	case KDB_REASON_NMI:
1303 		kdb_printf("due to NonMaskable Interrupt @ "
1304 			   kdb_machreg_fmt "\n",
1305 			   instruction_pointer(regs));
1306 		break;
1307 	case KDB_REASON_SSTEP:
1308 	case KDB_REASON_BREAK:
1309 		kdb_printf("due to %s @ " kdb_machreg_fmt "\n",
1310 			   reason == KDB_REASON_BREAK ?
1311 			   "Breakpoint" : "SS trap", instruction_pointer(regs));
1312 		/*
1313 		 * Determine if this breakpoint is one that we
1314 		 * are interested in.
1315 		 */
1316 		if (db_result != KDB_DB_BPT) {
1317 			kdb_printf("kdb: error return from kdba_bp_trap: %d\n",
1318 				   db_result);
1319 			KDB_DEBUG_STATE("kdb_local 6", reason);
1320 			return 0;	/* Not for us, dismiss it */
1321 		}
1322 		break;
1323 	case KDB_REASON_RECURSE:
1324 		kdb_printf("due to Recursion @ " kdb_machreg_fmt "\n",
1325 			   instruction_pointer(regs));
1326 		break;
1327 	default:
1328 		kdb_printf("kdb: unexpected reason code: %d\n", reason);
1329 		KDB_DEBUG_STATE("kdb_local 8", reason);
1330 		return 0;	/* Not for us, dismiss it */
1331 	}
1332 
1333 	while (1) {
1334 		/*
1335 		 * Initialize pager context.
1336 		 */
1337 		kdb_nextline = 1;
1338 		KDB_STATE_CLEAR(SUPPRESS);
1339 		kdb_grepping_flag = 0;
1340 		/* ensure the old search does not leak into '/' commands */
1341 		kdb_grep_string[0] = '\0';
1342 
1343 		cmdbuf = cmd_cur;
1344 		*cmdbuf = '\0';
1345 		*(cmd_hist[cmd_head]) = '\0';
1346 
1347 do_full_getstr:
1348 		/* PROMPT can only be set if we have MEM_READ permission. */
1349 		snprintf(kdb_prompt_str, CMD_BUFLEN, kdbgetenv("PROMPT"),
1350 			 raw_smp_processor_id());
1351 		if (defcmd_in_progress)
1352 			strncat(kdb_prompt_str, "[defcmd]", CMD_BUFLEN);
1353 
1354 		/*
1355 		 * Fetch command from keyboard
1356 		 */
1357 		cmdbuf = kdb_getstr(cmdbuf, CMD_BUFLEN, kdb_prompt_str);
1358 		if (*cmdbuf != '\n') {
1359 			if (*cmdbuf < 32) {
1360 				if (cmdptr == cmd_head) {
1361 					strscpy(cmd_hist[cmd_head], cmd_cur,
1362 						CMD_BUFLEN);
1363 					*(cmd_hist[cmd_head] +
1364 					  strlen(cmd_hist[cmd_head])-1) = '\0';
1365 				}
1366 				if (!handle_ctrl_cmd(cmdbuf))
1367 					*(cmd_cur+strlen(cmd_cur)-1) = '\0';
1368 				cmdbuf = cmd_cur;
1369 				goto do_full_getstr;
1370 			} else {
1371 				strscpy(cmd_hist[cmd_head], cmd_cur,
1372 					CMD_BUFLEN);
1373 			}
1374 
1375 			cmd_head = (cmd_head+1) % KDB_CMD_HISTORY_COUNT;
1376 			if (cmd_head == cmd_tail)
1377 				cmd_tail = (cmd_tail+1) % KDB_CMD_HISTORY_COUNT;
1378 		}
1379 
1380 		cmdptr = cmd_head;
1381 		diag = kdb_parse(cmdbuf);
1382 		if (diag == KDB_NOTFOUND) {
1383 			drop_newline(cmdbuf);
1384 			kdb_printf("Unknown kdb command: '%s'\n", cmdbuf);
1385 			diag = 0;
1386 		}
1387 		if (diag == KDB_CMD_GO
1388 		 || diag == KDB_CMD_CPU
1389 		 || diag == KDB_CMD_SS
1390 		 || diag == KDB_CMD_KGDB)
1391 			break;
1392 
1393 		if (diag)
1394 			kdb_cmderror(diag);
1395 	}
1396 	KDB_DEBUG_STATE("kdb_local 9", diag);
1397 	return diag;
1398 }
1399 
1400 
1401 /*
1402  * kdb_print_state - Print the state data for the current processor
1403  *	for debugging.
1404  * Inputs:
1405  *	text		Identifies the debug point
1406  *	value		Any integer value to be printed, e.g. reason code.
1407  */
1408 void kdb_print_state(const char *text, int value)
1409 {
1410 	kdb_printf("state: %s cpu %d value %d initial %d state %x\n",
1411 		   text, raw_smp_processor_id(), value, kdb_initial_cpu,
1412 		   kdb_state);
1413 }
1414 
1415 /*
1416  * kdb_main_loop - After initial setup and assignment of the
1417  *	controlling cpu, all cpus are in this loop.  One cpu is in
1418  *	control and will issue the kdb prompt, the others will spin
1419  *	until 'go' or cpu switch.
1420  *
1421  *	To get a consistent view of the kernel stacks for all
1422  *	processes, this routine is invoked from the main kdb code via
1423  *	an architecture specific routine.  kdba_main_loop is
1424  *	responsible for making the kernel stacks consistent for all
1425  *	processes, there should be no difference between a blocked
1426  *	process and a running process as far as kdb is concerned.
1427  * Inputs:
1428  *	reason		The reason KDB was invoked
1429  *	error		The hardware-defined error code
1430  *	reason2		kdb's current reason code.
1431  *			Initially error but can change
1432  *			according to kdb state.
1433  *	db_result	Result code from break or debug point.
1434  *	regs		The exception frame at time of fault/breakpoint.
1435  *			should always be valid.
1436  * Returns:
1437  *	0	KDB was invoked for an event which it wasn't responsible
1438  *	1	KDB handled the event for which it was invoked.
1439  */
1440 int kdb_main_loop(kdb_reason_t reason, kdb_reason_t reason2, int error,
1441 	      kdb_dbtrap_t db_result, struct pt_regs *regs)
1442 {
1443 	int result = 1;
1444 	/* Stay in kdb() until 'go', 'ss[b]' or an error */
1445 	while (1) {
1446 		/*
1447 		 * All processors except the one that is in control
1448 		 * will spin here.
1449 		 */
1450 		KDB_DEBUG_STATE("kdb_main_loop 1", reason);
1451 		while (KDB_STATE(HOLD_CPU)) {
1452 			/* state KDB is turned off by kdb_cpu to see if the
1453 			 * other cpus are still live, each cpu in this loop
1454 			 * turns it back on.
1455 			 */
1456 			if (!KDB_STATE(KDB))
1457 				KDB_STATE_SET(KDB);
1458 		}
1459 
1460 		KDB_STATE_CLEAR(SUPPRESS);
1461 		KDB_DEBUG_STATE("kdb_main_loop 2", reason);
1462 		if (KDB_STATE(LEAVING))
1463 			break;	/* Another cpu said 'go' */
1464 		/* Still using kdb, this processor is in control */
1465 		result = kdb_local(reason2, error, regs, db_result);
1466 		KDB_DEBUG_STATE("kdb_main_loop 3", result);
1467 
1468 		if (result == KDB_CMD_CPU)
1469 			break;
1470 
1471 		if (result == KDB_CMD_SS) {
1472 			KDB_STATE_SET(DOING_SS);
1473 			break;
1474 		}
1475 
1476 		if (result == KDB_CMD_KGDB) {
1477 			if (!KDB_STATE(DOING_KGDB))
1478 				kdb_printf("Entering please attach debugger "
1479 					   "or use $D#44+ or $3#33\n");
1480 			break;
1481 		}
1482 		if (result && result != 1 && result != KDB_CMD_GO)
1483 			kdb_printf("\nUnexpected kdb_local return code %d\n",
1484 				   result);
1485 		KDB_DEBUG_STATE("kdb_main_loop 4", reason);
1486 		break;
1487 	}
1488 	if (KDB_STATE(DOING_SS))
1489 		KDB_STATE_CLEAR(SSBPT);
1490 
1491 	/* Clean up any keyboard devices before leaving */
1492 	kdb_kbd_cleanup_state();
1493 
1494 	return result;
1495 }
1496 
1497 /*
1498  * kdb_mdr - This function implements the guts of the 'mdr', memory
1499  * read command.
1500  *	mdr  <addr arg>,<byte count>
1501  * Inputs:
1502  *	addr	Start address
1503  *	count	Number of bytes
1504  * Returns:
1505  *	Always 0.  Any errors are detected and printed by kdb_getarea.
1506  */
1507 static int kdb_mdr(unsigned long addr, unsigned int count)
1508 {
1509 	unsigned char c;
1510 	while (count--) {
1511 		if (kdb_getarea(c, addr))
1512 			return 0;
1513 		kdb_printf("%02x", c);
1514 		addr++;
1515 	}
1516 	kdb_printf("\n");
1517 	return 0;
1518 }
1519 
1520 /*
1521  * kdb_md - This function implements the 'md', 'md1', 'md2', 'md4',
1522  *	'md8' 'mdr' and 'mds' commands.
1523  *
1524  *	md|mds  [<addr arg> [<line count> [<radix>]]]
1525  *	mdWcN	[<addr arg> [<line count> [<radix>]]]
1526  *		where W = is the width (1, 2, 4 or 8) and N is the count.
1527  *		for eg., md1c20 reads 20 bytes, 1 at a time.
1528  *	mdr  <addr arg>,<byte count>
1529  */
1530 static void kdb_md_line(const char *fmtstr, unsigned long addr,
1531 			int symbolic, int nosect, int bytesperword,
1532 			int num, int repeat, int phys)
1533 {
1534 	/* print just one line of data */
1535 	kdb_symtab_t symtab;
1536 	char cbuf[32];
1537 	char *c = cbuf;
1538 	int i;
1539 	int j;
1540 	unsigned long word;
1541 
1542 	memset(cbuf, '\0', sizeof(cbuf));
1543 	if (phys)
1544 		kdb_printf("phys " kdb_machreg_fmt0 " ", addr);
1545 	else
1546 		kdb_printf(kdb_machreg_fmt0 " ", addr);
1547 
1548 	for (i = 0; i < num && repeat--; i++) {
1549 		if (phys) {
1550 			if (kdb_getphysword(&word, addr, bytesperword))
1551 				break;
1552 		} else if (kdb_getword(&word, addr, bytesperword))
1553 			break;
1554 		kdb_printf(fmtstr, word);
1555 		if (symbolic)
1556 			kdbnearsym(word, &symtab);
1557 		else
1558 			memset(&symtab, 0, sizeof(symtab));
1559 		if (symtab.sym_name) {
1560 			kdb_symbol_print(word, &symtab, 0);
1561 			if (!nosect) {
1562 				kdb_printf("\n");
1563 				kdb_printf("                       %s %s "
1564 					   kdb_machreg_fmt " "
1565 					   kdb_machreg_fmt " "
1566 					   kdb_machreg_fmt, symtab.mod_name,
1567 					   symtab.sec_name, symtab.sec_start,
1568 					   symtab.sym_start, symtab.sym_end);
1569 			}
1570 			addr += bytesperword;
1571 		} else {
1572 			union {
1573 				u64 word;
1574 				unsigned char c[8];
1575 			} wc;
1576 			unsigned char *cp;
1577 #ifdef	__BIG_ENDIAN
1578 			cp = wc.c + 8 - bytesperword;
1579 #else
1580 			cp = wc.c;
1581 #endif
1582 			wc.word = word;
1583 #define printable_char(c) \
1584 	({unsigned char __c = c; isascii(__c) && isprint(__c) ? __c : '.'; })
1585 			for (j = 0; j < bytesperword; j++)
1586 				*c++ = printable_char(*cp++);
1587 			addr += bytesperword;
1588 #undef printable_char
1589 		}
1590 	}
1591 	kdb_printf("%*s %s\n", (int)((num-i)*(2*bytesperword + 1)+1),
1592 		   " ", cbuf);
1593 }
1594 
1595 static int kdb_md(int argc, const char **argv)
1596 {
1597 	static unsigned long last_addr;
1598 	static int last_radix, last_bytesperword, last_repeat;
1599 	int radix = 16, mdcount = 8, bytesperword = KDB_WORD_SIZE, repeat;
1600 	int nosect = 0;
1601 	char fmtchar, fmtstr[64];
1602 	unsigned long addr;
1603 	unsigned long word;
1604 	long offset = 0;
1605 	int symbolic = 0;
1606 	int valid = 0;
1607 	int phys = 0;
1608 	int raw = 0;
1609 
1610 	kdbgetintenv("MDCOUNT", &mdcount);
1611 	kdbgetintenv("RADIX", &radix);
1612 	kdbgetintenv("BYTESPERWORD", &bytesperword);
1613 
1614 	/* Assume 'md <addr>' and start with environment values */
1615 	repeat = mdcount * 16 / bytesperword;
1616 
1617 	if (strcmp(argv[0], "mdr") == 0) {
1618 		if (argc == 2 || (argc == 0 && last_addr != 0))
1619 			valid = raw = 1;
1620 		else
1621 			return KDB_ARGCOUNT;
1622 	} else if (isdigit(argv[0][2])) {
1623 		bytesperword = (int)(argv[0][2] - '0');
1624 		if (bytesperword == 0) {
1625 			bytesperword = last_bytesperword;
1626 			if (bytesperword == 0)
1627 				bytesperword = 4;
1628 		}
1629 		last_bytesperword = bytesperword;
1630 		repeat = mdcount * 16 / bytesperword;
1631 		if (!argv[0][3])
1632 			valid = 1;
1633 		else if (argv[0][3] == 'c' && argv[0][4]) {
1634 			char *p;
1635 			repeat = simple_strtoul(argv[0] + 4, &p, 10);
1636 			mdcount = ((repeat * bytesperword) + 15) / 16;
1637 			valid = !*p;
1638 		}
1639 		last_repeat = repeat;
1640 	} else if (strcmp(argv[0], "md") == 0)
1641 		valid = 1;
1642 	else if (strcmp(argv[0], "mds") == 0)
1643 		valid = 1;
1644 	else if (strcmp(argv[0], "mdp") == 0) {
1645 		phys = valid = 1;
1646 	}
1647 	if (!valid)
1648 		return KDB_NOTFOUND;
1649 
1650 	if (argc == 0) {
1651 		if (last_addr == 0)
1652 			return KDB_ARGCOUNT;
1653 		addr = last_addr;
1654 		radix = last_radix;
1655 		bytesperword = last_bytesperword;
1656 		repeat = last_repeat;
1657 		if (raw)
1658 			mdcount = repeat;
1659 		else
1660 			mdcount = ((repeat * bytesperword) + 15) / 16;
1661 	}
1662 
1663 	if (argc) {
1664 		unsigned long val;
1665 		int diag, nextarg = 1;
1666 		diag = kdbgetaddrarg(argc, argv, &nextarg, &addr,
1667 				     &offset, NULL);
1668 		if (diag)
1669 			return diag;
1670 		if (argc > nextarg+2)
1671 			return KDB_ARGCOUNT;
1672 
1673 		if (argc >= nextarg) {
1674 			diag = kdbgetularg(argv[nextarg], &val);
1675 			if (!diag) {
1676 				mdcount = (int) val;
1677 				if (raw)
1678 					repeat = mdcount;
1679 				else
1680 					repeat = mdcount * 16 / bytesperword;
1681 			}
1682 		}
1683 		if (argc >= nextarg+1) {
1684 			diag = kdbgetularg(argv[nextarg+1], &val);
1685 			if (!diag)
1686 				radix = (int) val;
1687 		}
1688 	}
1689 
1690 	if (strcmp(argv[0], "mdr") == 0) {
1691 		int ret;
1692 		last_addr = addr;
1693 		ret = kdb_mdr(addr, mdcount);
1694 		last_addr += mdcount;
1695 		last_repeat = mdcount;
1696 		last_bytesperword = bytesperword; // to make REPEAT happy
1697 		return ret;
1698 	}
1699 
1700 	switch (radix) {
1701 	case 10:
1702 		fmtchar = 'd';
1703 		break;
1704 	case 16:
1705 		fmtchar = 'x';
1706 		break;
1707 	case 8:
1708 		fmtchar = 'o';
1709 		break;
1710 	default:
1711 		return KDB_BADRADIX;
1712 	}
1713 
1714 	last_radix = radix;
1715 
1716 	if (bytesperword > KDB_WORD_SIZE)
1717 		return KDB_BADWIDTH;
1718 
1719 	switch (bytesperword) {
1720 	case 8:
1721 		sprintf(fmtstr, "%%16.16l%c ", fmtchar);
1722 		break;
1723 	case 4:
1724 		sprintf(fmtstr, "%%8.8l%c ", fmtchar);
1725 		break;
1726 	case 2:
1727 		sprintf(fmtstr, "%%4.4l%c ", fmtchar);
1728 		break;
1729 	case 1:
1730 		sprintf(fmtstr, "%%2.2l%c ", fmtchar);
1731 		break;
1732 	default:
1733 		return KDB_BADWIDTH;
1734 	}
1735 
1736 	last_repeat = repeat;
1737 	last_bytesperword = bytesperword;
1738 
1739 	if (strcmp(argv[0], "mds") == 0) {
1740 		symbolic = 1;
1741 		/* Do not save these changes as last_*, they are temporary mds
1742 		 * overrides.
1743 		 */
1744 		bytesperword = KDB_WORD_SIZE;
1745 		repeat = mdcount;
1746 		kdbgetintenv("NOSECT", &nosect);
1747 	}
1748 
1749 	/* Round address down modulo BYTESPERWORD */
1750 
1751 	addr &= ~(bytesperword-1);
1752 
1753 	while (repeat > 0) {
1754 		unsigned long a;
1755 		int n, z, num = (symbolic ? 1 : (16 / bytesperword));
1756 
1757 		if (KDB_FLAG(CMD_INTERRUPT))
1758 			return 0;
1759 		for (a = addr, z = 0; z < repeat; a += bytesperword, ++z) {
1760 			if (phys) {
1761 				if (kdb_getphysword(&word, a, bytesperword)
1762 						|| word)
1763 					break;
1764 			} else if (kdb_getword(&word, a, bytesperword) || word)
1765 				break;
1766 		}
1767 		n = min(num, repeat);
1768 		kdb_md_line(fmtstr, addr, symbolic, nosect, bytesperword,
1769 			    num, repeat, phys);
1770 		addr += bytesperword * n;
1771 		repeat -= n;
1772 		z = (z + num - 1) / num;
1773 		if (z > 2) {
1774 			int s = num * (z-2);
1775 			kdb_printf(kdb_machreg_fmt0 "-" kdb_machreg_fmt0
1776 				   " zero suppressed\n",
1777 				addr, addr + bytesperword * s - 1);
1778 			addr += bytesperword * s;
1779 			repeat -= s;
1780 		}
1781 	}
1782 	last_addr = addr;
1783 
1784 	return 0;
1785 }
1786 
1787 /*
1788  * kdb_mm - This function implements the 'mm' command.
1789  *	mm address-expression new-value
1790  * Remarks:
1791  *	mm works on machine words, mmW works on bytes.
1792  */
1793 static int kdb_mm(int argc, const char **argv)
1794 {
1795 	int diag;
1796 	unsigned long addr;
1797 	long offset = 0;
1798 	unsigned long contents;
1799 	int nextarg;
1800 	int width;
1801 
1802 	if (argv[0][2] && !isdigit(argv[0][2]))
1803 		return KDB_NOTFOUND;
1804 
1805 	if (argc < 2)
1806 		return KDB_ARGCOUNT;
1807 
1808 	nextarg = 1;
1809 	diag = kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL);
1810 	if (diag)
1811 		return diag;
1812 
1813 	if (nextarg > argc)
1814 		return KDB_ARGCOUNT;
1815 	diag = kdbgetaddrarg(argc, argv, &nextarg, &contents, NULL, NULL);
1816 	if (diag)
1817 		return diag;
1818 
1819 	if (nextarg != argc + 1)
1820 		return KDB_ARGCOUNT;
1821 
1822 	width = argv[0][2] ? (argv[0][2] - '0') : (KDB_WORD_SIZE);
1823 	diag = kdb_putword(addr, contents, width);
1824 	if (diag)
1825 		return diag;
1826 
1827 	kdb_printf(kdb_machreg_fmt " = " kdb_machreg_fmt "\n", addr, contents);
1828 
1829 	return 0;
1830 }
1831 
1832 /*
1833  * kdb_go - This function implements the 'go' command.
1834  *	go [address-expression]
1835  */
1836 static int kdb_go(int argc, const char **argv)
1837 {
1838 	unsigned long addr;
1839 	int diag;
1840 	int nextarg;
1841 	long offset;
1842 
1843 	if (raw_smp_processor_id() != kdb_initial_cpu) {
1844 		kdb_printf("go must execute on the entry cpu, "
1845 			   "please use \"cpu %d\" and then execute go\n",
1846 			   kdb_initial_cpu);
1847 		return KDB_BADCPUNUM;
1848 	}
1849 	if (argc == 1) {
1850 		nextarg = 1;
1851 		diag = kdbgetaddrarg(argc, argv, &nextarg,
1852 				     &addr, &offset, NULL);
1853 		if (diag)
1854 			return diag;
1855 	} else if (argc) {
1856 		return KDB_ARGCOUNT;
1857 	}
1858 
1859 	diag = KDB_CMD_GO;
1860 	if (KDB_FLAG(CATASTROPHIC)) {
1861 		kdb_printf("Catastrophic error detected\n");
1862 		kdb_printf("kdb_continue_catastrophic=%d, ",
1863 			kdb_continue_catastrophic);
1864 		if (kdb_continue_catastrophic == 0 && kdb_go_count++ == 0) {
1865 			kdb_printf("type go a second time if you really want "
1866 				   "to continue\n");
1867 			return 0;
1868 		}
1869 		if (kdb_continue_catastrophic == 2) {
1870 			kdb_printf("forcing reboot\n");
1871 			kdb_reboot(0, NULL);
1872 		}
1873 		kdb_printf("attempting to continue\n");
1874 	}
1875 	return diag;
1876 }
1877 
1878 /*
1879  * kdb_rd - This function implements the 'rd' command.
1880  */
1881 static int kdb_rd(int argc, const char **argv)
1882 {
1883 	int len = kdb_check_regs();
1884 #if DBG_MAX_REG_NUM > 0
1885 	int i;
1886 	char *rname;
1887 	int rsize;
1888 	u64 reg64;
1889 	u32 reg32;
1890 	u16 reg16;
1891 	u8 reg8;
1892 
1893 	if (len)
1894 		return len;
1895 
1896 	for (i = 0; i < DBG_MAX_REG_NUM; i++) {
1897 		rsize = dbg_reg_def[i].size * 2;
1898 		if (rsize > 16)
1899 			rsize = 2;
1900 		if (len + strlen(dbg_reg_def[i].name) + 4 + rsize > 80) {
1901 			len = 0;
1902 			kdb_printf("\n");
1903 		}
1904 		if (len)
1905 			len += kdb_printf("  ");
1906 		switch(dbg_reg_def[i].size * 8) {
1907 		case 8:
1908 			rname = dbg_get_reg(i, &reg8, kdb_current_regs);
1909 			if (!rname)
1910 				break;
1911 			len += kdb_printf("%s: %02x", rname, reg8);
1912 			break;
1913 		case 16:
1914 			rname = dbg_get_reg(i, &reg16, kdb_current_regs);
1915 			if (!rname)
1916 				break;
1917 			len += kdb_printf("%s: %04x", rname, reg16);
1918 			break;
1919 		case 32:
1920 			rname = dbg_get_reg(i, &reg32, kdb_current_regs);
1921 			if (!rname)
1922 				break;
1923 			len += kdb_printf("%s: %08x", rname, reg32);
1924 			break;
1925 		case 64:
1926 			rname = dbg_get_reg(i, &reg64, kdb_current_regs);
1927 			if (!rname)
1928 				break;
1929 			len += kdb_printf("%s: %016llx", rname, reg64);
1930 			break;
1931 		default:
1932 			len += kdb_printf("%s: ??", dbg_reg_def[i].name);
1933 		}
1934 	}
1935 	kdb_printf("\n");
1936 #else
1937 	if (len)
1938 		return len;
1939 
1940 	kdb_dumpregs(kdb_current_regs);
1941 #endif
1942 	return 0;
1943 }
1944 
1945 /*
1946  * kdb_rm - This function implements the 'rm' (register modify)  command.
1947  *	rm register-name new-contents
1948  * Remarks:
1949  *	Allows register modification with the same restrictions as gdb
1950  */
1951 static int kdb_rm(int argc, const char **argv)
1952 {
1953 #if DBG_MAX_REG_NUM > 0
1954 	int diag;
1955 	const char *rname;
1956 	int i;
1957 	u64 reg64;
1958 	u32 reg32;
1959 	u16 reg16;
1960 	u8 reg8;
1961 
1962 	if (argc != 2)
1963 		return KDB_ARGCOUNT;
1964 	/*
1965 	 * Allow presence or absence of leading '%' symbol.
1966 	 */
1967 	rname = argv[1];
1968 	if (*rname == '%')
1969 		rname++;
1970 
1971 	diag = kdbgetu64arg(argv[2], &reg64);
1972 	if (diag)
1973 		return diag;
1974 
1975 	diag = kdb_check_regs();
1976 	if (diag)
1977 		return diag;
1978 
1979 	diag = KDB_BADREG;
1980 	for (i = 0; i < DBG_MAX_REG_NUM; i++) {
1981 		if (strcmp(rname, dbg_reg_def[i].name) == 0) {
1982 			diag = 0;
1983 			break;
1984 		}
1985 	}
1986 	if (!diag) {
1987 		switch(dbg_reg_def[i].size * 8) {
1988 		case 8:
1989 			reg8 = reg64;
1990 			dbg_set_reg(i, &reg8, kdb_current_regs);
1991 			break;
1992 		case 16:
1993 			reg16 = reg64;
1994 			dbg_set_reg(i, &reg16, kdb_current_regs);
1995 			break;
1996 		case 32:
1997 			reg32 = reg64;
1998 			dbg_set_reg(i, &reg32, kdb_current_regs);
1999 			break;
2000 		case 64:
2001 			dbg_set_reg(i, &reg64, kdb_current_regs);
2002 			break;
2003 		}
2004 	}
2005 	return diag;
2006 #else
2007 	kdb_printf("ERROR: Register set currently not implemented\n");
2008     return 0;
2009 #endif
2010 }
2011 
2012 #if defined(CONFIG_MAGIC_SYSRQ)
2013 /*
2014  * kdb_sr - This function implements the 'sr' (SYSRQ key) command
2015  *	which interfaces to the soi-disant MAGIC SYSRQ functionality.
2016  *		sr <magic-sysrq-code>
2017  */
2018 static int kdb_sr(int argc, const char **argv)
2019 {
2020 	bool check_mask =
2021 	    !kdb_check_flags(KDB_ENABLE_ALL, kdb_cmd_enabled, false);
2022 
2023 	if (argc != 1)
2024 		return KDB_ARGCOUNT;
2025 
2026 	kdb_trap_printk++;
2027 	__handle_sysrq(*argv[1], check_mask);
2028 	kdb_trap_printk--;
2029 
2030 	return 0;
2031 }
2032 #endif	/* CONFIG_MAGIC_SYSRQ */
2033 
2034 /*
2035  * kdb_ef - This function implements the 'regs' (display exception
2036  *	frame) command.  This command takes an address and expects to
2037  *	find an exception frame at that address, formats and prints
2038  *	it.
2039  *		regs address-expression
2040  * Remarks:
2041  *	Not done yet.
2042  */
2043 static int kdb_ef(int argc, const char **argv)
2044 {
2045 	int diag;
2046 	unsigned long addr;
2047 	long offset;
2048 	int nextarg;
2049 
2050 	if (argc != 1)
2051 		return KDB_ARGCOUNT;
2052 
2053 	nextarg = 1;
2054 	diag = kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL);
2055 	if (diag)
2056 		return diag;
2057 	show_regs((struct pt_regs *)addr);
2058 	return 0;
2059 }
2060 
2061 /*
2062  * kdb_env - This function implements the 'env' command.  Display the
2063  *	current environment variables.
2064  */
2065 
2066 static int kdb_env(int argc, const char **argv)
2067 {
2068 	kdb_printenv();
2069 
2070 	if (KDB_DEBUG(MASK))
2071 		kdb_printf("KDBDEBUG=0x%x\n",
2072 			(kdb_flags & KDB_DEBUG(MASK)) >> KDB_DEBUG_FLAG_SHIFT);
2073 
2074 	return 0;
2075 }
2076 
2077 #ifdef CONFIG_PRINTK
2078 /*
2079  * kdb_dmesg - This function implements the 'dmesg' command to display
2080  *	the contents of the syslog buffer.
2081  *		dmesg [lines] [adjust]
2082  */
2083 static int kdb_dmesg(int argc, const char **argv)
2084 {
2085 	int diag;
2086 	int logging;
2087 	int lines = 0;
2088 	int adjust = 0;
2089 	int n = 0;
2090 	int skip = 0;
2091 	struct kmsg_dump_iter iter;
2092 	size_t len;
2093 	char buf[201];
2094 
2095 	if (argc > 2)
2096 		return KDB_ARGCOUNT;
2097 	if (argc) {
2098 		char *cp;
2099 		lines = simple_strtol(argv[1], &cp, 0);
2100 		if (*cp)
2101 			lines = 0;
2102 		if (argc > 1) {
2103 			adjust = simple_strtoul(argv[2], &cp, 0);
2104 			if (*cp || adjust < 0)
2105 				adjust = 0;
2106 		}
2107 	}
2108 
2109 	/* disable LOGGING if set */
2110 	diag = kdbgetintenv("LOGGING", &logging);
2111 	if (!diag && logging) {
2112 		const char *setargs[] = { "set", "LOGGING", "0" };
2113 		kdb_set(2, setargs);
2114 	}
2115 
2116 	kmsg_dump_rewind(&iter);
2117 	while (kmsg_dump_get_line(&iter, 1, NULL, 0, NULL))
2118 		n++;
2119 
2120 	if (lines < 0) {
2121 		if (adjust >= n)
2122 			kdb_printf("buffer only contains %d lines, nothing "
2123 				   "printed\n", n);
2124 		else if (adjust - lines >= n)
2125 			kdb_printf("buffer only contains %d lines, last %d "
2126 				   "lines printed\n", n, n - adjust);
2127 		skip = adjust;
2128 		lines = abs(lines);
2129 	} else if (lines > 0) {
2130 		skip = n - lines - adjust;
2131 		lines = abs(lines);
2132 		if (adjust >= n) {
2133 			kdb_printf("buffer only contains %d lines, "
2134 				   "nothing printed\n", n);
2135 			skip = n;
2136 		} else if (skip < 0) {
2137 			lines += skip;
2138 			skip = 0;
2139 			kdb_printf("buffer only contains %d lines, first "
2140 				   "%d lines printed\n", n, lines);
2141 		}
2142 	} else {
2143 		lines = n;
2144 	}
2145 
2146 	if (skip >= n || skip < 0)
2147 		return 0;
2148 
2149 	kmsg_dump_rewind(&iter);
2150 	while (kmsg_dump_get_line(&iter, 1, buf, sizeof(buf), &len)) {
2151 		if (skip) {
2152 			skip--;
2153 			continue;
2154 		}
2155 		if (!lines--)
2156 			break;
2157 		if (KDB_FLAG(CMD_INTERRUPT))
2158 			return 0;
2159 
2160 		kdb_printf("%.*s\n", (int)len - 1, buf);
2161 	}
2162 
2163 	return 0;
2164 }
2165 #endif /* CONFIG_PRINTK */
2166 
2167 /* Make sure we balance enable/disable calls, must disable first. */
2168 static atomic_t kdb_nmi_disabled;
2169 
2170 static int kdb_disable_nmi(int argc, const char *argv[])
2171 {
2172 	if (atomic_read(&kdb_nmi_disabled))
2173 		return 0;
2174 	atomic_set(&kdb_nmi_disabled, 1);
2175 	arch_kgdb_ops.enable_nmi(0);
2176 	return 0;
2177 }
2178 
2179 static int kdb_param_enable_nmi(const char *val, const struct kernel_param *kp)
2180 {
2181 	if (!atomic_add_unless(&kdb_nmi_disabled, -1, 0))
2182 		return -EINVAL;
2183 	arch_kgdb_ops.enable_nmi(1);
2184 	return 0;
2185 }
2186 
2187 static const struct kernel_param_ops kdb_param_ops_enable_nmi = {
2188 	.set = kdb_param_enable_nmi,
2189 };
2190 module_param_cb(enable_nmi, &kdb_param_ops_enable_nmi, NULL, 0600);
2191 
2192 /*
2193  * kdb_cpu - This function implements the 'cpu' command.
2194  *	cpu	[<cpunum>]
2195  * Returns:
2196  *	KDB_CMD_CPU for success, a kdb diagnostic if error
2197  */
2198 static void kdb_cpu_status(void)
2199 {
2200 	int i, start_cpu, first_print = 1;
2201 	char state, prev_state = '?';
2202 
2203 	kdb_printf("Currently on cpu %d\n", raw_smp_processor_id());
2204 	kdb_printf("Available cpus: ");
2205 	for (start_cpu = -1, i = 0; i < NR_CPUS; i++) {
2206 		if (!cpu_online(i)) {
2207 			state = 'F';	/* cpu is offline */
2208 		} else if (!kgdb_info[i].enter_kgdb) {
2209 			state = 'D';	/* cpu is online but unresponsive */
2210 		} else {
2211 			state = ' ';	/* cpu is responding to kdb */
2212 			if (kdb_task_state_char(KDB_TSK(i)) == '-')
2213 				state = '-';	/* idle task */
2214 		}
2215 		if (state != prev_state) {
2216 			if (prev_state != '?') {
2217 				if (!first_print)
2218 					kdb_printf(", ");
2219 				first_print = 0;
2220 				kdb_printf("%d", start_cpu);
2221 				if (start_cpu < i-1)
2222 					kdb_printf("-%d", i-1);
2223 				if (prev_state != ' ')
2224 					kdb_printf("(%c)", prev_state);
2225 			}
2226 			prev_state = state;
2227 			start_cpu = i;
2228 		}
2229 	}
2230 	/* print the trailing cpus, ignoring them if they are all offline */
2231 	if (prev_state != 'F') {
2232 		if (!first_print)
2233 			kdb_printf(", ");
2234 		kdb_printf("%d", start_cpu);
2235 		if (start_cpu < i-1)
2236 			kdb_printf("-%d", i-1);
2237 		if (prev_state != ' ')
2238 			kdb_printf("(%c)", prev_state);
2239 	}
2240 	kdb_printf("\n");
2241 }
2242 
2243 static int kdb_cpu(int argc, const char **argv)
2244 {
2245 	unsigned long cpunum;
2246 	int diag;
2247 
2248 	if (argc == 0) {
2249 		kdb_cpu_status();
2250 		return 0;
2251 	}
2252 
2253 	if (argc != 1)
2254 		return KDB_ARGCOUNT;
2255 
2256 	diag = kdbgetularg(argv[1], &cpunum);
2257 	if (diag)
2258 		return diag;
2259 
2260 	/*
2261 	 * Validate cpunum
2262 	 */
2263 	if ((cpunum >= CONFIG_NR_CPUS) || !kgdb_info[cpunum].enter_kgdb)
2264 		return KDB_BADCPUNUM;
2265 
2266 	dbg_switch_cpu = cpunum;
2267 
2268 	/*
2269 	 * Switch to other cpu
2270 	 */
2271 	return KDB_CMD_CPU;
2272 }
2273 
2274 /* The user may not realize that ps/bta with no parameters does not print idle
2275  * or sleeping system daemon processes, so tell them how many were suppressed.
2276  */
2277 void kdb_ps_suppressed(void)
2278 {
2279 	int idle = 0, daemon = 0;
2280 	unsigned long cpu;
2281 	const struct task_struct *p, *g;
2282 	for_each_online_cpu(cpu) {
2283 		p = kdb_curr_task(cpu);
2284 		if (kdb_task_state(p, "-"))
2285 			++idle;
2286 	}
2287 	for_each_process_thread(g, p) {
2288 		if (kdb_task_state(p, "ims"))
2289 			++daemon;
2290 	}
2291 	if (idle || daemon) {
2292 		if (idle)
2293 			kdb_printf("%d idle process%s (state -)%s\n",
2294 				   idle, idle == 1 ? "" : "es",
2295 				   daemon ? " and " : "");
2296 		if (daemon)
2297 			kdb_printf("%d sleeping system daemon (state [ims]) "
2298 				   "process%s", daemon,
2299 				   daemon == 1 ? "" : "es");
2300 		kdb_printf(" suppressed,\nuse 'ps A' to see all.\n");
2301 	}
2302 }
2303 
2304 void kdb_ps1(const struct task_struct *p)
2305 {
2306 	int cpu;
2307 	unsigned long tmp;
2308 
2309 	if (!p ||
2310 	    copy_from_kernel_nofault(&tmp, (char *)p, sizeof(unsigned long)))
2311 		return;
2312 
2313 	cpu = kdb_process_cpu(p);
2314 	kdb_printf("0x%px %8d %8d  %d %4d   %c  0x%px %c%s\n",
2315 		   (void *)p, p->pid, p->parent->pid,
2316 		   kdb_task_has_cpu(p), kdb_process_cpu(p),
2317 		   kdb_task_state_char(p),
2318 		   (void *)(&p->thread),
2319 		   p == kdb_curr_task(raw_smp_processor_id()) ? '*' : ' ',
2320 		   p->comm);
2321 	if (kdb_task_has_cpu(p)) {
2322 		if (!KDB_TSK(cpu)) {
2323 			kdb_printf("  Error: no saved data for this cpu\n");
2324 		} else {
2325 			if (KDB_TSK(cpu) != p)
2326 				kdb_printf("  Error: does not match running "
2327 				   "process table (0x%px)\n", KDB_TSK(cpu));
2328 		}
2329 	}
2330 }
2331 
2332 /*
2333  * kdb_ps - This function implements the 'ps' command which shows a
2334  *	    list of the active processes.
2335  *
2336  * ps [<state_chars>]   Show processes, optionally selecting only those whose
2337  *                      state character is found in <state_chars>.
2338  */
2339 static int kdb_ps(int argc, const char **argv)
2340 {
2341 	struct task_struct *g, *p;
2342 	const char *mask;
2343 	unsigned long cpu;
2344 
2345 	if (argc == 0)
2346 		kdb_ps_suppressed();
2347 	kdb_printf("%-*s      Pid   Parent [*] cpu State %-*s Command\n",
2348 		(int)(2*sizeof(void *))+2, "Task Addr",
2349 		(int)(2*sizeof(void *))+2, "Thread");
2350 	mask = argc ? argv[1] : kdbgetenv("PS");
2351 	/* Run the active tasks first */
2352 	for_each_online_cpu(cpu) {
2353 		if (KDB_FLAG(CMD_INTERRUPT))
2354 			return 0;
2355 		p = kdb_curr_task(cpu);
2356 		if (kdb_task_state(p, mask))
2357 			kdb_ps1(p);
2358 	}
2359 	kdb_printf("\n");
2360 	/* Now the real tasks */
2361 	for_each_process_thread(g, p) {
2362 		if (KDB_FLAG(CMD_INTERRUPT))
2363 			return 0;
2364 		if (kdb_task_state(p, mask))
2365 			kdb_ps1(p);
2366 	}
2367 
2368 	return 0;
2369 }
2370 
2371 /*
2372  * kdb_pid - This function implements the 'pid' command which switches
2373  *	the currently active process.
2374  *		pid [<pid> | R]
2375  */
2376 static int kdb_pid(int argc, const char **argv)
2377 {
2378 	struct task_struct *p;
2379 	unsigned long val;
2380 	int diag;
2381 
2382 	if (argc > 1)
2383 		return KDB_ARGCOUNT;
2384 
2385 	if (argc) {
2386 		if (strcmp(argv[1], "R") == 0) {
2387 			p = KDB_TSK(kdb_initial_cpu);
2388 		} else {
2389 			diag = kdbgetularg(argv[1], &val);
2390 			if (diag)
2391 				return KDB_BADINT;
2392 
2393 			p = find_task_by_pid_ns((pid_t)val,	&init_pid_ns);
2394 			if (!p) {
2395 				kdb_printf("No task with pid=%d\n", (pid_t)val);
2396 				return 0;
2397 			}
2398 		}
2399 		kdb_set_current_task(p);
2400 	}
2401 	kdb_printf("KDB current process is %s(pid=%d)\n",
2402 		   kdb_current_task->comm,
2403 		   kdb_current_task->pid);
2404 
2405 	return 0;
2406 }
2407 
2408 static int kdb_kgdb(int argc, const char **argv)
2409 {
2410 	return KDB_CMD_KGDB;
2411 }
2412 
2413 /*
2414  * kdb_help - This function implements the 'help' and '?' commands.
2415  */
2416 static int kdb_help(int argc, const char **argv)
2417 {
2418 	kdbtab_t *kt;
2419 
2420 	kdb_printf("%-15.15s %-20.20s %s\n", "Command", "Usage", "Description");
2421 	kdb_printf("-----------------------------"
2422 		   "-----------------------------\n");
2423 	list_for_each_entry(kt, &kdb_cmds_head, list_node) {
2424 		char *space = "";
2425 		if (KDB_FLAG(CMD_INTERRUPT))
2426 			return 0;
2427 		if (!kdb_check_flags(kt->flags, kdb_cmd_enabled, true))
2428 			continue;
2429 		if (strlen(kt->usage) > 20)
2430 			space = "\n                                    ";
2431 		kdb_printf("%-15.15s %-20s%s%s\n", kt->name,
2432 			   kt->usage, space, kt->help);
2433 	}
2434 	return 0;
2435 }
2436 
2437 /*
2438  * kdb_kill - This function implements the 'kill' commands.
2439  */
2440 static int kdb_kill(int argc, const char **argv)
2441 {
2442 	long sig, pid;
2443 	char *endp;
2444 	struct task_struct *p;
2445 
2446 	if (argc != 2)
2447 		return KDB_ARGCOUNT;
2448 
2449 	sig = simple_strtol(argv[1], &endp, 0);
2450 	if (*endp)
2451 		return KDB_BADINT;
2452 	if ((sig >= 0) || !valid_signal(-sig)) {
2453 		kdb_printf("Invalid signal parameter.<-signal>\n");
2454 		return 0;
2455 	}
2456 	sig = -sig;
2457 
2458 	pid = simple_strtol(argv[2], &endp, 0);
2459 	if (*endp)
2460 		return KDB_BADINT;
2461 	if (pid <= 0) {
2462 		kdb_printf("Process ID must be large than 0.\n");
2463 		return 0;
2464 	}
2465 
2466 	/* Find the process. */
2467 	p = find_task_by_pid_ns(pid, &init_pid_ns);
2468 	if (!p) {
2469 		kdb_printf("The specified process isn't found.\n");
2470 		return 0;
2471 	}
2472 	p = p->group_leader;
2473 	kdb_send_sig(p, sig);
2474 	return 0;
2475 }
2476 
2477 /*
2478  * Most of this code has been lifted from kernel/timer.c::sys_sysinfo().
2479  * I cannot call that code directly from kdb, it has an unconditional
2480  * cli()/sti() and calls routines that take locks which can stop the debugger.
2481  */
2482 static void kdb_sysinfo(struct sysinfo *val)
2483 {
2484 	u64 uptime = ktime_get_mono_fast_ns();
2485 
2486 	memset(val, 0, sizeof(*val));
2487 	val->uptime = div_u64(uptime, NSEC_PER_SEC);
2488 	val->loads[0] = avenrun[0];
2489 	val->loads[1] = avenrun[1];
2490 	val->loads[2] = avenrun[2];
2491 	val->procs = nr_threads-1;
2492 	si_meminfo(val);
2493 
2494 	return;
2495 }
2496 
2497 /*
2498  * kdb_summary - This function implements the 'summary' command.
2499  */
2500 static int kdb_summary(int argc, const char **argv)
2501 {
2502 	time64_t now;
2503 	struct sysinfo val;
2504 
2505 	if (argc)
2506 		return KDB_ARGCOUNT;
2507 
2508 	kdb_printf("sysname    %s\n", init_uts_ns.name.sysname);
2509 	kdb_printf("release    %s\n", init_uts_ns.name.release);
2510 	kdb_printf("version    %s\n", init_uts_ns.name.version);
2511 	kdb_printf("machine    %s\n", init_uts_ns.name.machine);
2512 	kdb_printf("nodename   %s\n", init_uts_ns.name.nodename);
2513 	kdb_printf("domainname %s\n", init_uts_ns.name.domainname);
2514 
2515 	now = __ktime_get_real_seconds();
2516 	kdb_printf("date       %ptTs tz_minuteswest %d\n", &now, sys_tz.tz_minuteswest);
2517 	kdb_sysinfo(&val);
2518 	kdb_printf("uptime     ");
2519 	if (val.uptime > (24*60*60)) {
2520 		int days = val.uptime / (24*60*60);
2521 		val.uptime %= (24*60*60);
2522 		kdb_printf("%d day%s ", days, days == 1 ? "" : "s");
2523 	}
2524 	kdb_printf("%02ld:%02ld\n", val.uptime/(60*60), (val.uptime/60)%60);
2525 
2526 	kdb_printf("load avg   %ld.%02ld %ld.%02ld %ld.%02ld\n",
2527 		LOAD_INT(val.loads[0]), LOAD_FRAC(val.loads[0]),
2528 		LOAD_INT(val.loads[1]), LOAD_FRAC(val.loads[1]),
2529 		LOAD_INT(val.loads[2]), LOAD_FRAC(val.loads[2]));
2530 
2531 	/* Display in kilobytes */
2532 #define K(x) ((x) << (PAGE_SHIFT - 10))
2533 	kdb_printf("\nMemTotal:       %8lu kB\nMemFree:        %8lu kB\n"
2534 		   "Buffers:        %8lu kB\n",
2535 		   K(val.totalram), K(val.freeram), K(val.bufferram));
2536 	return 0;
2537 }
2538 
2539 /*
2540  * kdb_per_cpu - This function implements the 'per_cpu' command.
2541  */
2542 static int kdb_per_cpu(int argc, const char **argv)
2543 {
2544 	char fmtstr[64];
2545 	int cpu, diag, nextarg = 1;
2546 	unsigned long addr, symaddr, val, bytesperword = 0, whichcpu = ~0UL;
2547 
2548 	if (argc < 1 || argc > 3)
2549 		return KDB_ARGCOUNT;
2550 
2551 	diag = kdbgetaddrarg(argc, argv, &nextarg, &symaddr, NULL, NULL);
2552 	if (diag)
2553 		return diag;
2554 
2555 	if (argc >= 2) {
2556 		diag = kdbgetularg(argv[2], &bytesperword);
2557 		if (diag)
2558 			return diag;
2559 	}
2560 	if (!bytesperword)
2561 		bytesperword = KDB_WORD_SIZE;
2562 	else if (bytesperword > KDB_WORD_SIZE)
2563 		return KDB_BADWIDTH;
2564 	sprintf(fmtstr, "%%0%dlx ", (int)(2*bytesperword));
2565 	if (argc >= 3) {
2566 		diag = kdbgetularg(argv[3], &whichcpu);
2567 		if (diag)
2568 			return diag;
2569 		if (whichcpu >= nr_cpu_ids || !cpu_online(whichcpu)) {
2570 			kdb_printf("cpu %ld is not online\n", whichcpu);
2571 			return KDB_BADCPUNUM;
2572 		}
2573 	}
2574 
2575 	/* Most architectures use __per_cpu_offset[cpu], some use
2576 	 * __per_cpu_offset(cpu), smp has no __per_cpu_offset.
2577 	 */
2578 #ifdef	__per_cpu_offset
2579 #define KDB_PCU(cpu) __per_cpu_offset(cpu)
2580 #else
2581 #ifdef	CONFIG_SMP
2582 #define KDB_PCU(cpu) __per_cpu_offset[cpu]
2583 #else
2584 #define KDB_PCU(cpu) 0
2585 #endif
2586 #endif
2587 	for_each_online_cpu(cpu) {
2588 		if (KDB_FLAG(CMD_INTERRUPT))
2589 			return 0;
2590 
2591 		if (whichcpu != ~0UL && whichcpu != cpu)
2592 			continue;
2593 		addr = symaddr + KDB_PCU(cpu);
2594 		diag = kdb_getword(&val, addr, bytesperword);
2595 		if (diag) {
2596 			kdb_printf("%5d " kdb_bfd_vma_fmt0 " - unable to "
2597 				   "read, diag=%d\n", cpu, addr, diag);
2598 			continue;
2599 		}
2600 		kdb_printf("%5d ", cpu);
2601 		kdb_md_line(fmtstr, addr,
2602 			bytesperword == KDB_WORD_SIZE,
2603 			1, bytesperword, 1, 1, 0);
2604 	}
2605 #undef KDB_PCU
2606 	return 0;
2607 }
2608 
2609 /*
2610  * display help for the use of cmd | grep pattern
2611  */
2612 static int kdb_grep_help(int argc, const char **argv)
2613 {
2614 	kdb_printf("Usage of  cmd args | grep pattern:\n");
2615 	kdb_printf("  Any command's output may be filtered through an ");
2616 	kdb_printf("emulated 'pipe'.\n");
2617 	kdb_printf("  'grep' is just a key word.\n");
2618 	kdb_printf("  The pattern may include a very limited set of "
2619 		   "metacharacters:\n");
2620 	kdb_printf("   pattern or ^pattern or pattern$ or ^pattern$\n");
2621 	kdb_printf("  And if there are spaces in the pattern, you may "
2622 		   "quote it:\n");
2623 	kdb_printf("   \"pat tern\" or \"^pat tern\" or \"pat tern$\""
2624 		   " or \"^pat tern$\"\n");
2625 	return 0;
2626 }
2627 
2628 /**
2629  * kdb_register() - This function is used to register a kernel debugger
2630  *                  command.
2631  * @cmd: pointer to kdb command
2632  *
2633  * Note that it's the job of the caller to keep the memory for the cmd
2634  * allocated until unregister is called.
2635  */
2636 int kdb_register(kdbtab_t *cmd)
2637 {
2638 	kdbtab_t *kp;
2639 
2640 	list_for_each_entry(kp, &kdb_cmds_head, list_node) {
2641 		if (strcmp(kp->name, cmd->name) == 0) {
2642 			kdb_printf("Duplicate kdb cmd: %s, func %p help %s\n",
2643 				   cmd->name, cmd->func, cmd->help);
2644 			return 1;
2645 		}
2646 	}
2647 
2648 	list_add_tail(&cmd->list_node, &kdb_cmds_head);
2649 	return 0;
2650 }
2651 EXPORT_SYMBOL_GPL(kdb_register);
2652 
2653 /**
2654  * kdb_register_table() - This function is used to register a kdb command
2655  *                        table.
2656  * @kp: pointer to kdb command table
2657  * @len: length of kdb command table
2658  */
2659 void kdb_register_table(kdbtab_t *kp, size_t len)
2660 {
2661 	while (len--) {
2662 		list_add_tail(&kp->list_node, &kdb_cmds_head);
2663 		kp++;
2664 	}
2665 }
2666 
2667 /**
2668  * kdb_unregister() - This function is used to unregister a kernel debugger
2669  *                    command. It is generally called when a module which
2670  *                    implements kdb command is unloaded.
2671  * @cmd: pointer to kdb command
2672  */
2673 void kdb_unregister(kdbtab_t *cmd)
2674 {
2675 	list_del(&cmd->list_node);
2676 }
2677 EXPORT_SYMBOL_GPL(kdb_unregister);
2678 
2679 static kdbtab_t maintab[] = {
2680 	{	.name = "md",
2681 		.func = kdb_md,
2682 		.usage = "<vaddr>",
2683 		.help = "Display Memory Contents, also mdWcN, e.g. md8c1",
2684 		.minlen = 1,
2685 		.flags = KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS,
2686 	},
2687 	{	.name = "mdr",
2688 		.func = kdb_md,
2689 		.usage = "<vaddr> <bytes>",
2690 		.help = "Display Raw Memory",
2691 		.flags = KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS,
2692 	},
2693 	{	.name = "mdp",
2694 		.func = kdb_md,
2695 		.usage = "<paddr> <bytes>",
2696 		.help = "Display Physical Memory",
2697 		.flags = KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS,
2698 	},
2699 	{	.name = "mds",
2700 		.func = kdb_md,
2701 		.usage = "<vaddr>",
2702 		.help = "Display Memory Symbolically",
2703 		.flags = KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS,
2704 	},
2705 	{	.name = "mm",
2706 		.func = kdb_mm,
2707 		.usage = "<vaddr> <contents>",
2708 		.help = "Modify Memory Contents",
2709 		.flags = KDB_ENABLE_MEM_WRITE | KDB_REPEAT_NO_ARGS,
2710 	},
2711 	{	.name = "go",
2712 		.func = kdb_go,
2713 		.usage = "[<vaddr>]",
2714 		.help = "Continue Execution",
2715 		.minlen = 1,
2716 		.flags = KDB_ENABLE_REG_WRITE |
2717 			     KDB_ENABLE_ALWAYS_SAFE_NO_ARGS,
2718 	},
2719 	{	.name = "rd",
2720 		.func = kdb_rd,
2721 		.usage = "",
2722 		.help = "Display Registers",
2723 		.flags = KDB_ENABLE_REG_READ,
2724 	},
2725 	{	.name = "rm",
2726 		.func = kdb_rm,
2727 		.usage = "<reg> <contents>",
2728 		.help = "Modify Registers",
2729 		.flags = KDB_ENABLE_REG_WRITE,
2730 	},
2731 	{	.name = "ef",
2732 		.func = kdb_ef,
2733 		.usage = "<vaddr>",
2734 		.help = "Display exception frame",
2735 		.flags = KDB_ENABLE_MEM_READ,
2736 	},
2737 	{	.name = "bt",
2738 		.func = kdb_bt,
2739 		.usage = "[<vaddr>]",
2740 		.help = "Stack traceback",
2741 		.minlen = 1,
2742 		.flags = KDB_ENABLE_MEM_READ | KDB_ENABLE_INSPECT_NO_ARGS,
2743 	},
2744 	{	.name = "btp",
2745 		.func = kdb_bt,
2746 		.usage = "<pid>",
2747 		.help = "Display stack for process <pid>",
2748 		.flags = KDB_ENABLE_INSPECT,
2749 	},
2750 	{	.name = "bta",
2751 		.func = kdb_bt,
2752 		.usage = "[<state_chars>|A]",
2753 		.help = "Backtrace all processes whose state matches",
2754 		.flags = KDB_ENABLE_INSPECT,
2755 	},
2756 	{	.name = "btc",
2757 		.func = kdb_bt,
2758 		.usage = "",
2759 		.help = "Backtrace current process on each cpu",
2760 		.flags = KDB_ENABLE_INSPECT,
2761 	},
2762 	{	.name = "btt",
2763 		.func = kdb_bt,
2764 		.usage = "<vaddr>",
2765 		.help = "Backtrace process given its struct task address",
2766 		.flags = KDB_ENABLE_MEM_READ | KDB_ENABLE_INSPECT_NO_ARGS,
2767 	},
2768 	{	.name = "env",
2769 		.func = kdb_env,
2770 		.usage = "",
2771 		.help = "Show environment variables",
2772 		.flags = KDB_ENABLE_ALWAYS_SAFE,
2773 	},
2774 	{	.name = "set",
2775 		.func = kdb_set,
2776 		.usage = "",
2777 		.help = "Set environment variables",
2778 		.flags = KDB_ENABLE_ALWAYS_SAFE,
2779 	},
2780 	{	.name = "help",
2781 		.func = kdb_help,
2782 		.usage = "",
2783 		.help = "Display Help Message",
2784 		.minlen = 1,
2785 		.flags = KDB_ENABLE_ALWAYS_SAFE,
2786 	},
2787 	{	.name = "?",
2788 		.func = kdb_help,
2789 		.usage = "",
2790 		.help = "Display Help Message",
2791 		.flags = KDB_ENABLE_ALWAYS_SAFE,
2792 	},
2793 	{	.name = "cpu",
2794 		.func = kdb_cpu,
2795 		.usage = "<cpunum>",
2796 		.help = "Switch to new cpu",
2797 		.flags = KDB_ENABLE_ALWAYS_SAFE_NO_ARGS,
2798 	},
2799 	{	.name = "kgdb",
2800 		.func = kdb_kgdb,
2801 		.usage = "",
2802 		.help = "Enter kgdb mode",
2803 		.flags = 0,
2804 	},
2805 	{	.name = "ps",
2806 		.func = kdb_ps,
2807 		.usage = "[<state_chars>|A]",
2808 		.help = "Display active task list",
2809 		.flags = KDB_ENABLE_INSPECT,
2810 	},
2811 	{	.name = "pid",
2812 		.func = kdb_pid,
2813 		.usage = "<pidnum>",
2814 		.help = "Switch to another task",
2815 		.flags = KDB_ENABLE_INSPECT,
2816 	},
2817 	{	.name = "reboot",
2818 		.func = kdb_reboot,
2819 		.usage = "",
2820 		.help = "Reboot the machine immediately",
2821 		.flags = KDB_ENABLE_REBOOT,
2822 	},
2823 #if defined(CONFIG_MODULES)
2824 	{	.name = "lsmod",
2825 		.func = kdb_lsmod,
2826 		.usage = "",
2827 		.help = "List loaded kernel modules",
2828 		.flags = KDB_ENABLE_INSPECT,
2829 	},
2830 #endif
2831 #if defined(CONFIG_MAGIC_SYSRQ)
2832 	{	.name = "sr",
2833 		.func = kdb_sr,
2834 		.usage = "<key>",
2835 		.help = "Magic SysRq key",
2836 		.flags = KDB_ENABLE_ALWAYS_SAFE,
2837 	},
2838 #endif
2839 #if defined(CONFIG_PRINTK)
2840 	{	.name = "dmesg",
2841 		.func = kdb_dmesg,
2842 		.usage = "[lines]",
2843 		.help = "Display syslog buffer",
2844 		.flags = KDB_ENABLE_ALWAYS_SAFE,
2845 	},
2846 #endif
2847 	{	.name = "defcmd",
2848 		.func = kdb_defcmd,
2849 		.usage = "name \"usage\" \"help\"",
2850 		.help = "Define a set of commands, down to endefcmd",
2851 		/*
2852 		 * Macros are always safe because when executed each
2853 		 * internal command re-enters kdb_parse() and is safety
2854 		 * checked individually.
2855 		 */
2856 		.flags = KDB_ENABLE_ALWAYS_SAFE,
2857 	},
2858 	{	.name = "kill",
2859 		.func = kdb_kill,
2860 		.usage = "<-signal> <pid>",
2861 		.help = "Send a signal to a process",
2862 		.flags = KDB_ENABLE_SIGNAL,
2863 	},
2864 	{	.name = "summary",
2865 		.func = kdb_summary,
2866 		.usage = "",
2867 		.help = "Summarize the system",
2868 		.minlen = 4,
2869 		.flags = KDB_ENABLE_ALWAYS_SAFE,
2870 	},
2871 	{	.name = "per_cpu",
2872 		.func = kdb_per_cpu,
2873 		.usage = "<sym> [<bytes>] [<cpu>]",
2874 		.help = "Display per_cpu variables",
2875 		.minlen = 3,
2876 		.flags = KDB_ENABLE_MEM_READ,
2877 	},
2878 	{	.name = "grephelp",
2879 		.func = kdb_grep_help,
2880 		.usage = "",
2881 		.help = "Display help on | grep",
2882 		.flags = KDB_ENABLE_ALWAYS_SAFE,
2883 	},
2884 };
2885 
2886 static kdbtab_t nmicmd = {
2887 	.name = "disable_nmi",
2888 	.func = kdb_disable_nmi,
2889 	.usage = "",
2890 	.help = "Disable NMI entry to KDB",
2891 	.flags = KDB_ENABLE_ALWAYS_SAFE,
2892 };
2893 
2894 /* Initialize the kdb command table. */
2895 static void __init kdb_inittab(void)
2896 {
2897 	kdb_register_table(maintab, ARRAY_SIZE(maintab));
2898 	if (arch_kgdb_ops.enable_nmi)
2899 		kdb_register_table(&nmicmd, 1);
2900 }
2901 
2902 /* Execute any commands defined in kdb_cmds.  */
2903 static void __init kdb_cmd_init(void)
2904 {
2905 	int i, diag;
2906 	for (i = 0; kdb_cmds[i]; ++i) {
2907 		diag = kdb_parse(kdb_cmds[i]);
2908 		if (diag)
2909 			kdb_printf("kdb command %s failed, kdb diag %d\n",
2910 				kdb_cmds[i], diag);
2911 	}
2912 	if (defcmd_in_progress) {
2913 		kdb_printf("Incomplete 'defcmd' set, forcing endefcmd\n");
2914 		kdb_parse("endefcmd");
2915 	}
2916 }
2917 
2918 /* Initialize kdb_printf, breakpoint tables and kdb state */
2919 void __init kdb_init(int lvl)
2920 {
2921 	static int kdb_init_lvl = KDB_NOT_INITIALIZED;
2922 	int i;
2923 
2924 	if (kdb_init_lvl == KDB_INIT_FULL || lvl <= kdb_init_lvl)
2925 		return;
2926 	for (i = kdb_init_lvl; i < lvl; i++) {
2927 		switch (i) {
2928 		case KDB_NOT_INITIALIZED:
2929 			kdb_inittab();		/* Initialize Command Table */
2930 			kdb_initbptab();	/* Initialize Breakpoints */
2931 			break;
2932 		case KDB_INIT_EARLY:
2933 			kdb_cmd_init();		/* Build kdb_cmds tables */
2934 			break;
2935 		}
2936 	}
2937 	kdb_init_lvl = lvl;
2938 }
2939