Linux on SNI RM200/300/400/600

Machine List

To see a list of SNI RMxxx Machine types see this page. It is far from complete but you get a imagination on how much different hardware is out there.

Kernel State

All of the fancy stuff is merged in the upstream linux-mips git tree. See http://www.linux-mips.org for access and build instructions.

Most likely the very obscure RM600 series wont work. Also all SMP and R10k and better machines will most likely not work. RM200, RM400 series are worth a try.

Thomas maintains a list of Machines he tests on and which work - See here: http://www.linux-mips.org/wiki/User:Tsbogend

Progress

Mon, 13 Aug 2007

Found some more problems on the RM200-C40. Basically all machines with second level cache seem to have problems reading over a certain amount of data from disk at once. Reads of 1024 up to 4096 bytes have proven to work. I modified arcboot once again to split reads issued from the cache code to split down into smaller reads and now arcboot works on RM200-225 and RM200-C40 aswell. Here is the software:

snitrail is needed to write a correct volume trailer to the disks. The disks is currently hardcoded to /dev/sda so check the code. It should warn about SGI disklabels with cylinder boundary mismatches. It then discovers the SCSI Disk geometry with SG ioctls and write the volume trailer matching the SGI Volhdr.

arcboot also contains some hardcoded values currently as we currently havent decided on the way to know the boot disk. The bootfile currently would look like dkncr(0,0,10)e2load. Beware that writing ext2load would overflow the environment variables max length and would be truncated. As the SNI Prom doesnt have something like OSOptions or OSPartition we need to get this via a seperate path. One would be to read it from the VolHdr by looking at the boot partition flag or the boot filename. Currently its set to dkncr(0,0,1) aka /dev/sda2 and the arcboot.conf label is linux.

Sun, 12 Aug 2007

I just came back from a successfull hack-weekend. Thomas Bogendoerfer did a lot of work the last months and brought most of the non-RM600, non-SMP machines to work. The kernel works beautiful from the default mips-linux git tree for my RM200-225 and a RM200-C20 i now have from Thomas. We dealt the whole weekend with trying to get a bootloader working. The problem is that the PROM lacks a "seek" prom entry point (it has a seek function though). I worked around that on the last meeting by searching the seek functions prolog between prom_open and prom_read. Although i found the prom entry point the whole issue didnt work out. Thomas found out in the meanwhile that SNI/Sinix is stupid as hell by having another partition table at the end of every disk additionally to the SGI/RiscOS Volume Header. It is called the "Volume Trailer" and needs to reflect all partitions, otherwise the Prom is not able to open a partition or read from it. It took us a while to understand the exact location of the Volume Trailer on the disk but finally i wrote a tool to write the trailer and now my patched arcboot works like a charm and we have a disk booting running RM200-225.

Wed, 06 Jul 2005

More fiddling with timer interrupts on the RM400-440 e.g. A20R. the timer 2 output is connected to timer 0 & 1 which are connected to interrupt 2 and 4. Still no interrupts though. It seems i am lacking some knowledge. Booting the todays kernel hang in "calibrating delay loop" for 1-2 Minuten and then endlessly goes into the timer_irq loop. Guess divisors are wrong and we dont ack the interrupt.

Mon, 04 Jul 2005

After again stumbling over the CONF_SC bug (machine got scache but no linesize) i found that these were fixed cache line size overrides in the mach-rm200/cpu-feature-overrides.h. Finally even RM400 boots through until calibrating delay loop without modifications in the r4k cache handling.

Sat, 02 Jul 2005

Made some progress concerning memory configuration. An "undocumented" prom call got into my way filling a buffer with memory bank configuration. Now we can better detect which memory regions are RAM. The new RM400 i got is actually an 440 which is brdtype 4 "TOWER_OASIC". The kernel now dumps the first 128byte of the IDProm so we can actually see what your box is even if we panic later on.

Sat, 25 Jun 2005

Initial port startet. We (me ans tsbogend) got a kernel running and outputting stuff via the prom_printf. Everything looks promising. The Firmware is to differnent to ARC to use that part of the kernel. The RM200-225 boots fine and even generated timer interrupts. As the serial on that box is a 16550 we are already booting until "Mounting root filesystem" which than fails. No wonder - We dont have any device drivers yet.

Links

-->