On Sun, Jan 23, 2011 at 04:27:15PM -0500, Brad wrote: > > Ok with a bit more digging I think I found out why the workaround > is not functioning correctly. I found in rev 1.90 of wdc.c jsg@ > added the infrastructure to allow for the reset callback but > then part of it was reverted by miod@ in rev 1.93 due to an issue > with a NULL pointer dereference on some systems and no one bothered > to go back and fix it. I brought over the fix for this issue from > NetBSD. This needs testing on any IDE/SATA controllers.
FWIW, I tried this patch together with the workaround and a printf added to acer_do_reset on my Blade 150. I'm seeing that - acer_do_reset is beeing called - there are still read errors just after the resets: Jan 23 23:16:12 gilda /bsd: acer_do_reset Jan 23 23:16:13 gilda /bsd: wd0a: DMA error reading fsbn 14097936 of 14097936-14097967 (wd0 bn 14097936; cn 3455 tn 6 sn 6), retrying Jan 23 23:16:13 gilda /bsd: wd0: soft error (corrected) Jan 24 01:30:30 gilda /bsd: acer_do_reset Jan 24 01:30:31 gilda /bsd: wd0a: DMA error reading fsbn 10239004 of 10239004-10239035 (wd0 bn 10239004; cn 2509 tn 8 sn 244), retrying Jan 24 01:30:31 gilda /bsd: wd0: soft error (corrected) Jan 24 01:30:35 gilda /bsd: acer_do_reset Jan 24 01:30:37 gilda /bsd: wd0a: DMA error reading fsbn 10366820 of 10366820-10366851 (wd0 bn 10366820; cn 2540 tn 14 sn 50), retrying Jan 24 01:30:37 gilda /bsd: wd0: soft error (corrected) As far as I'm concerned, I'd stick to UDMA2 for this stupid controller rather than wasting more time on this. -- Matthieu Herrb