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