SMP kernel hanging at when testing 8254 interrupt delivery
David P. Reese Jr.
daver at gomerbud.com
Tue Jul 29 17:36:58 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?
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
--------------------------------------------------------------------------
It can be argued that returning a NULL pointer when asked to allocate
zero bytes is a silly response to a silly question.
-- FreeBSD manual page for malloc(3)
More information about the Bugs
mailing list