The Linux BIOS Home Page

The Software

Some fun pictures

Things we need help on

Status

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
PIIX4E
82443GX
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.
Compaq DS10L
(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.

News

8/5/00: VIA Promedia 133 is into Linux. 440BX integration almost done. DS10 dead. SMP is incredibly reliable.

The VIA Promedia is booting into Linux, but interrupts are not working yet so it is hanging in calibrate_delay() (no jiffies). It turned out there was a register off to one side that is essential to program, since it turns on the Memory Clock Enables. When we turned on this register our memory instantly started working. Then we were taking traps in the Linux "clear BSS" code. We turned off the APIC and that problem went away. Now if we could only get it back on. The keyboard controller still won't read back anything but 0xff from port 0x60.

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.

7/31/00: VIA Pro Media 133 is starting. 440BX, 440TX support is being integrated into the tree.

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.

7/20/00: SMP IS WORKING. DS10 progress.

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.

7/3/00: We're up on the WINFAST 6300; work begins on the VIA Apollo chipset

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.

6/24/00: Compaq supplies a new Photon 1U; VIA is now a partner

Compaq has kindly loaned us a Photon 1U cluster node to use for the LinuxBIOS project. This node uses the RCC chipset and we are working on an NDA with RCC to get started.

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.

New as of 6/8/00: L440GX+ booting multiuser from power-on

We still have the "you have to reset, IDE is slow" problem, but basically we're booting to full multiuser from power-on. The DRAM problem is fixed. For now we've put the following code into drives/ide/ide-probe.c:
#define LINUXBIOS #ifdef LINUXBIOS if (! strncmp(drive->name, "hda", 3)) { printk("jamming drive present for %s\n", drive->name); drive->present = 1; } #endif
Yes, I know it's gross :-)

New as of 6/2/00: SiS 630 booting multiuser from power-on

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.

caveats:

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.

New as of 5/31/00: SiS 630 mounting root

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.

New as of 5/30/00: First SiS BOOT!

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!

New as of 5/25/00: Some good news from SiS

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.

New as of 5/22/00: "Back to Normalcy"

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.

New as of 5/5/00: First login, 9:15 AM MST ...

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.

New as of 5/3/00: Multiuser boot! With a PCI VGA display!

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.

New as of 5/2/00: Mounting root!

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.

New as of 5/1/00: smaller release

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.

New as of 4/25/00: Release

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.

New as of 4/42/00: Stuck on PCI

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.

New as of 4/20/00: we have a rom image for the SiS 630

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.

New as of 4/14/00: we're now up in freebios

OK, we've made the cut over to freebios (go to sourceforge to see freebios). I'm much happer with freebios: it was easy to modify so that there are exactly 10 instructions of 16-bit code, which means we no longer need NASM. After that point we're in 32-bit mode, and after a few more lines of macros (get DRAM up) we're in C!

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.

New as of 3/31/00: Missing SCSI interrupts

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 :-)

New as of 3/20/00: Success!

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 ...

New as of 3/4/00: Debugging Linux start_kernel

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.

New as of 2/29/00: Gunzipping Linux and jumping to it

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 :-)

New as of 2/18/00: Missing file from the LOBOS distribution

Sorry, I missed a file when I put up the info on lobos. It is called stripkernel, and it is here .

New as of 2/17/00: I've got Linux flashed into NVRAM

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.

New as of 2/15/00: Memory init is working -- we mean it this time!

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.

New as of 2/14/00: Memory init is working

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.

New as of 2/11/00: My L440GX+ is running OpenBIOS.

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 linuxbios@acl.lanl.gov

New as of 2/10/00: the source to let Linux boot Linux.

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:

lobos /usr/src/linux/vmlinux

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.

What is Linux BIOS?

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:

How it will work

Current status:

For more info send mail to linuxbios@acl.lanl.gov Current LinuxBIOS contributors are Ron Minnich (also the webmaster for this page), James Hendricks(jimi@lanl.gov), and Dale Webster(dalew@lanl.gov).