Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Jan 1996 12:15:07 -0700 (MST)
From:      Terry Lambert <terry@lambert.org>
To:        Bruno.Bretelle@masi.ibp.fr (Bruno Bretelle)
Cc:        questions@FreeBSD.org
Subject:   Re: FreeBSD and multiprocessor PC
Message-ID:  <199601101915.MAA15130@phaeton.artisoft.com>
In-Reply-To: <199601101409.PAA28453@masi.ibp.fr> from "Bruno Bretelle" at Jan 10, 96 03:11:25 pm

next in thread | previous in thread | raw e-mail | index | archive | help
> I'm just wondering if it's generally possible to get FreeBSD running on
> a Inntel-base multiprocessor machine? Are there any steps toward porting
> FreeBSD on a multiprocessor platform?

The distributed code runs on one processor of amultiprocessor box.


Jack Vogel has patches that will apply cleanly, if you can figure where
to put them and add a file that was omited from the original patch set
and sent under seperate cover.  I'm sure Jack knows exactly who does
and does not have his patches.  8-)  8-).

To use Jack's patches, you must back out the source tree to the code
from 28 Oct 1994.  There are specific changes to locore.s that will
prevent his patches from working, apparently for stack frame support
in the kernel debugger (among other things).

There are also a couple of coding areas and an assumption of a low
memory reserve which was pulled out of newer code (it assumes because
ther is an implied overlap in two locations in Jack's locore.s and
mpcore.s).

So you must have an account on FreeFall, or contact Jack directly to
get the patches, and you must have CVS tree access to get the 28 Oct 94
checkout to work.  CVS tree access isn't really a problem any more,
it's publically pullable.


The resulting patches give you a low grained (kernel entrancy is
semaphored) parallelism which uses a processor anonymity model for
scheduling.  Such a model is good because it allows processors as
schedulable resources, but is bad because of locality of reference
issues regarding the L1 cache for each processor.  For instance,
you can't use this model and (easily) bind a process to a specific
processor.  You can make minor changes to the scheduler, like using
a per processor preference queue and saving tasks that were running
on the processor to the local queue, but you sacrifice the ability
to migrate processes except in the idle case.


I have a series of patches against one month old -current, which use
the standard (new) kernel initialization mechanism.  They don't work
if you enable any of the kernel debugging or tracing, mostly because
of the cruddy job I did of integrating locore.s.  8-).


I have sent the patches to several people so far, but I am doing
some abominable stuff with the page tables when I actually run using
them.  Peter Wemm was looking at integrating cannonically correct
locore.s code that took into account the debugging and other issues,
and when he's done, I'll reupdate the patches (they are mostly some
additional files and a couple of small patches beyond the locore.s
modifications, su the update shouldn't be bad).


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199601101915.MAA15130>