Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Linux: Kernel

[PATCH 03/11] kdb: Implement disable_nmi command

 

 

Linux kernel RSS feed   Index | Next | Previous | View Threaded


anton.vorontsov at linaro

Jul 30, 2012, 4:58 AM

Post #1 of 3 (55 views)
Permalink
[PATCH 03/11] kdb: Implement disable_nmi command

This command disables NMI-entry. If NMI source was previously shared with
a serial console ("debug port"), this effectively releases the port from
KDB exclusive use, and makes the console available for normal use.

Of course, NMI can be reenabled, enable_nmi modparam is used for that:

echo 1 > /sys/module/kdb/parameters/enable_nmi

Signed-off-by: Anton Vorontsov <anton.vorontsov [at] linaro>
---
kernel/debug/kdb/kdb_main.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
index 3ee92a1..1e9f20e 100644
--- a/kernel/debug/kdb/kdb_main.c
+++ b/kernel/debug/kdb/kdb_main.c
@@ -2131,6 +2131,24 @@ static int kdb_dmesg(int argc, const char **argv)
return 0;
}
#endif /* CONFIG_PRINTK */
+
+static int kdb_disable_nmi(int argc, const char *argv[])
+{
+ kgdb_arch_enable_nmi(0);
+ return 0;
+}
+
+static int kdb_param_enable_nmi(const char *val, const struct kernel_param *kp)
+{
+ kgdb_arch_enable_nmi(1);
+ return 0;
+}
+
+static const struct kernel_param_ops kdb_param_ops_enable_nmi = {
+ .set = kdb_param_enable_nmi,
+};
+module_param_cb(enable_nmi, &kdb_param_ops_enable_nmi, NULL, 0600);
+
/*
* kdb_cpu - This function implements the 'cpu' command.
* cpu [<cpunum>]
@@ -2873,6 +2891,8 @@ static void __init kdb_inittab(void)
kdb_register_flags("dmesg", kdb_dmesg, "[lines]",
"Display syslog buffer", 0, KDB_SAFE);
#endif
+ kdb_register_flags("disable_nmi", kdb_disable_nmi, "",
+ "Disable NMI entry to KDB", 0, KDB_SAFE);
kdb_register_flags("defcmd", kdb_defcmd, "name \"usage\" \"help\"",
"Define a set of commands, down to endefcmd", 0, KDB_SAFE);
kdb_register_flags("kill", kdb_kill, "<-signal> <pid>",
--
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


ccross at android

Jul 30, 2012, 10:33 AM

Post #2 of 3 (56 views)
Permalink
Re: [PATCH 03/11] kdb: Implement disable_nmi command [In reply to]

On Mon, Jul 30, 2012 at 4:58 AM, Anton Vorontsov
<anton.vorontsov [at] linaro> wrote:
> This command disables NMI-entry. If NMI source was previously shared with
> a serial console ("debug port"), this effectively releases the port from
> KDB exclusive use, and makes the console available for normal use.
>
> Of course, NMI can be reenabled, enable_nmi modparam is used for that:
>
> echo 1 > /sys/module/kdb/parameters/enable_nmi

This is very different behavior from the FIQ debugger "console"
command you are trying to replace. In the FIQ debugger, everything
goes through the FIQ/NMI, even when in console mode. That means that
the user can always get back to FIQ debugger/KDB mode using a special
sequence (we use a break character). With your implementation, if you
switch from KDB to console to see if the console is working, and find
that it is not working, you can never get back into KDB.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


anton.vorontsov at linaro

Aug 1, 2012, 2:02 PM

Post #3 of 3 (49 views)
Permalink
Re: [PATCH 03/11] kdb: Implement disable_nmi command [In reply to]

On Mon, Jul 30, 2012 at 10:33:34AM -0700, Colin Cross wrote:
> On Mon, Jul 30, 2012 at 4:58 AM, Anton Vorontsov
> <anton.vorontsov [at] linaro> wrote:
> > This command disables NMI-entry. If NMI source was previously shared with
> > a serial console ("debug port"), this effectively releases the port from
> > KDB exclusive use, and makes the console available for normal use.
> >
> > Of course, NMI can be reenabled, enable_nmi modparam is used for that:
> >
> > echo 1 > /sys/module/kdb/parameters/enable_nmi
>
> This is very different behavior from the FIQ debugger "console"
> command you are trying to replace. In the FIQ debugger, everything
> goes through the FIQ/NMI, even when in console mode. That means that
> the user can always get back to FIQ debugger/KDB mode using a special
> sequence (we use a break character). With your implementation, if you
> switch from KDB to console to see if the console is working, and find
> that it is not working, you can never get back into KDB.

Ah, I see. But with disable_nmi, in addition to kernel console,
applications can use /dev/ttyXX as normal, and with 'console' command
that is not possible (at least w/o modifying applications to escape
magic sequence). So, I think we should have both commands, each would
handle its own use case.

(Initially I just tried to avoid adding another console driver, but
it seems there is no other way, heh.)

Thanks!

--
Anton Vorontsov
Email: cbouatmailru [at] gmail
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Linux kernel RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.