From: Jeff Garzik <jgarzik@pobox.com>
To: linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org,
linux-scsi@vger.kernel.org
Subject: Serial ATA (SATA) for Linux status report
Date: Wed, 3 Dec 2003 15:44:46 -0500 [thread overview]
Message-ID: <20031203204445.GA26987@gtf.org> (raw)
Editor's preface: This is clearly a first draft, only covering the
basics. In order for this document to be effective, I request that
users and developers send me (or post) their SATA driver questions and
issues. I will do my best to address them here.
Serial ATA (SATA) for Linux
status report
Dec 3, 2003
Hardware support
================
Intel ICH5
----------
Summary: No TCQ. Looks like a PATA controller, but with a few added,
non-standard SATA port controls.
libata driver status: Production, but see issue #2, #3.
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.
Intel ICH6 ("AHCI")
-------------------
Summary: Per-device queues, full SATA control including hotplug
and PM.
libata driver status: In development.
Promise
-------
Summary: Per-host queues on all controllers. Full SATA control
including hotplug and PM on all but one controller.
libata driver status: Beta.
Silicon Image 3112
------------------
Summary: No TCQ. Looks like a PATA controller, but with full SATA
control including hotplug and PM.
libata driver status: Alpha.
drivers/ide driver status: Production, but see issue #4.
Issue #4: Need to have the most recent fixes posted to lkml, for stable
operation and full performance (where possible).
Broadcom/ServerWorks/Apple
--------------------------
Summary: Huge per-device queues, full SATA control including hotplug
and PM.
libata driver status: Beta.
VIA
---
Summary: No TCQ. Looks like a PATA controller, but with full SATA
control including hotplug and PM.
libata driver status: Beta.
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 is support by drivers/ide _only_. libata will not support this.
#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.
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.
next reply other threads:[~2003-12-03 20:44 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-12-03 20:44 Jeff Garzik [this message]
2003-12-03 23:27 ` Serial ATA (SATA) for Linux status report Andre Tomt
2003-12-03 23:36 ` Jeff Garzik
2003-12-03 23:49 ` Othmar Pasteka
2003-12-03 23:51 ` Jeff Garzik
2003-12-04 0:59 ` Samuel Flory
2003-12-04 1:02 ` Andre Tomt
2003-12-04 13:38 ` Justin Cormack
2003-12-04 14:54 ` Jeff Garzik
2003-12-04 8:17 ` Arnaud Launay
2003-12-04 15:01 ` Jeff Garzik
[not found] ` <200312051842.26599.marchand@kde.org>
[not found] ` <3FD0C4B0.8020106@pobox.com>
[not found] ` <200312051907.13727.marchand@kde.org>
2003-12-09 18:22 ` [PATCH] Silicon image 3114 SATA link (really basic support) Aron Rubin
2003-12-09 18:54 ` Mickael Marchand
2003-12-09 20:14 ` Bartlomiej Zolnierkiewicz
2003-12-12 0:07 ` Mickael Marchand
2003-12-09 19:59 ` Serial ATA (SATA) for Linux status report J. Ryan Earl
2004-01-14 22:18 ` Greg Stark
2004-01-14 22:56 ` Erik Andersen
2004-01-14 23:31 ` James Courtier-Dutton
2004-01-15 0:41 ` Jeff Garzik
2004-01-15 2:38 ` Erik Andersen
2004-01-18 12:34 ` Martin Schlemmer
2004-01-14 23:12 ` Erik Steffl
2004-01-18 13:32 ` Witold Krecicki
2004-01-18 18:00 ` Jeff Garzik
2004-01-18 20:33 ` Craig Bradney
-- strict thread matches above, loose matches on Subject: below --
2004-08-24 19:49 Jeff Garzik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20031203204445.GA26987@gtf.org \
--to=jgarzik@pobox.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).