SMP kernel hanging at when testing 8254 interrupt delivery
Matthew Dillon
dillon at apollo.backplane.com
Tue Jul 29 20:01:23 PDT 2003
:A UP kernel boots just fine, however when I try to boot an SMP kernel the
:boot process hangs in a loop in sys/i386/isa/clock.c.
:
:$DragonFly: src/sys/i386/isa/clock.c,v 1.4 2003/07/06 21:23:49 dillon Exp $
:...
:#ifdef APIC_IO
: if (apic_8254_trial) {
:
: printf("APIC_IO: Testing 8254 interrupt delivery\n");
: while (read_intr_count(8) < 6) <-- hangs here
: ; /* nothing */
:
:What is most bothersome is that the SMP kernel hoses my CMOS checksum,
:hinting that this is a result of a larger problem.
:
:I discovered this problem with a snapshot from just a couple of days ago.
:I'll go ahead and try a chronological binary search with the source tree
:to see where the problem was introduced. This seems to be a DragonFly
:issue because an SMP FreeBSD 4.8 kernel boots just fine.
:
:Has anyone else running DragonFly on SMP hardware encountered this problem?
Yes, Jeffrey Hsu reported the same problem, but hadn't tried to backtrace
it. I sure would appreciate whatever work you are able to do to home
in on the problem.
Please try commenting out the #define CHECK_POINTS line in
i386/i386/mp_machdep.c on line 189. Maybe that is causing the CMOS
issues.
I am going to turn it off anyway, right now, because I did not mean
to leave it on.
:If I am reading the source correctly, the routines in
:
: sys/i386/isa/icu_vector.s
:
:increment the interrupt counts in the array intr_countp[vec] , so the above
:loop waits for 6 interrupts from the rtc. Is there anything I can examine
:in the debugger to shed some light on the problem?
:
:--
:
: David P. Reese Jr. daver at xxxxxxxxxxxx
Hmm. All I can think of is to spatter printf()'s around. First see
if removing CHECK_POINTS solves the CMOS checksum problem, though, because
if it does it will make debugging a lot easier.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
More information about the Bugs
mailing list