On Wed, 2005-08-24 at 21:15, Ray Bryant wrote:
> I'm having zero luck getting this to work. Here's what I am trying:
> 2.6.11 + kdb-v4.4-2.6.11-common-3 + kdb-v4.4-2.6.11-x86_64
>
> The symptom is that the machine triple faults during bootup. It happens when
> the kernel is trying to start init. Running under the SimNow simulator,
> I've tracked it down to failing in notifier_call_chain(). I'm having some
> difficulty tracking down how it got there, so thought I would ask if anyone
> else had a clue. Attached is the .config I am using. (It appears to enter
> notifier_call_chain() then call kprobe_exceptions_notify() then off to
> general_protection(), whence it appears to end up in notifier_call_chain()
> one
> last fatal time.) (I don't get the printk() output from
> do_general_protection().....)
>
> What I am doing differently from other folks running x86_64, 2.6.11, and kdb?
> (I turned off kprobes on the offchance that that would fix things, but it
> didn't. This fails consistently on AMD and EMT64 boxen.)
Hi Ray, Everyone,
I had similar problems and found that the interface for the die notify
chain had changed. In particular the value the debugger needed to
return to say that it had serviced the trap changed from NOTIFY_BAD to
NOTIFY_STOP. The int3 interrupt also changed from being reported as
a sub-item of DIE_TRAP to having its own DIE_INT3.
Perhaps this is already in the current patch and there are other
problems. It is probably in Steven's tarball but it doesn't make it
to the mailing list.
Here is the patch I used. I hope this helps.
Jim Houston - Concurrent Computer Corp.
--- arch/x86_64/kdb/kdbasupport.c.0 2005-07-27 14:37:32.000000000 -0400
+++ arch/x86_64/kdb/kdbasupport.c 2005-08-02 10:54:06.000000000 -0400
@@ -1236,14 +1236,19 @@
case DIE_DEBUG:
ret = kdb(KDB_REASON_DEBUG, err, regs);
break;
+ case DIE_INT3:
+ ret = kdb(KDB_REASON_BREAK, err, regs);
+ break;
+#if 0
case DIE_TRAP:
if (trap == 3) // breakpoint
ret = kdb(KDB_REASON_BREAK, err, regs);
- // falls thru
+ break;
+#endif
default:
break;
}
- return (ret ? NOTIFY_BAD : NOTIFY_DONE);
+ return (ret ? NOTIFY_STOP : NOTIFY_DONE);
}
/*
---------------------------
Use http://oss.sgi.com/ecartis to modify your settings or to unsubscribe.