DragonFly kernel List (threaded) for 2004-11
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
Re: serial ATA status?
: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 2.6.8.1 came out with the following mod:
:
:linux-2.6.8.1-sta/drivers/scsi/sata_sil.c
:...
: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
:difference.
:
: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
:http://galis.org/george/ cell:646-331-2027 mailto:george@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):
http://www.ussg.iu.edu/hypermail/linux/kernel/0403.1/1907.html
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.
-Matt
Matthew Dillon
<dillon@xxxxxxxxxxxxx>
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]