Jeff Garzik noted that he has updated the Serial ATA Linux software status report, "things in SATA-land have been moving along recently". The status report notes that, "the 'ATA host state machine', the core of the entire driver, is considered production-stable." The libATA driver uses the kernel's SCSI layer, and causes each SATA port to appear as a new SCSI bus. A programmer's guide to libata [pdf] further explains, "libATA is a library used inside the Linux kernel to support ATA host controllers and devices. libATA provides an ATA driver API, class transports for ATA and ATAPI devices, and SCSI<->ATA translations for ATA devices according to the T10 SAT specification [pdf]." The latest patches for the 2.4 and 2.6 kernels can be found here.
Regarding PATA, or Parallel ATA (IDE), Jeff also posted a ten item todo list. The software status webpage notes, "libata will be gaining full support for PATA, including older chipsets and devices with buggy/problematic designs. PATA will be fully supported, as will SATA. Currently, libata PATA drivers only exist for Intel PIIX and a few Promise chipsets."
From: Jeff Garzik [email blocked] Subject: SATA status report updated Date: Fri, 12 Aug 2005 01:09:12 -0400 Things in SATA-land have been moving along recently, so I updated the software status report: http://linux.yyz.us/sata/software-status.html Although I have not updated it in several weeks, folks may wish to refer to the hardware status report as well: http://linux.yyz.us/sata/sata-status.html Thanks to all the hard-working SATA contributors! Jeff
From: Jeff Garzik [email blocked] To: linux-ide [email blocked] Subject: libata PATA todo list Date: Thu, 11 Aug 2005 16:54:40 -0400 Since there's been some recent interest in the subject, I thought I would post the PATA todo list for libata. Some of these items are from my memory, and some are from a list Alan was kind enough to create. The items verbatim from Alan are prefixed "Alan: ". 1) Locked device/host speed To support devices such as those in the ide/pci/generic.c list, we need to ensure that libata -never- attempts to change the device speed (ata_dev_set_xfermode should be avoided). 2) Simplex DMA PCI IDE specification has a 'simplex' DMA bit, which should be tested. Simplex means that only one command can be outstanding, for BOTH port0 and port1, at any given time. Possibly some hosts also need Simplex DMA, but may not assert the standard PCI IDE Simplex DMA capability bit. I don't know. 3) Speed change on error Downshift device to a slower UDMA speed, and eventually from DMA->PIO, as errors persist. There is no 'specified way' to do this, this is purely hueristic. 4) Alan: Command filter Alan -- explanation? I know one line item here, at least: Promise controllers snoop SET FEATURES - XFER MODE command. We must stop command processing on ALL ports when this command is issued, to avoid corruption. 5) Alan: MWDMA broken still? is piix doc correct? 6) Alan: some PATA LBA48 devices cannot do > 256 sectors. 7) Alan: Some ALi requires LBA48 be done via PIO. LBA28 DMA is OK. 8) ATAPI device CDB interrupt Some older ATAPI devices require the OS driver to wait for an interrupt, after CDB is written, before command processing proceeds. 9) ATAPI devices may delay setting DRQ=1 for up to 3ms. Make sure we honor the delay noted in IDENTIFY PACKET DEVICE word 0. 10) ATAPI DMA alignment (discussed elsewhere) Needed even for PATA, AFAICT.