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