* Serial ATA (SATA) on Linux status report
@ 2004-05-10 22:25 Jeff Garzik
[not found] ` <D971D9DE-A4C4-11D8-9D2C-000A9585C204@able.es>
0 siblings, 1 reply; 6+ messages in thread
From: Jeff Garzik @ 2004-05-10 22:25 UTC (permalink / raw)
To: linux-ide; +Cc: linux-kernel
Serial ATA (SATA) for Linux
status report
May 10, 2004
Hardware support
================
Intel ICH5 and ICH5-R
---------------------
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.
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: "looks like ICH5" support available in ata_piix.
Preliminary driver with full AHCI support now exists, and is being
integrated into libata mainline.
Promise TX2/TX4/SX4
-------------------
Summary: Per-host queues on all controllers. Full SATA control
including hotplug and PM on all but one controller.
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: 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).
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").
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.
SiS
---
libata driver status: Beta
Vitesse
-------
libata driver status: Beta
Marvell
-------
libata driver status: in progress
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.
SMART support
-------------
Soon. Requires the capability to directly submit ATA commands from
userspace to the low-level device, which must be added with care.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Serial ATA (SATA) on Linux status report
@ 2004-05-11 10:03 Zoltan Boszormenyi
2004-05-12 0:21 ` Jeff Garzik
0 siblings, 1 reply; 6+ messages in thread
From: Zoltan Boszormenyi @ 2004-05-11 10:03 UTC (permalink / raw)
To: linux-kernel; +Cc: Jeff Garzik
> Promise TX2/TX4/SX4
> -------------------
> Summary: Per-host queues on all controllers. Full SATA control
> including hotplug and PM on all but one controller.
>
> 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.
$ /sbin/lspci
...
00:0d.0 RAID bus controller: Promise Technology, Inc.: Unknown device
3373 (rev 02)
...
This is the only Promise Tech. device shown.
Here is the more detailed info about this, look at Region 1,
and compare the VIA IDE controller below:
$ /sbin/lspci -vvv -s 00:0d.0
00:0d.0 RAID bus controller: Promise Technology, Inc.: Unknown device
3373 (rev 02)
Subsystem: Micro-Star International Co., Ltd.: Unknown device 702e
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop-
ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 96 (1000ns min, 4500ns max), cache line size 91
Interrupt: pin A routed to IRQ 17
Region 0: I/O ports at e800 [size=64]
Region 1: I/O ports at e400 [size=16]
Region 2: I/O ports at e000 [size=128]
Region 3: Memory at cffef000 (32-bit, non-prefetchable) [size=4K]
Region 4: Memory at cffa0000 (32-bit, non-prefetchable) [size=128K]
Capabilities: <available only to root>
$ /sbin/lspci -vvv -s 00:0f.1
00:0f.1 IDE interface: VIA Technologies, Inc.
VT82C586A/B/VT82C686/A/B/VT823x/A/C/VT8235 PIPC Bus Master IDE (rev 06)
(prog-if 8a [Master SecP PriP])
Subsystem: Micro-Star International Co., Ltd.: Unknown device 7020
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 32
Interrupt: pin A routed to IRQ 20
Region 4: I/O ports at fc00 [size=16]
Capabilities: <available only to root>
Could it be that Region 1 of the Promise controller contains
the PATA I/O ports? Then it could be driven with a drivers/ide
driver... Maybe common locking is needed between sata_promise.c
and a driver for it's PATA side, I don't know.
Just an idea I am willing to test if Bartolomiej and You come
up with a solution. Nudge, nudge. :-)
Best regards,
Zoltán Böszörményi
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Serial ATA (SATA) on Linux status report
2004-05-11 10:03 Zoltan Boszormenyi
@ 2004-05-12 0:21 ` Jeff Garzik
2004-05-12 5:27 ` Zoltan Boszormenyi
0 siblings, 1 reply; 6+ messages in thread
From: Jeff Garzik @ 2004-05-12 0:21 UTC (permalink / raw)
To: Zoltan Boszormenyi; +Cc: linux-kernel
Zoltan Boszormenyi wrote:
>> Promise TX2/TX4/SX4
>> -------------------
>> Summary: Per-host queues on all controllers. Full SATA control
>> including hotplug and PM on all but one controller.
>>
>> 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.
>
>
> $ /sbin/lspci
> ...
> 00:0d.0 RAID bus controller: Promise Technology, Inc.: Unknown device
> 3373 (rev 02)
> ...
>
> This is the only Promise Tech. device shown.
> Here is the more detailed info about this, look at Region 1,
> and compare the VIA IDE controller below:
>
> $ /sbin/lspci -vvv -s 00:0d.0
> 00:0d.0 RAID bus controller: Promise Technology, Inc.: Unknown device
> 3373 (rev 02)
> Subsystem: Micro-Star International Co., Ltd.: Unknown device 702e
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop-
> ParErr- Stepping- SERR- FastB2B-
> Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR-
> Latency: 96 (1000ns min, 4500ns max), cache line size 91
> Interrupt: pin A routed to IRQ 17
> Region 0: I/O ports at e800 [size=64]
> Region 1: I/O ports at e400 [size=16]
> Region 2: I/O ports at e000 [size=128]
> Region 3: Memory at cffef000 (32-bit, non-prefetchable) [size=4K]
> Region 4: Memory at cffa0000 (32-bit, non-prefetchable) [size=128K]
> Capabilities: <available only to root>
> $ /sbin/lspci -vvv -s 00:0f.1
> 00:0f.1 IDE interface: VIA Technologies, Inc.
> VT82C586A/B/VT82C686/A/B/VT823x/A/C/VT8235 PIPC Bus Master IDE (rev 06)
> (prog-if 8a [Master SecP PriP])
> Subsystem: Micro-Star International Co., Ltd.: Unknown device 7020
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
> ParErr- Stepping- SERR- FastB2B-
> Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR-
> Latency: 32
> Interrupt: pin A routed to IRQ 20
> Region 4: I/O ports at fc00 [size=16]
> Capabilities: <available only to root>
>
> Could it be that Region 1 of the Promise controller contains
> the PATA I/O ports? Then it could be driven with a drivers/ide
> driver... Maybe common locking is needed between sata_promise.c
> and a driver for it's PATA side, I don't know.
Nope, the PATA ports are stuck in the same place as the SATA ports...
Jeff
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Serial ATA (SATA) on Linux status report
2004-05-12 0:21 ` Jeff Garzik
@ 2004-05-12 5:27 ` Zoltan Boszormenyi
0 siblings, 0 replies; 6+ messages in thread
From: Zoltan Boszormenyi @ 2004-05-12 5:27 UTC (permalink / raw)
To: Jeff Garzik; +Cc: linux-kernel
Jeff Garzik írta:
> Zoltan Boszormenyi wrote:
>> Could it be that Region 1 of the Promise controller contains
>> the PATA I/O ports? Then it could be driven with a drivers/ide
>> driver... Maybe common locking is needed between sata_promise.c
>> and a driver for it's PATA side, I don't know.
>
>
> Nope, the PATA ports are stuck in the same place as the SATA ports...
>
> Jeff
Then the solution could be be that drivers/ide/ide.c generic
functions must be bridged/duplicated (short term) or moved (long term)
to libata. And maybe in 2.7 drivers/ide ll drivers are rewritten
(again) to use it from there.
Best regards,
Zoltán Böszörményi
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Serial ATA (SATA) on Linux status report
@ 2004-05-12 14:45 Fisher Alex
0 siblings, 0 replies; 6+ messages in thread
From: Fisher Alex @ 2004-05-12 14:45 UTC (permalink / raw)
To: linux-kernel
> Serial ATA (SATA) for Linux
> status report
> May 10, 2004
>
>
> Hardware support
> ================
>
> Marvell
> -------
> libata driver status: in progress
>
Hi.
Does anybody know when this driver might become available?
I'm currently trying to operate a Marvell 88SX6041 with a binary only
module and read operations from multiple disks are giving me grief :(
I've noticed that sata support will be going into 2.4.27 and the patch
looks very clean. Will backporting sata support to an older 2.4.20-pre2
kernel (http://source.mvista.com:14690//linuxppc_2_4_galileo) be as
hassle free?
Many thanks,
Alex
This email and any attachments are confidential to the intended recipient
and may also be privileged. If you are not the intended recipient please
delete it from your system and notify Thales Underwater Systems on +44 1963
370 551. You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Serial ATA (SATA) on Linux status report
[not found] ` <D971D9DE-A4C4-11D8-9D2C-000A9585C204@able.es>
@ 2004-05-13 20:47 ` Jeff Garzik
0 siblings, 0 replies; 6+ messages in thread
From: Jeff Garzik @ 2004-05-13 20:47 UTC (permalink / raw)
To: J.A.Magallon; +Cc: Linux-Kernel
J.A.Magallon wrote:
> I'm going to get an Asus PC-DL with an onboard Promise PDC20378 Serial ATA
> controller that has 2 serial ata ports and one ATA133 channel.
> The mobo also has two ATA100 ports.
>
> Is it possible to use only the PATA from the promise ? I have no
> SATA drives now, but I could use the ATA133 port.
> Is there any PATA driver that works with the promise, even if I
> don't see or disable the SATA ports ?
The only way to use the PATA ports is to use a driver from Promise.
libata doesn't support PDC203xx PATA ports at all, regardless of
configuration.
Technically speaking, libata needs to be modified to support two
different types of "host operations". Once that internal limitation is
removed, adding support for the PATA ports is easy.
Jeff
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2004-05-13 20:47 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-05-10 22:25 Serial ATA (SATA) on Linux status report Jeff Garzik
[not found] ` <D971D9DE-A4C4-11D8-9D2C-000A9585C204@able.es>
2004-05-13 20:47 ` Jeff Garzik
-- strict thread matches above, loose matches on Subject: below --
2004-05-11 10:03 Zoltan Boszormenyi
2004-05-12 0:21 ` Jeff Garzik
2004-05-12 5:27 ` Zoltan Boszormenyi
2004-05-12 14:45 Fisher Alex
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox