Running Linux on the Voyager Architecture
=========================================

For full details and current project status, see

http://www.hansenpartnership.com/voyager

The voyager architecture was designed by NCR in the mid 80s to be a
fully SMP capable RAS computing architecture built around intel's 486
chip set.  The voyager came in three levels of architectural
sophistication: 3,4 and 5 --- 1 and 2 never made it out of prototype.
The linux patches support only the Level 5 voyager architecture (any
machine class 3435 and above).

The Voyager Architecture
------------------------

Voyager machines consist of a Baseboard with a 386 diagnostic
processor, a Power Supply Interface (PSI) a Primary and possibly
Secondary Microchannel bus and between 2 and 20 voyager slots.  The
voyager slots can be populated with memory and cpu cards (up to 4GB
memory and from 1 486 to 32 Pentium Pro processors).  Internally, the
voyager has a dual arbitrated system bus and a configuration and test
bus (CAT).  The voyager bus speed is 40MHz.  Therefore (since all
voyager cards are dual ported for each system bus) the maximum
transfer rate is 320Mb/s but only if you have your slot configuration
tuned (only memory cards can communicate with both busses at once, CPU
cards utilise them one at a time).

Voyager SMP
-----------

Since voyager was the first intel based SMP system, it is slightly
more primitive than the Intel IO-APIC approach to SMP.  Voyager allows
arbitrary interrupt routing (including processor affinity routing) of
all 16 PC type interrupts.  However it does this by using a modified
5259 master/slave chip set instead of an APIC bus.  Additionally,
voyager supports Cross Processor Interrupts (CPI) equivalent to the
APIC IPIs.  There are two routed voyager interrupt lines provided to
each slot.

Processor Cards
---------------

These come in single, dyadic and quad configurations (the quads are
problematic--see later).  The maximum configuration is 8 quad cards
for 32 way SMP.

Quad Processors
---------------

Because voyager only supplies two interrupt lines to each Processor
card, the Quad processors have to be configured (and Bootstrapped) in
as a pair of Master/Slave processors.

In fact, most Quad cards only accept one VIC interrupt line, so they
have one interrupt handling processor (called the VIC extended
processor) and three non-interrupt handling processors.

Current Status
--------------

The System will boot on Mono, Dyad and Quad cards.  There was
originally a Quad boot problem which has been fixed by proper gdt
alignment in the initial boot loader.  If you still cannot get your
voyager system to boot, email me at:

<J.E.J.Bottomley@HansenPartnership.com>


The Quad cards now support using the separate Quad CPI vectors instead
of going through the VIC mailbox system.

The Level 4 architecture (3430 and 3360 Machines) should also work
fine.

Dump Switch
-----------

The voyager dump switch sends out a broadcast NMI which the voyager
code intercepts and does a task dump.

Power Switch
------------

The front panel power switch is intercepted by the kernel and should
cause a system shutdown and power off.

A Note About Mixed CPU Systems
------------------------------

Linux isn't designed to handle mixed CPU systems very well.  In order
to get everything going you *must* make sure that your lowest
capability CPU is used for booting.  Also, mixing CPU classes
(e.g. 486 and 586) is really not going to work very well at all.
