libata PATA todo list

From: Jeff Garzik
Date: Thu Aug 11 2005 - 15:55:07 EST



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.



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/