linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Linux Serial ATA (SATA) status report
@ 2004-07-08 23:23 Jeff Garzik
  0 siblings, 0 replies; 3+ messages in thread
From: Jeff Garzik @ 2004-07-08 23:23 UTC (permalink / raw)
  To: linux-ide; +Cc: Linux Kernel

[-- Attachment #1: Type: text/plain, Size: 10 bytes --]

attached.

[-- Attachment #2: sata-status.txt --]
[-- Type: text/plain, Size: 8927 bytes --]


Serial ATA (SATA) for Linux
status report
July 8, 2004



This status report applies to the latest SATA driver release, found in
(not yet release) kernels 2.4.28 and 2.6.7.



Recent updates
==============
Recent libata changes have focused on updating the libata core to be
more flexible, and support newer SATA-II host controllers.  These
changes aren't very visible, but they lay the groundwork for a more
ATA hardware interface that supports queueing.

Various bits of the core have been tweaked in association with the
following buzzwords:  ATAPI, DMADIR, legacy TCQ, NCQ, hotplug, port
multiplier, jelly beans.  Ok, that last one isn't part of any official
specification.  But the others should be fun.


Hardware support
================


Intel ICH5, ICH5-R, ICH6
------------------------
Summary: No TCQ. Looks like a PATA controller, but with a few added,
non-standard SATA port controls. Hardware does not support hotplug.
"Coldplug" support is potentially feasible.

libata driver status: Production, but see issue #2, #3.
Recently work on issue #2 has improved the state of that issue.

drivers/ide driver status: Production, but see issue #1, #2.


Issue #1: Depending on BIOS settings, IDE driver may lock up computer
when probing drives.

Issue #2: Excessive interrupts are seen in some configurations.

Issue #3: "Enhanced mode" or "SATA-only mode" may need to be set in BIOS.



AHCI (Intel ICH6-R/ICH6-M currently)
------------------------------------
Summary: Per-device queues, full SATA control including hotplug
and PM.

libata driver status: "looks like ICH5" support available in ata_piix.
Preliminary driver with full AHCI support now exists, and is being
integrated into libata mainline.

Note1:  AHCI specification is completely open.

Note2:  To ease integration, AHCI on ICH6 will be deployed inside the
ata_piix driver.

Note3:  SiS has AHCI on its roadmap.  Hopefully others will follow.


Promise TX2/TX4/SX4
-------------------
Summary: Per-host queues on all controllers. Full SATA control
including hotplug and PM on all but one controller (SX4).

libata TX2/TX4 driver status: Production, but see issue #5.

libata SX4 driver status: Production, but see issue #6.


Issue #5: Some boards appear to have PATA as well as SATA ports. PATA
is not currently supported, and no plans have yet been made to rectify
this. Ideally drivers/ide would drive PATA, but if they are the same
PCI device, that would not be feasible.

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.


Silicon Image 3112/3114
-----------------------
Summary: No TCQ. Looks like a PATA controller, but with full SATA
control including hotplug and PM.

libata driver status: Beta.

drivers/ide driver status: Beta?


Silicon Image 3124
------------------
Soon, hopefully.  Silicon Image has made documentation and sample
hardware available to me (jgarzik) for development.  Some code exists
internally.


Broadcom/ServerWorks/Apple
--------------------------
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.

libata driver status: Beta, but no QDMA support yet.


VIA
---
Summary: No TCQ. Looks like a PATA controller, but with full SATA
control including hotplug and PM.

libata driver status: Beta.


NVIDIA
------
Summary: No TCQ. Looks like a PATA controller, but with full SATA
control including hotplug and PM.

libata driver status: Beta.


SiS 180
-------
Summary: No TCQ. Looks like a PATA controller, but with full SATA
control including hotplug and PM.

libata driver status: Beta


Vitesse 7174 / Intel 31244
--------------------------
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.

libata driver status: Beta


Marvell 88SX50[48]x
-------------------
Summary:  Similar to ServerWorks "frodo":  per-device queues, supports
legacy TCQ but not NCQ (I think??), full SATA control including hotplug
and PM.

libata driver status: in progress


HighPoint (HPT)
---------------
I've had no contact with the company.  Someone poke them, and get
them to get me a card and docs :)

libata driver status:  no driver planned at this point.


ADMA (including Pacific Digital Talon SATA)
-------------------------------------------
Summary:  No control over SATA phy at all (no hotplug/PM).  Has
per-device hardware queues, and supports legacy TCQ.

Docs are public (yay!)

libata driver status:  none, but hopefully soon


3ware SATA RAID
---------------
Not suited for libata architecture.  Separate SCSI driver exists.



Software support
================


Basic Serial ATA support
------------------------
The "ATA host state machine", the core of the entire driver, is
considered production-stable.

The error handling is _very_ simple, but at this stage that is an
advantage. Error handling code anywhere is inevitably both complex and
sorely under-tested. libata error handling is intentionally simple.
Positives: Easy to review and verify correctness. Never data
corruption. Negatives: if an error occurs, libata will simply send
the error back the block layer. There are limited retries by the block
layer, depending on the type of error, but there is never a bus reset.

Or in other words: "it's better to stop talking to the disk than
compound existing problems with further problems."

As Serial ATA matures, and host- and device-side errata become apparent,
the error handling will be slowly refined. I am planning to work with a
few (kind!) disk vendors, to obtain special drives/firmwares that allow
me to inject faults, and otherwise exercise error handling code.



Queueing support
----------------
Even though some SATA host controllers on the market already support
command queueing (a.k.a. "TCQ"), libata does not yet support it.

However, libata was designed from the ground-up to support queueing, so
I need only change a few lines of code, and write two functions, to
enable this behavior.

Queueing will be enabled in libata soon, but to do so requires a long
stretch of testing on a large variety of controllers and drives. This
is very time-intensive, and is the largest part of this task.


Tangent: Host-based queueing and Native Command Queueing

Queueing is the process of sending multiple commands to a single device,
without waiting for prior commands to finish. This increases
performance and reduces latency. There are three types of queueing in
the ATA world:

1) "legacy TCQ" -- some PATA devices support this. Just ignore it,
it's going away.

2) "host-based TCQ" -- the host controller supports a queue of drive
commands, whether or not the drive supports it.

3) "Native Command Queueing" -- both host and drive cooperate in the
queueing and execution of drive commands. This should provide the
highest performance and lowest latency of all three options.


#1 will be supported only where hardware handles all the details.
#2 will soon be supported by libata.
#3 will be supported by libata when hardware is available from drive
manufacturers.


Hotplug support
---------------
All SATA is hotplug.

libata does not support hotplug... yet.

The following SATA controllers will never support hotplug:
Intel ICH5, Intel ICH5-R, Intel ICH6 (non-AHCI), Pacific Digital Talon,
Promise SATA SX4.

These controllers do not export enough information about the SATA phy to
make it possible to support hotplug.  In some cases, such as Intel
ICH5/ICH6, it is possible to support "coldplug" operation:  the user
informs the OS driver he wishes to disconnect his SATA device, rather
than simply disconnecting it.


Power Management support
------------------------
Over and above the power management specified in the ATA/ATAPI
specification, one can aggressively control the power consumption of
SATA hosts, the SATA bus, and the SATA device.

Note:  as discussed on some mailing lists, the aggressive power
management can be too aggressive, and park the heads too often
(resulting in shortened disk drive life).  Careful attention must be
paid to balance.


SMART support
-------------
Soon. Requires the capability to directly submit ATA commands from
userspace to the low-level device, which must be added with care. The
smartmontools developers have committed to adding a new device type '-d
sata' to utilize this passthrough, once it is ready.



^ permalink raw reply	[flat|nested] 3+ messages in thread
* Re: Linux Serial ATA (SATA) status report
@ 2004-07-22 16:35 Pat LaVarre
  0 siblings, 0 replies; 3+ messages in thread
From: Pat LaVarre @ 2004-07-22 16:35 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-ide

Jeff G:

Two points:

1)

 > SATA driver release ... 2.4.28 and 2.6.7.
 > changes aren't very visible, ...
 > ... tweaked  ... buzzwords:  ATAPI, DMADIR, ... jelly beans.

Please tell me if I can now help.  Myself I only know to try:

a) SATAPI UDMA DVD without CONFIG_SCSI_SATA

b) SATAPI UDMA DVD with CONFIG_SCSI_SATA, with compile-time options and 
other patches applied near include/linux/libata.h

c) Add Di <= Hi PIO auto sense, now that we/ you have overcome:

--- http://kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.8-rc1
...
[libata] create, and use, ->irq_clear hook
...
On Intel ICH5/6, the BMDMA 'interrupt' status bit will be set even on 
non-DMA commands, ... This change clears pending interrupts once upon 
initialization, and then each ... ata_irq_on...
...
---

2)

 > Serial ATA (SATA) for Linux
 > status report
 > July 8, 2004

Please correct me if I err in thinking,

Still today in kernel.org Linux .config we choose one of two SATAPI 
UDMA.  The post:

 > > > Subject: Re: SATA ATAPI UDMA - first in Linux
 > > > From: Jeff Garzik ...
 > > > Date: 2004-05-14 20:35:53
 > > > http://marc.theaimsgroup.com/?l=linux-ide&m=108456699805023&

tells us of an lk 2.6 SATAPI UDMA available near make defconfig when 
CONFIG_SCSI_SATA is not set.  But the focus of this "Subject: Re: Linux 
Serial ATA (SATA) status report" thread is the Linux SATA/ SATAPI we 
get when CONFIG_SCSI_SATA=y.

Pat LaVarre


^ permalink raw reply	[flat|nested] 3+ messages in thread
* Re: Linux Serial ATA (SATA) status report
@ 2004-08-17 16:30 Pat LaVarre
  0 siblings, 0 replies; 3+ messages in thread
From: Pat LaVarre @ 2004-08-17 16:30 UTC (permalink / raw)
  To: Andreas Jellinghaus; +Cc: linux-ide, linux-kernel

// Andreas J:

 > > Date: 2004-07-09 8:17:21
 > > IIRC Plextor is shipping dvd burners with SATA
 > > interface.
 > ...
 >  
http://www.plextor.be/products/dvd_recorders/px-712sa.asp?choice=PX 
-712SA
 > ...
 > > Any idea whether or not these will work?

Will Linux find and name a SATAPI device?

Every 2.4 Linux I've tried connects with the SATAPI device I have.   
Knoppix Linux 2.4, my own kernel, etc.  Seemingly the 2.4 cdrom and  
ide-cd driver modules connect to SATAPI, same as PATAPI.  But 2.6  
introduces CONFIG_BLK_IDE_SATA.  drivers/ide/Kconfig explains why.

In my newbie ignorance, me, I think that explanation means to say that,  
by make defconfig, as yet you don't get SATAPI in 2.6, but you can  
still ask for it to work as well in 2.6 as in 2.4, except if you do ask  
for SATAPI you might lose SATAPI anyhow by losing support for the  
unusual SATA host you have.  However, I'm confident other people here  
in linux-ide understand this far far better than I.

Pat LaVarre
http://linux-pel.blog-city.com/read/742498.htm

P.S. What effects the ide-scsi and ide-floppy driver modules might have  
with SATAPI, I do not know.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-08-17 16:30 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-07-08 23:23 Linux Serial ATA (SATA) status report Jeff Garzik
  -- strict thread matches above, loose matches on Subject: below --
2004-07-22 16:35 Pat LaVarre
2004-08-17 16:30 Pat LaVarre

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).