Subject: building your own i386 smp kernels.
To: None <tech-smp@netbsd.org, port-i386@netbsd.org>
From: Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>
List: tech-smp
Date: 08/24/2000 12:03:37
Here's roughly what you need to do in order to build your own
smp-capable kernels.  Note that if you're not familiar with kernel
debugging and the DDB command set you probably don't want to try
this...

1) check out a full -current kernel source tree 2) use the
"sommerfeld_i386mp_1" branch for arch/i386:
   cd sys/arch/i386
   cvs update -rsommerfeld_i386mp_1

3) use a kernel config such as GENERIC.MP / INSTALL.MP to build a
kernel.  

You want both MULTIPROCESSOR and an ioapic device:

ioapic*	at mainbus? apid ?

You definitely want DIAGNOSTIC, DDB, DEBUG, and LOCKDEBUG turned on.

There are a number of known bugs which will be cleaned up as Jason and
I have time.  

The "short list" at the moment:
	- probably a few pmap bugs (the code currently there is likely
	  to lose referenced/modified bits if a pmap is used by
	  multiple cpu's)
	- the "makeinfo" command seems to behave strangely (when
	  building usr.sbin/amd/doc)
	- there is not yet an interprocessor interrupt to force the
	  scheduler to run on a slave cpu; this means that (for
	  instance) signals can't be delivered to processes looping in
	  userspace on a slave cpu.
	- interrupt deallocation doesn't work, which means that the
	  automated interrupt probing done by the pcic driver for
	  pcmcia slots will crash the system, so don't configure in
	  any pcic or pcmcia drivers.

Be prepared for sudden random crashes, be prepared to lose data, and
be prepared to debug problems you trip over.

Thanks for your help.

					- Bill