KDB makes Nehalem hang at early boot until key press
Thomas Renninger <[email protected]> Fri, 30 Oct 2009 12:02:57 +0200
| Newsgroups | gmane.linux.kernel.debugging |
|---|---|
| Organization | SUSE Products GmbH |
| Message-ID | <[email protected]> |
Hi, we currently have a problem with latest Intel CPUs/BIOSes: If the machine gets booted it hangs in: init/main.c: kdb_init(); As soon as an irq via keyboard is triggered, the machine continues booting and everything is fine. Is this known already? Can someone point me to a patch? If not, is there a repo having the latest code, I could try out whether the latest version works. IMO something like the attached patch makes sense? This fixes the problem with kdb=off (our default). But I am anxious that kdb code could still get activitated somehow and the machine might oops when trying to access not initialized kdb structures? Could someone give an estimation how risky that patch really is? Still the real bug should be found and if this is not known, can someone give me a pointer to what this problem could be related and where I should look closer at, please. Thanks, Thomas _______________________________________________ kdb mailing list [email protected] http://oss.sgi.com/mailman/listinfo/kdb
kdb_do_not_initialize_if_kdb_off.patch
(text/x-patch, 1 KB)
---
init/main.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
Index: linux-2.6.27-SLE11_BRANCH_x2apic_kdb/init/main.c
===================================================================
--- linux-2.6.27-SLE11_BRANCH_x2apic_kdb.orig/init/main.c
+++ linux-2.6.27-SLE11_BRANCH_x2apic_kdb/init/main.c
@@ -200,6 +200,9 @@ extern struct obs_kernel_param __setup_s
#ifdef CONFIG_KDB
static int __init kdb_setup(char *str)
{
+ if (!str)
+ return -EINVAL;
+
if (strcmp(str, "on") == 0) {
kdb_on = 1;
} else if (strcmp(str, "on-nokey") == 0) {
@@ -214,7 +217,7 @@ static int __init kdb_setup(char *str)
return 0;
}
-__setup("kdb=", kdb_setup);
+early_param("kdb", kdb_setup);
#endif /* CONFIG_KDB */
static int __init obsolete_checksetup(char *line)
@@ -685,9 +688,11 @@ asmlinkage void __init start_kernel(void
anon_vma_init();
#ifdef CONFIG_KDB
- kdb_init();
- if (KDB_FLAG(EARLYKDB)) {
- KDB_ENTER();
+ if (kdb_on) {
+ kdb_init();
+ if (KDB_FLAG(EARLYKDB)) {
+ KDB_ENTER();
+ }
}
#endif /* CONFIG_KDB */