Skip to content

Commit b18b099

Browse files
diandersDaniel Thompson
authored andcommitted
kgdb: Make "kgdbcon" work properly with "kgdb_earlycon"
On my system the kernel processes the "kgdb_earlycon" parameter before the "kgdbcon" parameter. When we setup "kgdb_earlycon" we'll end up in kgdb_register_callbacks() and "kgdb_use_con" won't have been set yet so we'll never get around to starting "kgdbcon". Let's remedy this by detecting that the IO module was already registered when setting "kgdb_use_con" and registering the console then. As part of this, to avoid pre-declaring things, move the handling of the "kgdbcon" further down in the file. Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://lore.kernel.org/r/20200630151422.1.I4aa062751ff5e281f5116655c976dff545c09a46@changeid Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
1 parent fcdb84c commit b18b099

1 file changed

Lines changed: 14 additions & 8 deletions

File tree

kernel/debug/debug_core.c

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,6 @@ int dbg_switch_cpu;
9494
/* Use kdb or gdbserver mode */
9595
int dbg_kdb_mode = 1;
9696

97-
static int __init opt_kgdb_con(char *str)
98-
{
99-
kgdb_use_con = 1;
100-
return 0;
101-
}
102-
103-
early_param("kgdbcon", opt_kgdb_con);
104-
10597
module_param(kgdb_use_con, int, 0644);
10698
module_param(kgdbreboot, int, 0644);
10799

@@ -920,6 +912,20 @@ static struct console kgdbcons = {
920912
.index = -1,
921913
};
922914

915+
static int __init opt_kgdb_con(char *str)
916+
{
917+
kgdb_use_con = 1;
918+
919+
if (kgdb_io_module_registered && !kgdb_con_registered) {
920+
register_console(&kgdbcons);
921+
kgdb_con_registered = 1;
922+
}
923+
924+
return 0;
925+
}
926+
927+
early_param("kgdbcon", opt_kgdb_con);
928+
923929
#ifdef CONFIG_MAGIC_SYSRQ
924930
static void sysrq_handle_dbg(int key)
925931
{

0 commit comments

Comments
 (0)