                 Information about Linux/PPC SMP mode
=====================================================================

This document and the related code was written by me
(Cort Dougan, cort@fsmlabs.com) please email me if you have questions,
comments or corrections.

Last Change: 3.31.99

If you want to help by writing code or testing different hardware please
email me!

1. State of Supported Hardware

  PowerSurge Architecture - tested on UMAX s900, Apple 9600
    The second processor on this machine boots up just fine and
    enters its idle loop.  Hopefully a completely working SMP kernel
    on this machine will be done shortly.

    The code makes the assumption of only two processors.  The changes
    necessary to work with any number would not be overly difficult but
    I don't have any machines with >2 processors so it's not high on my
    list of priorities.  If anyone else would like do to the work email
    me and I can point out the places that need changed.  If you have >2
    processors and don't want to add support yourself let me know and I
    can take a look into it.

  BeBox
    BeBox support hasn't been added to the 2.1.X kernels from 2.0.X
    but work is being done and SMP support for BeBox is in the works.

  CHRP
    CHRP SMP works and is fairly solid.  It's been tested on the IBM F50
    with 4 processors for quite some time now.
