MINIX SNP
=========

1. Installing Minix SMP
2. Configuring Minix SMP
3. Booting Minix SMP
4. Using Minix SMP
5. Compatibility
6. Support and contact information
7. Acknowledges




1. Installing Minix SMP
-----------------------

Minix SMP must be installed over source files of Minix 2.0.0. Minix SMP
package contains only source files of kernel and include that has been
modified of added, so you need have previously installed Minix 2.0.0
source files.
In order to install Minix SMP you need the package file minixsmp.Z.
Uncompress (as root) the package file:

# compress -d minixsmp.Z

It will create a tar file "minixsmp". Extract files:

# tar xvf minixsmp

It will write files into /usr/src/kernel and /usr/include/minix 
directories. This will overwrite many files in these directories, 
so be careful before destroy any changes you would have made 
there. If you have changed the location of these directories, you will have 
to move files manually.

Next step you can configure some parameters of multiprocessor kernel.





2. Configuring Minix SMP
------------------------

You can configure two parameters in order to customize your multiprocessor 
kernel. First you can choice between multiprocessor kernel and monoprocessor
one setting the define ENABLE_MP in /usr/include/minix/config.h (1 for 
multiprocessor, 0 for monoprocessor).
If you use multiprocessor kernel, then you have to reserve resources for 
each possible processor in the system. MP_NR_CPUS define in 
/usr/include/minix/config.h selects the maximum number of processors. You 
can configure here up to 4 processor with no more changes in code. For 
values above 4 other changes not described in this file are necessary.

By default system is configured for 2 CPU multiprocessor.

Then you have to recompile kernel and Minix image as usual: As root move 
into tools directory /usr/src/tools and build Minix image and hard disk boot 
(make hdboot). Finally, restart Minix

# cd /usr/src/tools
# make hdboot
# reboot





3. Booting Minix SMP
--------------------

Boot Minix as usually. After message "Minix 2.0.0  Copyright 1997 
Prentice-Hall, Inc. Executing in 32-bit protected mode" will appear the 
messages of multiprocessor starting procedure: "IntelMP multiprocessor kernel
support v1.0" followed by one entry for each processor in the system up to 
the MP_NR_CPUS value configured:

CPU type 673 APIC id0 enabled as BSP
CPU type 673 APIC id1 enabled as AP
CPU type 673 APIC id2 enabled as AP
...

Where CPU type can change depending of CPU model, but APIC id number should be in increasing order starting by zero for the only BSP.

Next will appear messages of normal Minix booting (disk, memory, etc.). Any other message will report a warning or error in multiprocessor initialization.





4. Using Minix SMP
------------------

During Minix SMP service you can use next keys:

F1: Minix process status information. For each process in the system, next to 
    the PID number is shown the number of CPU that runs it at that moment. 
    In addition, status of each processor is listed at bottom of screen.
F5: Enable BSP.
F6: Disable BSP (and enable AP1 if not enabled).
F7: Enable AP1.
F8: Disable AP1 (and enable BSP if not enabled).




5. Compatibility
----------------

Minix SMP v1.0 has been developed and tested under an double Intel Pentium III
MMX 500MHz box (CPU model 673) mounted  on Gigabyte GA-6BXD r1.6 motherboard 
(chipset Intel 440BX AGP BIOS v.2.5). Motherboard BIOS is Award Modular BIOS 
v4.51P6.

It should work in any Pentium based box with MP configuration table provided 
by BIOS and APIC numeration ordered starting by zero for the BSP. Refer to 
Intel Corporation Multiprocessor Specification Version 1.4. for more info.





6. Support and contact information
----------------------------------

Any comments, suggestions or bugs may be reported by e-mail to 
<llorente@unex.es>. Your help is welcomed and thanked.
Minix SMP has been developed from Minix 2.0.0 by Jesus M. Alvarez Llorente at 
University of Extremadura (Spain).

More info at http://webepcc.unex.es/~jalvarez/minixsmp




7. Acknowledges
---------------

Special thanks to Juan Carlos Diaz Martin for the help, support and work 
provided for this and other works.





Last update of this README: Nov 19, 2002.

