DragonFly users List (threaded) for 2009-06
SILI-3132 driver progress report.
What? I thought Matt was only going to do an AHCI driver?
Well, after diving the Silicon Image data book and looking at the
OpenBSD and Linux driver code for it I figured I could do a full
driver using the AHCI driver as a base, and I figured I could do it in
This is the third day and its almost done. There are some PM-related
issues and probing issues left but it basically works. It is not yet
hooked into the kernel build but it is available as a module in
This driver only supports the Sil 3132 at the moment. It is a PCI-e
2-port E-Sata card. Other chips will be added once this one is solid.
The Sil chip hardware is a little buggy but from reading the linux
driver it looks like the bugs can be worked around fairly well. A
lot of the remaining work I have to do is to deal with the chip bugs.
As with the AHCI driver my SILI driver supports NCQ, Hot-Plug, Port
Multipliers, and Hot-Plug on targets behind Port Multipliers. It also
supports FIS-based switching and FIS-based switching to targets behind
port multipliers, so it can access multiple drives behind a PM
quite efficiently. In my tests the aggegate transfer rate limit seems
to be about 150 MBytes/sec which is suspiciously close to the limit
for SATA-150, even though its supposed to be connecting at SATA-300
speeds. I'll continue to research that.
The chip seems to top out at around 30,000 transaction a second. Not
bad at all.
In contrast, the AHCI driver cannot currently do FIS-Based switching
or NCQ to targets behind a PM, but it can do NCQ to directly-connected
targets. So the Sili chip is primarily of interest to people who
want to use Port Multipliers.