Date: Tue, 20 Jun 2000 10:08:30 -0700 (PDT) From: Matthew Dillon <dillon@apollo.backplane.com> To: freebsd-smp@freebsd.org Cc: Greg Lehey <grog@lemis.com> Subject: SMP discussion moving to freebsd-smp Message-ID: <200006201708.KAA87060@apollo.backplane.com>
next in thread | raw e-mail | index | archive | help
All SMP/FreeBSD/BSDI work should move to the freebsd-smp list.
(I've BCC'd this to -current).
--
I now have mutexes 99% working in an SP build. I will be making
SP (single processor) patch sets available tonight or tomorrow
morning. (99% == I can boot the machine normally but after a
while it locks up due to an interrupt nesting issue which I haven't
dealt with yet).
In order to make an MP build work, we need interrupt threads (either
light or heavy weight).
Greg, you expressed an interest in doing the light-weight interrupt
threads. Do you want me to do the heavy-weight interrupt threads
first? It's a lot of nasty assembly and it is a prerequisit for being
able to do the light weight interrupt threads.
I think once the heavy weight interrupt threads are done that the
light weight interrupts can be implemented entirely in C.
Right now the SP build works because I am allowing (unthreaded) interrupts
to steal the idleproc's context, and that only works because they can
get the giant mutex without blocking (remember, the BSDI giant mutex
is a blocking mutex, not a spin mutex). In the MP build the interrupts
need to be able to block getting the giant mutex which means we need
to implement heavy-weight interrupt threads at the very least before
we can get anything working, because we are not allowed to block in
the idleproc.
I believe I have done almost everything necessary to implement heavy
weight interrupt threads, including moving the kthreads initialization
code to an earlier point in the boot process (so much so that I think
the device init stuff can run with working kernel processes rather then
with all the delayed-thread stuff).
I also think that people can start hacking on the code with the SP
build once I fix this last little problem, then I can work on the MP
build in parallel. The MP build requires a significant amount of
additional work including having to rewrite most of the APIC assembly
code (just as I had to rewrite most of the ICU assembly code for the SP
build). It's another weekend at least for that. Using the SP build
does not exercise all the MP characteristics of the mutexes but it
exercises enough that it can be used to vett for dumb mistakes.
-Matt
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200006201708.KAA87060>
