| Summary: | ATAng 5.x pio underrun dispite code preventing it | ||
|---|---|---|---|
| Product: | Base System | Reporter: | pecquetj <pecquetj> |
| Component: | kern | Assignee: | Søren Schmidt <sos> |
| Status: | Closed FIXED | ||
| Severity: | Affects Only Me | ||
| Priority: | Normal | ||
| Version: | Unspecified | ||
| Hardware: | Any | ||
| OS: | Any | ||
Responsible Changed From-To: gnats-admin->freebsd-bugs Assign to proper category. Responsible Changed From-To: freebsd-bugs->sos Assign to ata maintainer State Changed From-To: open->closed THis is fixed in -current. |
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.