|Mainboard||Status||Critical Problems||Problems||Vendor Support Level||Links to Documentation|
|Intel L440GX+||Booting to multiuser from power on! Both SMP and non-SMP work. Using /dev/fb as display, can log in. No networking yet. No SCSI. These are due to size limitations||Still need to figure out how to program NVRAM. No /dev/fb for CLGD5480 yet.||The web documents are excellent, although incomplete in some cases -- there is no hint of how to make the NVRAM writeable, for example. Intel has declined to help us with this work -- for now.||
BIOS boot disk. You need this to write linuxbios into NVRAM.
Product guide. A good overview
|SiS SiS630||Now booting Linux to multiuser from power on! Now using /dev/fb||Still need to wrap up DRAM sizing. SiS /dev/fb has a problem, we're working on it.||Outstanding. SiS has provided a motherboard, documentation, BIOS code, and pseudo-code to help with the work, as well as answers to any questions we have. We requested a /dev/fb driver for the onboard AGP hardware and had it in one day.||630 chips|
|VIA Promedia 133||Booting into linux from power on. DRAM init problems resolved.||We can't get interrupts turned on. The keyboard controller won't work correctly either.||Very good. VIA has provided hardware, documentation, and BIOS pseudo-code. They are also working to help us out with our problems.||We haven't found web documents yet.|
(667 Mhz. EV6 Alpha, 1U rack)
|Dale has produced an aboot that can be prepended to a gzip'ed linux kernel and gunzip and then boot it. This has been tested and boots all the way up.||SRM needs to erase and then write FLASH to load our code. We've verified that it can erase FLASH. We've also verified that it sometimes won't write it, and we now have a totally dead DS10 to show for our efforts -- quite literally a "brick". We're waiting for a new logic board.||DS10 starting point.|
The 440BX tree is now a part of LinuxBIOS.
Serial support for certain mainboards is now in.
POST codes are in! We are putting in lots of POST codes for debugging. They don't compare to an Arium, but not everyone has Ariums, and when we start the K7 support, we won't either.
We have learned that the SRM can erase the memory on the DS10, but can't always flash it. We've also learned DS10s won't boot from a flash that contains nothing but 0xff in every location (pretty reasonable behavior, actually). So we're stuck with a dead DS10 just as Dale was ready to test a flashed LinuxBIOS. Win some, lose some ...
SMP is so solid on the L440GX we've started to take it for granted. We've had no major problems in a couple of weeks. Now if only we could learn how to flash a big kernel, we could have some real fun.
We have the Pro Media 133 chipset almost working. The current two problems: first, SDRAM works only as long as we leave refresh OFF. If we turn refresh on, the 64M SDRAM bank starts acting like a 64K SDRAM bank. We're losing 10 bits of address somehow. Also, though we have enabled the keyboard, reads to port 0x60 return nothing but 0xff.
Tyson Sawyer of IS Robotics has very kindly contributed his 440BX code to the tree. He is still stuck on memory init. His mainboard is the GA-6BXC. Symptoms are that Linuxbios comes up and unzips the kernel and that is the last output he sees. We suspect this is a CAS timing or refresh problem.
We have also received a 440TX source bundle. This code includes printk support. We're going to plug that in soon. The 440TX is an older chipset mainly used now in embedded applications.
James Hendricks has got SMP working. We can power up the 440GX mainboard and get to a multi-user prompt with full SMP support.
Dale Webster is close to having Linux gunzipping and booting out of memory on the Compaq DS10 Alpha.
We plan to commit the new tree complete with SMP support 7/21 or 7/24.
I'm planning to put our latest Winfast 6300 image on this web page at the same time. You can pull this image down, burn a flash, and watch Linux boot in short order.
We are now passing sizing and other parameter information to Linux. The LinuxBIOS footprint on the kernel is shrinking daily, and is now down to less than 50 lines. We have also found a bug in MTRR initialization in all versions of Linux and are working on a fix.
SiS sent a WINFAST 6300 mainboard. We plugged the LinuxBIOS FLASH from the Procomm BST1B into this mainboard and it boots fine. The WINFAST is a nice mainboard; supports PIII and the Bonnie numbers are good. One funny note: Jason Potnick tried to alter some speed settings with the supplied Award BIOS. From that point on, the mainboard was dead. The Award BIOS could not get it to boot! So we plugged the LinuxBIOS flash back in and: voila, boots fine. For this mainboard, at this time, the LinuxBIOS is the preferred approach.
Jason Potnick has got Serial Presence Detect for SDRAM sizing working fine on the L440GX+ and the VIA mainboards. We expect to integrate this code into the CVS tree quite soon.
Watch this space for an SMP announcement. Jimi Hendricks is close.
Dale Webster is closing in on the Alpha DS10. This has been a tough nut to crack.
We welcome VIA as a partner in the LinuxBIOS project. VIA has supplied a mainboard and documentation, and has generously offered to help with any questions we have, up to and including BIOS code and engineering support.
As of today, for the first time, we're booting to multiuser linux from a power-on. This is on the SiS 630.
As far as I'm concerned, the BIOS is dead! Reboot times: 35 seconds with linuxbios (34.9 of which is /etc/rc.d scripts); 87 seconds with the normal BIOS.
The image at the sourceforge can be used to generate the romimage that works. The bootup really is shockingly fast, it's quite fun.
Unrelated news: james hendricks may have fixed SDRAM on the L440GX. Memory seems to be working from power-up. We may have two different machines working by Friday.
Also, SiS reports they are getting further in the boot than I am, which indicates there are still mainboard issues. But I got the keyboard almost fixed this morning (not clear it is completely working) and am getting to the mount root step. Past that point, I get DMA timeouts, which suggests bad interrupt vectors.
SiS was able to modify our dram startup code, and with a little more tweaking here we've gotten up to booting Linux. It is now hanging on the keyboard controller so we're going to try to fix that tomorrow. The SiS will be the first machine to boot Linux from a power-on. This is pretty exciting!
SiS reports that our DRAM config does in fact work on one of their in-house mainboards. It is possible we have been dealing with a bug in our SiS 630-based mainboard, since it was a development model. They are sending a new production mainboard and we will be trying our code out on that. If it works it is possible we'll have the first working LinuxBIOS (as in working all the way from full power-off to booting Linux) next week sometime.
We're starting work on the DS10 (Alpha machine). First efforts involve just getting it working at all, and then seeing how to reload the firmware.
If you have been following the news you'll notice we had a little fire out here, and needless to say nothing has happened in the last two weeks. We hope to get back in the lab tomorrow and get going again. There's a good chance we'll have a bios ROM for the SiS 630 shortly.
As of this morning we could boot linux from NVRAM and log in, the keyboard is working (L440GX).
SiS has supplied /dev/fb code for their motherboard, and we're actively pushing the DRAM issues, so hope to have this working in a few days. I'm going to be at ICS 2000 next week, so not much will happen until that's over.
Yup, we're there. We're booting multiuser. We're using /dev/fb and a Matrox Millenium for the console, ignoring the on-board Cirrus on the L440GX. There are one or two things left to do and I'll put the new version here.
Today's snapshot now mounts hda1 as ext2! It dies when it tries to open a console. The crucial change was to have it enable IDE, rather than checking that the BIOS had enabled ide: see the patch for drivers/ide/ide-pci.c. This is working on the L440GX+.
On the SiS630 side, we are iterating with SiS on getting DRAM working. We also need to figure out how to make all the NVRAM addressable, but don't expect this to be a big problem.
I've reduced the release to the bios tree and a patch file for 2.3.99-pre5. The patches are so minimal that they will probably work on just about any 2.3. I have the SiS 630 up but the memory config is still not there -- however, SiS will be working on this too so we should get there soon. I am going to give the L440GX PCI one last push and see what SiS comes up with from their end.
Here you go. Warning! If you don't have an ICE, and don't feel comfortable with hardware, this is not for you. This is version -1. I'm only putting this out because some of you need to take a look and tell me what I'm doing wrong :-).
Status: I'm burning NVRAM for the SiS 630 mainboard. It's sort of working but still not turning DRAM on right. As for the L440GX+, I'm still fooling with PCI. It is possible that Linux will soon learn to handle unitialized PCI correctly, which will make life easier.
Linux just can't configure an unconfigured PCI bus. This is quite a disappointment but at this point we have several people who have offered to help crack this problem open. I would most prefer to have Linux just do this work but the structure of PCI support in Linux doesn't make it likely for it to happen. So it will be done in the bootstrap. That's life.
Only problem: our flash burner can't burn the SST PH28SF040 NVRAM. We've got a more advanced burner on order, but we won't be able to test until next week. Oh well. We do have the SiS 630 motherboard up and running Linux (standard Redhat 6.1). It's a very nice motherboard for clustering: simple, 133 MHz SDRAM support, no useless bits like I2O on board.
So we are back to booting 2.3.45 and getting the BUG at line 141 in bootmem.c. We'll get to that next week ...
The SiS 630 motherboard came in today. As soon as we have a flash burner we can start looking at that. SiS has been very helpful in providing the motherboard and BIOS source code to get us going on their hardware.
We're probing and finding all SCSI devices. We're not getting interrupts set up correctly and so are getting SCSI aborts because of this.
Now that SiS is an active supporter of LinuxBIOS we are going to put the L440GX+ on hold for a few weeks while we get it going on the SiS 630. SiS has been very forthcoming with information and BIOS source, and we feel it makes sense to get things going on that before we resume with the L440GX+. During this change we're also switching to FreeBIOS because it is a better design. Things will be quiet for a bit.
Finally, I'm going on vacation for a week to get away from non-cooperative motherboards :-)
We're now booting linux out of NVRAM. It gets to the point of wanting to mount a disk, and since I have no disk attached to the motherboard it naturally dies. It seems to properly configure the PCI bus, and finds the Ethernet and other devices and configures them. So now I need to go grab an IDE disk and get it the rest of the way up ...
OK, I can see the printk's from the kernel going into the log buffer. Things are hung as of the first wait for a clock interrupt (calibrate_delay). Looks like I need to set up enough of the APIC to get IRQ0 going. This will have to wait until 3/13 since I'm off on travel. But things are looking close.
Well, I'm now debugging Linux code. It's getting to calibrate_delay and hanging since interrupts are not coming in. It's clear I need to do a bit more PIIX4E configuration. We had this same problem earlier when we were using LOADBIOS to load the image and it was a simple matter of making sure the interrupts were coming through.
There's also an interesting chicken-and-egg situation: I'd be happier if PCI config in Linux happened a bit earlier, but it probably is happening as early as it can.
I've also noticed that I'm still not getting SDRAM config quite right. If you have a piece of 16-bit code that can configure the SDRAMs on the 440gx from a cold (i.e. power-up) state, I'd like to talk to you :-)
Sorry, I missed a file when I put up the info on lobos. It is called stripkernel, and it is here .
I've got a gzip'ed vmlinux flashed into nvram along with the openbios. Right now it is failing at the point where it should unzip the kernel. I'm seeing some flakiness with the DRAM which indicates some potential problems with the settings.
Well I was somewhat off yesterday, but as of today the memory is really working. I am now running in 32-bit protected mode in the openbios startup and getting ready to gunzip linux. I would like to get the agp card up enough to have VGA support, so I'm going to look at this real quick.
I've got it properly init'ing the SDRAM registers on the 443 bridge side and the SDRAM side. The last step here is to gunzip Linux and jump to it. Hopefully that happens later today or tomorrow.
I built a 64K OpenBIOS rom.bin image that does little more than set things up and print a message. To do this I took the Intel iflash disk and pasted the 64k rom.bin over the p11-0102.bi1 file. You have to skip the first 160 bytes of the file since that is a header. Next you can jumper the bios recovery on the motherboard, and burn this floppy into the NVRAM. Set the jumper back and reset and you're running OpenBIOS.
It gets to the point of trying to use SDRAM and dies. There's more to initializing SDRAM than there used to be. Basically you have to walk the bridge chip through an initialization sequence, and you also have to walk the SDRAMs through one too. I'm printing the SDRAM specs now, but if you have ideas on how this is done send mail to email@example.com
This code supplies the LOBOS system call via a c-diff to 2.2.13 (which will probably patch most kernels); a modified S00reboot; a command (lobos) to reboot using the system call; and the C code that calls the system call for the reboot. You also need stripkernel, which strips vmlinux to a binary image. Here is a paper describing how it works.
To install, patch the kernel; replace S00reboot with the new one; put lobos and stripkernel in a root-findable path; and compile tbootfile and put it next to stripkernel and lobos. You should then be able to reboot linux from linux.
To reboot you can simply type:
Notes: works fine on many machines. So far, does not work well on some SCSI-based machines -- I'm missing something on the parameters, help gratefuly accepted. Let me know if you have questions or comments or improvements.
We are working on making Linux our BIOS. In other words, we plan to replace the BIOS in NVRAM on our Rockhopper cluster with a Linux image, and instead of running the BIOS on startup we'll run Linux. We have a number of reasons for doing this, among them:
For more info send mail to firstname.lastname@example.org Current LinuxBIOS contributors are Ron Minnich (also the webmaster for this page), James Hendricks(email@example.com), and Dale Webster(firstname.lastname@example.org).