serial: kgdb_nmi: Improve console integration with KDB I/O
kgdb_nmi_tty_enabled is used for two unrelated purposes, namely to suppress normal TTY input handling and to suppress console output (although it has no effect at all on TTY output). A much better way to handle muting the console is to not have to mute it in the first place! That's what this patch does. Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
8a0ff60f7e
commit
bd71a1c088
1 changed files with 13 additions and 3 deletions
|
@ -44,13 +44,22 @@ MODULE_PARM_DESC(magic, "magic sequence to enter NMI debugger (default $3#33)");
|
||||||
|
|
||||||
static bool kgdb_nmi_tty_enabled;
|
static bool kgdb_nmi_tty_enabled;
|
||||||
|
|
||||||
|
static int kgdb_nmi_console_setup(struct console *co, char *options)
|
||||||
|
{
|
||||||
|
/* The NMI console uses the dbg_io_ops to issue console messages. To
|
||||||
|
* avoid duplicate messages during kdb sessions we must inform kdb's
|
||||||
|
* I/O utilities that messages sent to the console will automatically
|
||||||
|
* be displayed on the dbg_io.
|
||||||
|
*/
|
||||||
|
dbg_io_ops->is_console = true;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void kgdb_nmi_console_write(struct console *co, const char *s, uint c)
|
static void kgdb_nmi_console_write(struct console *co, const char *s, uint c)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!kgdb_nmi_tty_enabled || atomic_read(&kgdb_active) >= 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (i = 0; i < c; i++)
|
for (i = 0; i < c; i++)
|
||||||
dbg_io_ops->write_char(s[i]);
|
dbg_io_ops->write_char(s[i]);
|
||||||
}
|
}
|
||||||
|
@ -65,6 +74,7 @@ static struct tty_driver *kgdb_nmi_console_device(struct console *co, int *idx)
|
||||||
|
|
||||||
static struct console kgdb_nmi_console = {
|
static struct console kgdb_nmi_console = {
|
||||||
.name = "ttyNMI",
|
.name = "ttyNMI",
|
||||||
|
.setup = kgdb_nmi_console_setup,
|
||||||
.write = kgdb_nmi_console_write,
|
.write = kgdb_nmi_console_write,
|
||||||
.device = kgdb_nmi_console_device,
|
.device = kgdb_nmi_console_device,
|
||||||
.flags = CON_PRINTBUFFER | CON_ANYTIME | CON_ENABLED,
|
.flags = CON_PRINTBUFFER | CON_ANYTIME | CON_ENABLED,
|
||||||
|
|
Loading…
Add table
Reference in a new issue