On Tue, 22 Jun 2004 16:30:03 -0700,
keith <[EMAIL PROTECTED]> wrote:
> Ok I applied this patch and booted. I will attach the bootlogs. The
>system is still not booted. I don't have the magic decoder for the NMI
>reasons (I have been down this patch before with out luck).
The log shows that you are getting real NMI events. So the fact that
it entered kdb for NMI was correct.
The question is why does activating kdb cause an nmi? The kdb patch
uses the last branch recording MSR, I wonder if this is breaking on
your hardware. Untested patch at the end to turn off lbr.
The other possibility is that you have defined an IPI vector with the
same value as KDB_VECTOR, KDB_VECTOR is sent as NMI.
grep -i 0xf9 $(find include/asm-i386/ -name '*vector*')
The only one with 0xf9 should be KDB_VECTOR. If there is a conflict,
change KDB_VECTOR.
Index: linux/arch/i386/kdb/kdbasupport.c
===================================================================
--- linux.orig/arch/i386/kdb/kdbasupport.c Mon Jun 21 11:44:58 2004
+++ linux/arch/i386/kdb/kdbasupport.c Wed Jun 23 10:21:17 2004
@@ -1184,6 +1184,7 @@ static unsigned char lbr_warned;
void
kdba_enable_lbr(void)
{
+#if 0 /* do not use lbr */
u32 lv, hv;
if (!test_bit(X86_FEATURE_MCA, boot_cpu_data.x86_capability)) {
@@ -1196,6 +1197,7 @@ kdba_enable_lbr(void)
rdmsr(MSR_IA32_DEBUGCTLMSR, lv, hv);
lv |= 0x1; /* Set LBR enable */
wrmsr(MSR_IA32_DEBUGCTLMSR, lv, hv);
+#endif
}
/*
@@ -1216,6 +1218,7 @@ kdba_enable_lbr(void)
void
kdba_disable_lbr(void)
{
+#if 0 /* do not use lbr */
u32 lv, hv;
if (!test_bit(X86_FEATURE_MCA, boot_cpu_data.x86_capability)) {
@@ -1228,6 +1231,7 @@ kdba_disable_lbr(void)
rdmsr(MSR_IA32_DEBUGCTLMSR, lv, hv);
lv &= ~0x1; /* Set LBR disable */
wrmsr(MSR_IA32_DEBUGCTLMSR, lv, hv);
+#endif
}
/*
@@ -1248,6 +1252,7 @@ kdba_disable_lbr(void)
void
kdba_print_lbr(void)
{
+#if 0 /* do not use lbr */
u32 from, to, dummy;
if (!test_bit(X86_FEATURE_MCA, boot_cpu_data.x86_capability))
@@ -1267,6 +1272,7 @@ kdba_print_lbr(void)
kdb_printf(" to: ");
kdb_symbol_print(to, NULL, KDB_SP_DEFAULT);
kdb_printf("\n");
+#endif
}
/*
Index: linux/arch/i386/kernel/traps.c
===================================================================
--- linux.orig/arch/i386/kernel/traps.c Wed Jun 23 08:37:29 2004
+++ linux/arch/i386/kernel/traps.c Wed Jun 23 10:19:44 2004
@@ -986,13 +986,13 @@ void __init trap_init(void)
set_trap_gate(12,&stack_segment);
set_trap_gate(13,&general_protection);
#ifdef CONFIG_KDB
- if (test_bit(X86_FEATURE_MCE, boot_cpu_data.x86_capability) &&
- test_bit(X86_FEATURE_MCA, boot_cpu_data.x86_capability)) {
- set_intr_gate(14,&page_fault_mca);
- }
- else {
+ // if (test_bit(X86_FEATURE_MCE, boot_cpu_data.x86_capability) &&
+ // test_bit(X86_FEATURE_MCA, boot_cpu_data.x86_capability)) {
+ // set_intr_gate(14,&page_fault_mca);
+ // }
+ // else {
set_intr_gate(14,&page_fault);
- }
+ // }
#else /* !CONFIG_KDB */
set_intr_gate(14,&page_fault);
#endif /* CONFIG_KDB */
---------------------------
Use http://oss.sgi.com/ecartis to modify your settings or to unsubscribe.