Thu, 11 Oct 2007

Soekris net5501 and Disk DMA

Upgrading my main development server is always a challenge because the machine also controls my lab infrastructure (power relays, console server). Every time I upgrade the kernel I need to muck with out-of-kernel serial drivers. Back in May I made my life easier by fixing the Digi Edgeport USB driver and submitting the changes upstream. But obviously it will take a while before the fix shows up in a the enterprise kernels. And I also have an 8-port PCI serial card with a driver that needs some serious love.

I have been using Soekris boxes for various things for many years and they've always been great and stable little wonders of engineering. In an attempt to decouple the console server functionality from my the build box I decided to buy a couple of net5501 boxes.

When the 5501's arrived I quickly loaded Linux and was very disappointed with performance. Despite a 500 MHz CPU with 512 MB RAM these boxes were crawling. Turns out the BIOS was broken and therefore IDE DMA did not work.

Being the impatient type I wrote a driver to work around the BIOS issues. The driver fits into the libata framework in later kernels. It has been submitted upstream and is also available here. Now the net5501 is nice and snappy!

Update: Søren subsequently released a working BIOS for the net5501. But my driver is still valid because unlike pata_amd.c it uses correct timings.

permanent link

back