[SATA] libata-dev queue updated, status report

From: Jeff Garzik
Date: Sun Feb 06 2005 - 10:11:37 EST


libata-dev-2.6, the development queue for the Linux SATA driver libata, has been updated. See attachment for BK info, patch URL, and full list of changes.

Here is a quick summary of the goodies lurking in libata-dev, and also the Reason Why It's Not Upstream (RWINU):


1) ATA passthru. Arbitrary ATA command execution. Provides SMART and hdparm support, among other things.

RWINU: SCSI T10 committee will not standardize the opcodes for this until March 2005. The "set transfer mode" command must be special-cased, since it requires additional per-controller work to reconfigure DMA timings and such.


2) Turn on ATAPI.

RWINU: Needs some more testing, and need to resolve discrepancy between ATA/ATAPI-4 and ATA/ATAPI-7 for ATAPI DMA host state machine.


3) Detect PATA devices attached to SATA controllers (via a bridge), and adjust settings to limit udma mode and maximum number of sectors, due to problems with certain bridge/controller combinations and issues reported in the field.

RWINU: Not certain that the hueristic reliably detects a PATA device attached to a SATA controller.


4) Cleanup: Remove 'execute device diagnostic' reset support, making code smaller.

RWINU: Need to make sure no out-of-tree drivers are using it.


5) hdparm 'get identity' ioctl support.

RWINU: Bart had some objections that warranted attention (but I forget what those objections were, alas).


Additional hardware support
---------------------------

1) New driver: Promise 2027x (PATA)

RWINU: Need to plan a good strategy for users who wish to use this driver, versus the PATA driver in drivers/ide. Also applies to other PATA drivers people will eventually port to libata.


2) New driver: ADMA. Supports several Pacific Digital controllers, among others.

RWINU: Never tested on real hardware; needs testing.


3) New driver: VIA VT6421.

RWINU: Never tested on real hardware; needs testing.


4) Support for PATA port on Promise SATA controllers.

RWINU: I'm not sure whether the API change necessary for this is the correct one. Need to ponder. Comments welcome.


5) Support for Promise PDC20619 (a.k.a. TX4000) PATA controller.

RWINU: Needs additional testing. Need to rename 'sata_promise' to 'ata_promise', then create a method of aliasing the old module name, to avoid breaking existing setups. 2.6.x has the MODULE_ALIAS() method, 2.4.x needs a Makefile rule to build an additional module.


6) core libata PATA support.

RWINU: PATA is working, but needs a few missing pieces filled in. CHS support is one (Albert Lee just started on this, posting the first patches to linux-ide last night), DMA blacklist is another (done; upstream soon), and a few other details. Also the issues mentioned in "#1 Promise PDC2027x" (above).

BK users:

bk pull bk://gkernel.bkbits.net/libata-dev-2.6

Patch:
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.11-rc3-bk2-libata-dev1.patch.bz2

This will update the following files:

drivers/scsi/Kconfig | 18 -
drivers/scsi/Makefile | 2
drivers/scsi/ahci.c | 2
drivers/scsi/ata_adma.c | 636 ++++++++++++++++++++++++++++++++++++
drivers/scsi/libata-core.c | 361 +++++++++++---------
drivers/scsi/libata-scsi.c | 444 ++++++++++++++++++++++++-
drivers/scsi/libata.h | 6
drivers/scsi/pata_pdc2027x.c | 742 +++++++++++++++++++++++++++++++++++++++++++
drivers/scsi/sata_nv.c | 45 +-
drivers/scsi/sata_promise.c | 98 +++++
drivers/scsi/sata_sil.c | 1
drivers/scsi/sata_via.c | 202 ++++++++---
include/linux/ata.h | 3
include/linux/libata.h | 6
include/scsi/scsi.h | 3
15 files changed, 2305 insertions(+), 264 deletions(-)

through these ChangeSets:

<andyw:pobox.com>:
o [libata scsi] support 12-byte passthru CDB
o [libata scsi] passthru CDB check condition processing
o T10/04-262 ATA pass thru - patch

<erikbenada:yahoo.ca>:
o [libata sata_promise] support PATA ports on SATA controllers

<jpaana:s2.org>:
o [libata sata_promise] add PCI ID for new SATAII TX2 card

<mkrikis:yahoo.com>:
o libata: fix ata_piix on ICH6R in RAID mode

<syntax:pa.net>:
o [libata sata_sil] add another Seagate drive to blacklist

Adam J. Richter:
o ata_pci_remove_one used freed memory

Albert Lee:
o [libata] SCSI-to-ATA translation fixes
o pdc2027x timing register bug fix
o [libata pdc2027x] fix incorrect pio and mwdma masks
o [libata pdc2027x] remove quirks and ROM enable
o [libata] add driver for Promise PATA 2027x

Andrew Chew:
o sata_nv: enable generic class support for future NVIDIA SATA

Brad Campbell:
o libata basic detection and errata for PATA->SATA bridges

Brett Russ:
o [libata scsi] verify cmd bug fixes/support

Jeff Garzik:
o [libata ahci] Add support for ULi M5288
o [libata] turn on ATAPI support
o [libata sata_promise] merge Tobias Lorenz' pdc20619 patch, part 2
o [libata] small cleanups
o [libata] remove unused execute-device-diagnostic reset method
o [libata sata_promise] support Promise SATAII TX2/TX4 cards
o [libata] Remove CDROM drive from PATA DMA blacklist
o [libata] add DMA blacklist
o [libata] add new driver ata_adma
o [libata sata_via] add support for VT6421 SATA
o [libata sata_via] minor cleanups
o [libata pdc2027x] update for upstream struct device conversion
o [libata sata_promise] fix merge bugs
o [libata] fix build breakage
o [libata] fix SATA->PATA bridge detect compile breakage
o [libata] fix printk warning

John W. Linville:
o libata: SMART support via ATA pass-thru

Pete Zaitcev:
o [libata] fix probe object allocation bugs

Tobias Lorenz:
o [libata sata_promise] pdc20619 (PATA) support
o libata-scsi: get-identity ioctl support