Patch RFC: Promise SATA300 TX4 hardware bug workaround.

Alexander Sabourenkov screwdriver at
Fri Nov 2 03:57:53 PDT 2007

Søren Schmidt wrote:
> Søren Schmidt wrote:
>> Good catch!
>> However from my quick glimpse at the Promise sources the limit seems 
>> to be 32 Dwords ie 32*4 = 128bytes.

Please see driver named 4_sataii150-300_linux2.6-src_x86-64_v1.01.0.23

>> I'll investigate further and ask Promise for the gory details, stay 
>> tuned...
>> I dont think the PRD count limitation is a real problem, I've newer 
>> seen that long a list and IIRC we newer do more than 64K transfers in 
>> one go (yet).

In (current) practice, yes, but check should be there even if only to 
document the limit.

>> Anyhow I need to get checks in for that not just here...
>> Give me a few days and I'll get this figured out for 7-rel...
> Oh, and I forgot, do you have a surefire way to reproduce the problem so 
> the fix can be tested ?

dd if=/dev/ad8 of=/dev/null bs=1048576 count=1000 works every time.

I have tested it on my home machine:

without the patch first timeouts and errors appear about 10 seconds into 
the read.

with the patch a read of entire disk (320G) completed without errors.

Previous tests of analogous linux driver fix shown no errors and no data 
corruption on two write-whole-drive, read-whole-drive cycles.

> I've newer been able to trigger this problem myself so far.

Seems like the bug is highly configuration-dependent, or 
pci-chiset-depended, or just present in some production runs and not other.



More information about the freebsd-current mailing list