Jeff Garzik wrote:
> [...]
> Does the PIO code deviate from the ATA/ATAPI-[4567] host state machine 
> somehow?

That I can't say (the ata/atapi docs make me want to put my
head under the wheel of a bus), but: on SMP machines the
implementation would turn into busy-waiting for every sector;
I have my suspicions about the ata_busy_wait() calls in
ata_pio_block(); I also looked at implementing ATA_PROT_PIO_MULT
with interrupt support, but then  ran out of time on the
project - what's there doesn't (didn't) use interrupts.

> Or is it just that newer SATA-emulating-PATA chips have trouble with it?

Could be, I for sure saw arbitration/starvation issues that
resulted in geological-grade delays getting status at the end
of some PIO transfers. The result was timeout errors under
heavy load. I believe that the SMP-machine-becomes-busy-wait-
monster bug probably caused the majority of these errors (I
could generate them after a few minutes testing), because I had
4 (fast-ish) cores conspiring to beat the crap out of 1 register
on a PCI card.
-- 
[EMAIL PROTECTED]

Andy Warner             Voice: (612) 801-8549   Fax: (208) 575-5634
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to