Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 02 Nov 2007 13:57:57 +0300
From:      Alexander Sabourenkov <screwdriver@lxnt.info>
To:        =?UTF-8?B?U8O4cmVuIFNjaG1pZHQ=?= <sos@deepcore.dk>
Cc:        freebsd-hackers@FreeBSD.ORG, sos@FreeBSD.ORG, freebsd-current@FreeBSD.ORG, "Matthew D. Fuller" <fullermd@over-yonder.net>, Thierry Herbelot <thierry@herbelot.com>
Subject:   Re: Patch RFC:  Promise SATA300 TX4 hardware bug workaround.
Message-ID:  <472B02B5.9020502@lxnt.info>
In-Reply-To: <472AFEC3.7090001@deepcore.dk>
References:  <472A548B.50406@lxnt.info> <472AFB75.1070207@deepcore.dk> <472AFEC3.7090001@deepcore.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
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.

-- 

./lxnt



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?472B02B5.9020502>