serial ATA status?

Matthew Dillon dillon at
Fri Nov 5 16:36:15 PST 2004

:I've looked at the scsi/sata_sil.c driver but I learned more C than I
:understood what was actually happening.
:My main concern is 15 byte write quirk that seems to only affect certain
:combinations of drives and the 3112 (Addonics) controller.
:My drive in particular, was subject to serious corruption until about
:linux-2.6.7-bk8 when it was fixed. However, my drive got added to the
:black list which means ~20Mb/sec vs ~50Mb/sec. It doesn't belong in the
:blacklist, when I remove it, I get the performance with no corruption
:issues. I've tested a lot of gigs on that 160G drive and made it my
:primary disk about the time came out with the following mod:
:struct sil_drivelist {
:        const char * product;
:        unsigned int quirk;
:} sil_blacklist [] = {
:        { "ST320012AS",         SIL_QUIRK_MOD15WRITE },
:        { "ST330013AS",         SIL_QUIRK_MOD15WRITE },
:I've not tried sata on 2.6.9, but I don't expect any
:Of course I'm only saying all this because it is a
:nasty bug that I hope doesn't show up in DragonFly.
:// George
:George Georgalis, systems architect, administrator Linux BSD IXOYE
: cell:646-331-2027 mailto:george at xxxxxxxxx

    The SIL_QUIRK_MOD15WRITE flag forces linux to limit I/O requests to
    no more then 15 sectors (around ~7K) per request), but it is a 
    brute-force solution to the real problem which appears to be related
    to DMA programming of the device by the driver.

    e.g. I came upon this reference (this is an old patch but the 
    description is relevant):

    So the question is whether our code uses the correct registers.
    The answer is: I don't know.  Our code is so different that it
    would take some sleuthing to figure out where the equivalent
    code is and what register offsets are actually used.

					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>

More information about the Kernel mailing list