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