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