Mikael Pettersson wrote:
Jeff Garzik writes:
> Mikael Pettersson wrote:
> > Jeff Garzik writes:
> > > hrm.... at this point we have deviated massively from the standard
> > > Promise method of hard reset...
> > >
> > > * set PMP port
> > > * make hotplug irqs
> > > * reset port# in PDC_GLOBAL_CTL
> > > * pdc_reset_port()
> > > * reset FPDMA -- probably a good idea even if not doing FPDMA
> > > * clear SATA Error register (0xffffffff)
> > > * clear errors-reported-from-link-layer register
> > > * wait standard length of time for SATA connection
> > > * clear hotplug bits
> > > * set PMP port
> > >
> > > The PDC_GLOBAL_CTL bitbang is the most notable missing element in the
> >
> > I assume you meant the PCI control register (offset 0x48).
> >
> > > hard reset path, though we also miss clearing an apparently-important
> > > error register as well. FPDMA reset would be a good idea I think, even
> > > if not in use, mainly for paranoia's sake and because that's what
> > > Promise's driver does.
> >
> > Here's a patch on top of 2.6.28-rc6 that should make sata_promise's
> > reset sequences a closer match to what Promise's drivers do.
> >
> > - soft reset (pdc_reset_port):
> > * wait for ATA engine to not be in packet command mode (2nd gen only)
> > * write reset bit in PDC_CTLSTAT before the first read in the loop
> > * for 2nd gen SATA follow up with FPDMA reset and clearing error status registers
> > - hard reset (pdc_sata_hardreset):
> > * wait for ATA engine to not be in packet command mode (2nd gen only)
> > * reset ATA engine via the PCI control register
> > * Tejun's change to use non-waiting hardreset + follow-up SRST
> >
> > I'm not changing the hotplug mask bits since they are taken care
> > of by sata_promise's ->freeze() and ->thaw() operations. And I'm
> > not writing the PMP port # because that's always zero (for now).
> >
> > Tested here on a SATAII150 TX2plus w/ two sata disks, some hdparm -y
> > + smartctl tests which used to cause timeouts on one of those disks,
> > and some parallel dd:s to stress things a little. No issues found.
> > I'll test it on a 1st gen 20378 next week.
> >
> > Testers welcome.
>
> Any updates?
Not really. I've kept the patch up to date for newer kernels, but
there's been no testing by others that I know of. Do you want to
include it in a testing branch?
I can at least make sure it is in #ALL and #NEXT, two meta-branches in
libata-dev.git that are forwarded to akpm's -mm tree and linux-next,
respectively, for wider public testing.
We can give it more-public testing and hopefully get a bit more feedback.
And you can always post to linux-kernel and linux-ide requesting
testers... that's something even non-programmers can do. Something
like "Request for SATA Promise testing" would surely get at least a few
responses...
Jeff
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html