Messages in this thread | | | Date | Tue, 04 Nov 2008 01:10:24 -0500 | From | Jeff Garzik <> | Subject | Re: [PATCH 2.6.28-rc2] sata_promise: add ATA engine reset to reset ops |
| |
Mikael Pettersson wrote: > Promise ATA engines need to be reset when errors occur. > That's currently done for errors detected by sata_promise itself, > but it's not done for errors like timeouts detected outside of > the low-level driver. > > The effect of this omission is that a timeout tends to result > in a sequence of failed COMRESETs after which libata EH gives > up and disables the port. At that point the port's ATA engine > hangs and even reloading the driver will not resume it. > > To fix this, make sata_promise override ->hardreset on SATA > ports with code which calls pdc_reset_port() on the port in > question before calling libata's hardreset. PATA ports don't > use ->hardreset, so for those we override ->softreset instead. > > Signed-off-by: Mikael Pettersson <mikpe@it.uu.se> > --- > Updated to add pdc_reset_port() to ->softreset not ->hardreset > on PATA ports. Patch title adjusted accordingly. > > This should also go into the 2.6.27 and 2.6.26 stable branches. > In older branches libata EH is different and I'm seeing different > behaviour on timeouts, so I don't think this should go in as-is > in 2.6.25 and older. > > drivers/ata/sata_promise.c | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+)
applied
| |