Commit 9731191f75a54c4fa17e9b9b88f3144cf4b47836

Authored by Jason Wessel
1 parent 0bb9fef913

kgdboc: Add ekgdboc for early use of the kernel debugger

The ekgdboc= differs from kgdboc= in that you can begin debuggin as
soon as the exceptions are setup and the kgdb I/O driver is available,
instead of waiting until the tty subsystem is available.

CC: kgdb-bugreport@lists.sourceforge.net
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>

Showing 2 changed files with 25 additions and 0 deletions Side-by-side Diff

Documentation/kernel-parameters.txt
... ... @@ -713,6 +713,12 @@
713 713 The VGA output is eventually overwritten by the real
714 714 console.
715 715  
  716 + ekgdboc= [X86,KGDB] Allow early kernel console debugging
  717 + ekgdboc=kbd
  718 +
  719 + This is desgined to be used in conjunction with
  720 + the boot argument: earlyprintk=vga
  721 +
716 722 eata= [HW,SCSI]
717 723  
718 724 edd= [EDD]
drivers/serial/kgdboc.c
... ... @@ -223,6 +223,25 @@
223 223 .post_exception = kgdboc_post_exp_handler,
224 224 };
225 225  
  226 +#ifdef CONFIG_KGDB_SERIAL_CONSOLE
  227 +/* This is only available if kgdboc is a built in for early debugging */
  228 +int __init kgdboc_early_init(char *opt)
  229 +{
  230 + /* save the first character of the config string because the
  231 + * init routine can destroy it.
  232 + */
  233 + char save_ch;
  234 +
  235 + kgdboc_option_setup(opt);
  236 + save_ch = config[0];
  237 + init_kgdboc();
  238 + config[0] = save_ch;
  239 + return 0;
  240 +}
  241 +
  242 +early_param("ekgdboc", kgdboc_early_init);
  243 +#endif /* CONFIG_KGDB_SERIAL_CONSOLE */
  244 +
226 245 module_init(init_kgdboc);
227 246 module_exit(cleanup_kgdboc);
228 247 module_param_call(kgdboc, param_set_kgdboc_var, param_get_string, &kps, 0644);