Report: Silicon Image Sil3112 SATA controller with PCPartner TXB820DS motherboard
I have recently had a lot of trouble trying to build a 2.6.18 kernel for this combination. I eventually succeeded, and acidjuice's article ("Compiling kernel 2.6.10 on a Slackware 10.1") , and articles about using the Sil3112 were of help, so I'd like to report my experience, in the hope it helps someone else.
1. Making sure the right chipset support for the motherboard's IDE controller was in the kernel was essential to avoid "VFS: Cannot open root device" and a kernel panic.
2. Which slot the PCI cards were in was important: get the order wrong, and something stops working.
My plan was to boot from and IDE disk and have plenty of disk space available on two SATA drives attached to a PCI SATA adapter. I did the initial install from a Slackware 10.1 CD, and set about building the 2.6.18 kernel I needed. As I had previously build a 2.6.18 kernel with the sil3112 driver for another machine, I anticipated no problems.
Motherboard: PCPartner TXB820DS, model code no: 35-8333-04
SATA card: Syba Serial ATA RAID PCI card (2-port), chipset Silicon Image Sil3112 (note: the latest Syba SATA cards I've seen, sold in the same box with the same description, are an entirely different chipset - Inioc, I think, which appears to have no Linux driver)
NIC: chipset RTL8139C
1. LILO would pause, before showing the O, then give the message:
Error: Duplicated volume ID
This would occur once for each SATA disk attached. The boot would then proceed normally.
2. The SATA driver would appear to have trouble recognising the DMA speed. A series of lines starting "ata1.00:" would describe the controller, one saying:
ata1.00: configured for UDMA/100
then, a few lines later:
ata1: soft resetting port
and, following that, another "configured for" line, specifying a slower speed, until it reached PIO4. The process of going through each speed and deciding not touse it would make the boot-up take over ten minutes!
3. The boot process hung at:
VFS: Cannot open root device "301" or unknown block
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown - block(3,1)
4. The NIC would be recognised, but assigning an IP address by dhcp or manually would fail.
1, 2 and 4 are related to the order of the PCI cards in the motherboard slots. The motherboard manual contains conflicting information: under Expansion Slots it says:
4 PCI bus master slots (rev. 2.1 compliant, with 1 PCI slot sharing with 1 ISA slot)
but a sticker on another page says:
1. PCI Slot 1&2 support full features of PCI specification;
2. PCI Slot 3&4 support all features of PCI specification except Bus master operation.
Neither the motherboard manual, nor the markings on the motherboard itself actually say which PCI slot is which.
I found that with the following order of cards, problems 1, 2 and 4 disappeared:
<Nearest to the keyboard connector>
* SATA Sil3112
* NIC RTL8139C
Problem 3 is due to not having the correct IDE chipset compiled into the kernel. I found that the following .config worked:
Oh, inserting the whole .config makes the message too long, contact me if you need it.
Hope this is useful to someone.