From owner-freebsd-current Tue Jun 20 10: 8:38 2000 Delivered-To: freebsd-current@freebsd.org Received: from apollo.backplane.com (apollo.backplane.com [216.240.41.2]) by hub.freebsd.org (Postfix) with ESMTP id 512FD37BC2D; Tue, 20 Jun 2000 10:08:31 -0700 (PDT) (envelope-from dillon@apollo.backplane.com) Received: (from dillon@localhost) by apollo.backplane.com (8.9.3/8.9.1) id KAA87060; Tue, 20 Jun 2000 10:08:30 -0700 (PDT) (envelope-from dillon) Date: Tue, 20 Jun 2000 10:08:30 -0700 (PDT) From: Matthew Dillon Message-Id: <200006201708.KAA87060@apollo.backplane.com> To: freebsd-smp@freebsd.org Cc: Greg Lehey Subject: SMP discussion moving to freebsd-smp Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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