FUA and 311x (was Re: LibPATA code issues / 2.6.15.4)

From: Jeff Garzik
Date: Wed Mar 01 2006 - 20:53:55 EST


Eric D. Mudama wrote:
I didn't know offhand so we plugged in a bus analzyer and took a look
here in the lab... We didn't have a 3114 lying around, but issuing the
Write DMA FUA (0x3D) opcode on a 3112 resulted in a D0h soft hang. I
think they're related (4-port vs 2-port).

Looking at the public docs posted at http://gkernel.sourceforge.net/specs/sii/ ... FUA is not in the list of supported opcodes (Table 10-1).

The 311x does have a facility that allows the driver to specify the command protocol associated with an unknown-to-the-chip opcode. Someone sufficiently interested could investigate using the VS Unlock and VS Set Command Protocol commands to patch in support (section 10.4.*).

For libata, I think an ATA_FLAG_NO_FUA would be appropriate for situations like this... assume FUA is supported in the controller, and set a flag where it is not. Most chips will support FUA, either by design or by sheer luck. The ones that do not support FUA are the controllers that snoop the ATA command opcode, and internally choose the protocol based on that opcode. For such hardware, unknown opcodes will inevitably cause problems.

Jeff


-
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/