Re: [PATCH] Re: [git patches] libata updates - (improve post-resetdevice ready test) regression

From: Tejun Heo
Date: Sat May 10 2008 - 02:34:32 EST


Jeff Garzik wrote:
Tejun Heo wrote:
This means that we need to make custom readiness tests for controllers using 0x77 or 0x7f. Eeeek... Both groups of controllers are behaving in incorrect way. Controllers shouldn't use 0x77 or 0x7f for either busy or ready states - it's invalid for both, yet, some use the 77/7f for busy while others use them for ready state. Great. :-(

I think that's assuming too much? PATA and SATA are quite different here... in PATA the status is mostly the value from the device directly off the wires. in SATA, it may be from the device or from the controller. And "smart" or firmware-based controllers may generate their own status, too, apart from the device's status.
>
So that results in varied status returns, and not all the time is a definite "ready" or "not ready" obvious.

I think it's pretty safe to say that these weird ready values are from TF emulation on controller side. The ready/not ready distinction is probably too simplistic but those values aren't supposed to appear during post-reset readiness test.

Sorry about the big regression. Heh... It's amazing how all the controllers I tested didn't show the problem and I did test a good number of combinations.

I still think it would be better to have a unified readiness test function. The problem is subtle (device misdetection on hotplug of certain drives) and went unnoticed quite some time for JMB ahcis && test coverage over those things can't be good. I'll try to think about something better.

Thanks.

--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/