Total Knowledge: Linux/MIPS SGI Origin2000

Linux/MIPS SGI Origin2000


Home Projects Jobs Clientele Publishing Contact

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 until 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 absence 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 initialization. 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 incompatibility with current 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 gentoo webspace. They work for me and have been reported to work for few other people (on IP27 as well as other hardware).

n32/n64 userland. I have managed to build gcc-3.4 multilib-enabled compiler. I also managed to build o32/n32/n64 glibc combo. However rebuilding rest of userland as n32 and/or n64 turned out to be a bit of a challenge. Many packages have library paths hardwired (and for some propper library path detection is just not smart enough), so multi-abi system is *real* pain. Not to mention the fact that Gentoo package manager itself is simply not designed for that kind of thing. I will probably try to build purely n32 and purely n64 systems at some point in time, but I'm afraid bootstrapping' that will not be an easy task, since I'll have to cross-build enough packages manually to get portage system going. Ugh.

Authoright © Total Knowledge: 1999-2013