Bug 58587

Summary: ATAng 5.x pio underrun dispite code preventing it
Product: Base System Reporter: pecquetj <pecquetj>
Component: kernAssignee: Søren Schmidt <sos>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Unspecified   
Hardware: Any   
OS: Any   

Description pecquetj 2003-10-27 02:30:17 UTC
	
Receive random infrequent errors:
ad0: WARNING - WRITE_MUL write data underrun 8192>4096
(often the last number differs, but appears to be a power of 2)
this happens dispite the following change to ata-lowlevel.c:
            wsize=min(request->transfersize, length);
            ata_pio_write(request, wsize);
            request->donecount += wsize;
in both places where length is employed instead of request->transfersize.  Obviously this makes the test for an underrun always false in ata_pio_write, yet, I still receive the above errors.  This suggests that somehow either request->transfersize is changing during the write, or the stack containting the length is being changed somehow during the write.  Also, this obviously is going to lead to random data corruption (due to the 0's written to fill from request->transfersize to length.)

How-To-Repeat: 	
This is a random error.  During a buildworld it may occur two or three times.
Comment 1 Mark Linimon freebsd_committer freebsd_triage 2003-10-27 04:25:10 UTC
Responsible Changed
From-To: gnats-admin->freebsd-bugs

Assign to proper category.
Comment 2 Kris Kennaway freebsd_committer freebsd_triage 2003-10-30 09:10:34 UTC
Responsible Changed
From-To: freebsd-bugs->sos

Assign to ata maintainer
Comment 3 Søren Schmidt freebsd_committer freebsd_triage 2004-01-12 19:23:24 UTC
State Changed
From-To: open->closed

THis is fixed in -current.