TKN Logo SelfSoft Logo

Total Knowledge

SelfSoft, Inc.

Linux on SGI Origin2000

Here is collection of random info I gathered while bringing up SGI Origin 2000 with Linux.

First of all: toolchain does matter. I had to use gcc-2.95.4 to build kernels. Otherwise I had images that would hang completely right after loading. The problem was recently solved, so currently I am using gcc-3.3.3.

On hardware side: Origin node boards have special screws on the back, labeled "Connection actuator" on mine ("Compression" in SGI documentation). It was not very obvious what they are used for. My unit came with those screws completely unscrewed. For some reason I was getting errors as following:

Widget present but link is down!
It took me a while to relate these errors to screws. In fact I didn't figure out what are they for untill I found pictures of O2K router boards in techpubs, then pulled some node boards out, did that a few times, and finally saw that nodeboard hub connector is not male-female socket type, but rather a film with contacts, so you actually need something to tightly attach it to contacts on router board side. I actually had to go back and forth between docs and actual hardware few times, before I noticed what's going on.

We have rack-mount system here. It has MMSC unit, unfortunately without display. By default MSC control ports on the back of each unit connect to MMSC. However, in absense of display, and due to lack of desire to make extra minidin-db9 cables to hook up to "console" output of MMSC, I just hooked normal null-modem cable to MSC console directly.

First self-built kernel that actually gave me some output hung during serial driver intitialization. To be more precise - it barfed while IOC3 ethernet driver was registering UARTA (IOC3 board contains both ethernet and serial ports). After some pain and angst, I was told that in reality IP27 doesn't have propper PCI support yet. Bacchus gave me some of dirty hacks he uses to get around, but doesn't want to include in CVS.

With those patches I was able to build bootable kernel. And it even booted. Even all the way to multi-user. There are still two problems though:

  1. My O2K doesn't report MAC address of ioc3 on baseio board. To be more precise, NIC is not always detected. It seems to be quite random, so I'm guessing at some sort of timing issues.
  2. No C++ programs run. Hang happens inside of iostreams initialization. This seems to be related to NLS, so I'll try gcc built without NLS and see what happens. Setting up GCC-3.4 seemed to have helped, but it is in itself PITA for Linux/MIPS - ABI have changed as well as certain defines, that cause source-level incompatitbility with gurrent glibc.

I am also trying to get n32/n64 (as Bacchus put it "penis size factor") userland to work, but almost no success there yet. My pointer is still not any bigger then your pointer :(

Status update on various problems

gcc+glibc+C++. I still didn't find kernel-level issue that is preventing gcc-3x stdc++ from working, however, we now have gcc-3.4+glibc-latest based stages in Gentoo. You can find them on my

[Home] [Site Map] [Services] [Open Source / Projects] [About the Company] [Help] [Contact] [Portfolio]

Authoright © Total Knowledge: 2001-2004