Serial ATA (SATA) Linux hardware/driver status report (original) (raw)
This status report applies to the latest SATA driver release, found in kernels >= 2.6.18-git5 (i.e. what will be 2.6.19).
Table of Contents
- Recent updates
- Hardware support
- Intel ICH "IDE mode"
- AHCI (newer Intel ICH, ULi, others)
- Promise TX2/TX4
- Promise SX4
- Promise SX8
- Silicon Image 311x
- Silicon Image 3124
- Broadcom/ServerWorks/Apple
- VIA 64xx
- NVIDIA nForce
- SiS 180
- Pacific Digital QStor
- Vitesse 7174 / Intel 31244
- Marvell 88SXxxxx
- HighPoint (HPT)
- ADMA (including Pacific Digital Talon
SATA) - 3ware SATA RAID
- ULi (ALi) Electronics SATA
- Software support
- Vendor support
- Driver / feature matrix
1. Recent updates
Error handling has been rewritten. NCQ and device hotplug have been merged. Port multiplier and power management support is maturing rapidly. PATA support continues, with the help of Alan Cox and others.
2. Hardware support
Intel ICH "IDE" mode
Driver name: ata_piix
Summary: No TCQ/NCQ. Looks like a PATA controller, but with a few added, non-standard SATA port controls. Hardware does not support hotplug. "Warmplug" support is possible.
Update: ICH6/7/8 include support for addressing the SATA PHY registers. This is not yet supported in Linux, mainly because some BIOS do not fill in the necessary (PCI BAR) resources.
Update: Boot-time, probe-time issues continue to persist in some cases, related to the "PCS" register. The ata_piix driver in 2.6.18 and later provides a "force_pcs" module option to help users deal with this (values: 0=default, 1=ignore PCS, 2=honor PCS). Play around with 'force_pcs' if you have device detection problems.
AHCI (newer Intel ICH, ULi, others)
Driver name: ahci
Summary: Full NCQ support, full SATA control including hotplug and PM.
Note1: AHCI specification is completely open.
Note2: ATI, Intel, JMicron, NVIDIA, SiS, ULi and VIA are currently known to have deployed AHCI in their chipsets.
Hopefully others will follow. AHCI is a nice, open design.
Promise TX2/TX4
Driver name: sata_promise
Summary: No TCQ. Newer cards support NCQ. Full SATA control including hotplug and PM on all.
Issue #5: Some boards appear to have PATA as well as SATA ports. PATA is currently supported only in the libata-dev.git#promise-sata-pata branch.
Promise SX4
Driver name: sata_sx4
Summary: No TCQ/NCQ. No SATA control (bridged PATA solution), so hotplug and SATA PM are not possible.
Issue #6: The SX4 hardware is not fully utilized by the Linux kernel driver. The SX4 hardware includes an on-board DIMM and hardware XOR offload. Using the on-board DIMM as cache, and issuing each RAID transaction once (instead of once for each disk), will result in increased performance, but the driver doesn't do that yet. SX4 hardware is very "RAID friendly", particularly RAID1/5. Users may wish to use the Promise driver to fully utilize the hardware.
Issue #7: With certain DIMMs (make sure they are top-quality ECC registered), there have been reports of data corruption.
Promise SX8
Driver name: sx8
Summary: Per-host queues, mostly full SATA control via firmware, including hotplug, PM, TCQ and NCQ support.
Not suited to libata architecture, a separate block driver "sx8" has been written for this hardware.
Needs ATAPI support, so it may wind up using libata after all, for the non-disk devices.
Silicon Image 3112/3114
Driver name: sata_sil
Summary: No TCQ/NCQ. Looks like a PATA controller, but with full SATA control including hotplug and PM.
Silicon Image 3124
Driver name: sata_sil24
Summary: Full TCQ/NCQ support, with full SATA control including hotplug and PM.
The 3124 is a nice, open design.
Broadcom/ServerWorks/Apple
Driver name: sata_svw
Summary: Huge per-device queues, full SATA control including hotplug and PM for the "Frodo4" and "Frodo8" boards. Apple K2 SATA, which also uses this chipset, has all the feature of Frodo4/8 save the host DMA queueing feature ("QDMA"). QDMA supports legacy TCQ, but not NCQ.
Update: Newer cards support NCQ via QDMA.
VIA
Driver name: sata_via
Summary: No TCQ/NCQ. Looks like a PATA controller, but with full SATA control including hotplug and PM.
NOTE: Newer VIA chipsets are AHCI, and use the ahci driver rather than the sata_via driver.
NVIDIA
Driver name: sata_nv
Summary: No TCQ/NCQ in early chipsets. NCQ support added in later chipsets. Looks like a PATA controller, but with full SATA control including hotplug and PM.
Update: NVIDIA has provided information (under NDA) that permits implementation of NCQ support, and a sample Linux implementation (patch) as well. Unfortunately, the patch needs debugging, and no one seems to have the time or motivation.
NOTE: Newer NVIDIA chipsets are AHCI, and use the ahci driver rather than the sata_nv driver.
SiS 180-182
Driver name: sata_sis
Summary: No TCQ/NCQ. Looks like a PATA controller, but with full SATA control including hotplug and PM.
NOTE: Newer SiS chipsets are AHCI, and use the ahci driver rather than the sata_sis driver.
Pacific Digital QStor
Driver name: sata_qstor
Summary: Advanced queueing controller, with full SATA phy control. Only used in non-RAID mode, even though this chip provides real hardware RAID capabilities.
Vitesse 7174 / Intel 31244
Driver name: sata_vsc
Summary: NCQ and 64-bit DAC support possible, but not implemented. Looks like a PATA controller, but with full SATA control including hotplug and PM.
Marvell 88SXxxxx
Driver name: sata_mv
Summary: Similar to ServerWorks "frodo": per-device queues, full SATA control including hotplug.
The 88SX50xx series supports TCQ, but not NCQ or PM.
The 88SX6xxx series supports TCQ, NCQ, and PM.
The 88SX7xxx series supports TCQ, NCQ, and PM.
HighPoint (HPT)
Driver name: sata_mv or hptiop (sometimes)
Some of the recent HighPoint cards are based on the Marvell 88SX50xx chips. These will be supported by the Marvell libata driver (in progress, see above).
Newer cards pretend they are SCSI, and are supported by the hptiop driver.
ADMA (including Pacific Digital Talon SATA)
Driver name: pdc_adma
Summary: No control over SATA phy at all (no hotplug/PM). Has per-device hardware queues, and supports legacy TCQ.
Docs are public (yay!), though there are apparently a lot of details not in the public docs that are necessary for proper use of Pacific Digital's ADMA controllers.
3ware SATA RAID
Driver name: 3w-9xxx or 3w-xxxx
Not suited for libata architecture.
Separate open source SCSI driver for 3-ware hardware exists.
ULi (nee ALi) Electronics SATA
Driver name: sata_uli
Summary: No TCQ/NCQ. Looks like a PATA controller, but with full SATA control including hotplug and PM.
3. Software support
This SATA software feature statushas been moved to its own page.
4. Vendor support
Completely open chipsets
I make an effort to highlight vendors that support their chipsets by posting hardware documentation publicly (open hardware). In an effort to provide positive reinforcement, I also make an effort to give priority to performing engineering tasks on open hardware.
Open chipsets:
ADMA: Pacific Digital Talon, others?
AHCI: Acard ATP8620, ATI, Intel ICH6-ICH8, JMicron, NVIDIA, SiS, VIA
Intel ICH5-ICH8
Intel 31244 (Vitesse 7174)
Promise 2037x, 20319, 205xx family
Silicon Image 311x family
Silicon Image 3124 family
Sponsors and assistance
The following companies have helped sponsor work on libata, either through my work with Red Hat, or through donations of hardware, or through access to hardware documentation, or through access to engineers.
List in alpha order. If I'm forgetting somebody, let me know.
- Broadcom (Serverworks)
- Dell
- HP
- Intel
- Marvell
- Maxtor
- NVIDIA
- Pacific Digital
- Promise
- Red Hat
- Seagate
- SGI
- Silicon Image
- SiS
- ULi Electronics
- VIA
- Western Digital
5. Driver / feature matrix
Driver | Maturity | new EH | NCQ | DeviceHotplug | Suspend |
---|---|---|---|---|---|
ahci | production | yes | yes | yes | yes |
ata_piix | production | yes | never | no | yes |
pdc_adma | beta | no | no | no | no |
sata_mv | beta | no | no | no | no |
sata_nv | production | yes | no | yes | no |
sata_promise | production | no | no | no | no |
sata_qstor | beta | no | no | no | no |
sata_sil | production | yes | never | yes | yes |
sata_sil24 | production | yes | yes | yes | yes |
sata_sis | production | yes | never | no | no |
sata_svw | production | yes | no | no | no |
sata_sx4 | beta | no | never | never | no |
sata_uli | production | yes | never | no | no |
sata_via | production | yes | never | no | no |
sata_vsc | production | yes | never | no | no |
Key:
yes | Yes, feature is present. |
---|---|
no | No, feature is not present. The hardware can support this feature, but driver code does not yet exist to support it. |
never | Feature will never be implemented. Usually due to lack of hardware support for features, such as NCQ. |
production | No known major issues. New issues tend to get fixed quickly. |
beta | Has open issues, and new issues may get fixed less quickly. |
Note: When all drivers are converted to new EH, the 'new EH' feature column will be removed.