Hardware, driver status

From ata Wiki
Jump to: navigation, search

Contents

Recent updates

Link Power Management support for AHCI capable hardware is maturing, though a few devices have issues.

Hardware support

Information on the capabilites of the devices themselves is present in the list of hardware features.

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/9/10, PCH 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: ICH5 includes support for MSI at its SATA controller in non combined mode. This is not yet supported in Linux.

Acard AHCI

Driver name: acard-ahci

Summary: Full NCQ and full SATA control including hotplug and PM. Looks like a standard AHCI controller, but with a few differences requiring a different driver.

Update: Hotplug and NCQ are not yet supported by the driver

AHCI (newer Intel ICH, ULi, others)

Driver name: ahci

Supported chipsets are:

AMD SB600/700/800, Hudson
Intel 3100, CE 3100, ICH6 ~ ICH10, ESB2, NM10, PCH and Tolapai, "6 Series" (P67, H67, Q67 etc.)
JMicron 360, 361, 363, 365, 366
Marvell 6121, 6145, 88SExxxx series
NVIDIA MCP65, MCP67, MCP73, MCP77, MCP79
SiS 966, 968
ULi M5288
VIA VT8251

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.

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/3512

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

Supported chipsets are sil-3124, sil-3131, sil-3132, and sil-3531.

Summary: Full TCQ/NCQ support, with full SATA control including hotplug and PM.

The 3124 is a nice, open design.

sata_sil24 has FIS-switching Port Multiplier support. It generally works quite well but there are some known bandwidth limitations which show up with the higher bandwidth requirements from PMP.

  1. The PCI-X variant (3124) on 32 bit PCI @ 33MHz can reach the PCI bus limit.
  2. I don't know how well it performs on a PCI-X bus with higher bandwidth limit. If you have some numbers, please let me know.
  3. The PCI-e variant (3132) has enough host side bandwidth to saturate the SATA bus (300MB/s) but due to limitations in the number of posted requests, it maxes out at around 120MB/s when the PCI-e Max Payload Size is set to the minimum of 128bytes which is the setting used by most consumer motherboards. Some highend boards have options to configure Max Payload Size to higher values (e.g. MSI K8N Neo4-F and Neo4 Platinum) and allow 3132 to reach higher throughput.

My generic (SYBA) PCI-X 3124 gives 184MB/s reads with an SSD that is rated at only 175MB/s. looks good for higher transfer rates on this card. --Ykill 02:38, 30 March 2010 (UTC)

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 (nForce4 and later). Looks like a PATA controller, but with full SATA control including hotplug and PM.

nForce4 (CK804/MCP04) chipsets support 64-bit DMA and NCQ using the chipset's ADMA interface. This is now not enabled by default due to some reported issues, such as with hotplug and with command timeouts on some systems. If desired, this support can be enabled using the adma=1 module option to sata_nv.

There appear to be some error handling issues in the nForce4 SATA controllers, where system lockups or machine check exceptions can occur when the driver attempts to access the controller registers as part of error handling. The precise cause of this is presently not publicly known but seems likely to be a chipset bug. This is especially noticeable with ATAPI devices such as DVD drives as read errors are much more likely than with hard drives. This has also been known to happen in Windows so it does not appear to be a driver issue.

MCP51 (some nForce 4xx) and MCP55 (nForce 5xx) chipsets support NCQ (but no 64-bit DMA) using the chipset's SWNCQ interface. This support is now enabled by default. It can be disabled using the swncq=0 module option to sata_nv. The MCP61 chipset also has SWNCQ support, but apparently it can't be used with this chipset due to hardware bugs.

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 "GEN_I" series supports TCQ, but not NCQ or PM.

The 88SX6xxx "GEN_II" series (6040, 6041, 6080, and 6081) supports TCQ, NCQ, and PM.

The 88SX7xxx "GEN_IIE" series (6042, 7042, and various system-on-chip hosts) supports TCQ, NCQ, FBS, and PM.

Note that 88SExxxx series of chips present an ahci interface.

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.

Software support

This SATA software status has been moved to its own page.

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/AMD SB7x0
  • Intel 31244 (Vitesse 7174)
  • Promise 2037x, 20319, 205xx family
  • Silicon Image 311x family, 3124 family, 3132

Partially open chipsets

Vendor has posted some hardware documentation publicly but BIOS specification and BIOS specification update documents needed to workaround errata, require NDA.

  • Intel 6300ESB, 631xESB-632xESB
  • Intel ICH5-ICH10
  • Intel PCH

Sponsors and assistance

The following companies have helped sponsor work on libata, either through Jeff Garzik's 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

Problematic chipsets

  • Although marvell controllers driven by sata_mv are well supported, various marvell AHCI controllers are suffering from incomplete and/or buggy support. Marvell doesn't seem to allocate any resource on upstream Linux support and communication between marvell and libata developers is weak. For the time being, avoiding marvell AHCI controllers is advisable.

Driver/feature matrix

See also the list of hardware features

Driver Maturity new EH NCQ Device Hotplug Suspend
acard-ahci beta no no no yes
ahci production yes yes yes yes
ata_piix production yes never no yes
pdc_adma beta no no no no
sata_dwc_460ex beta yes no ? ?
sata_fsl production yes yes yes yes
sata_inic162x production yes no yes yes
sata_mv production yes yes yes no
sata_nv production yes some yes yes
sata_promise production yes no yes no
sata_qstor beta yes no no no
sata_sil production yes never no 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 yes never never no
sata_uli production yes never no no
sata_via production yes never no yes
sata_vsc production yes never no no

Key:

yes Yes, feature is present.
some Feature supported on some device models supported by this driver.
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.
Personal tools