Skip site navigation (1)Skip section navigation (2)
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>