Alan Cox wrote:
This fixes most common oops #5 on Arjan's kerneloops.org site Not all controllers have ctl/altstatus. In particular many ISAPnP controllers omit them. While libata should handle this it generally only got the ctl port (the write side) correct. Functions - ata_sff_maybe_altstatus - this uses the status if altstatus is not available. In the longer term I believe each use of it is in fact removable but don't want to perturb anything during the -rc releases - ata_sff_pause - don't use altstatus I/O for fencing if we don't have one - ata_sff_sync - add a fencing call so we can distinguish fencing from real altstatus usage. All non ctl/altstatus controllers are PIO so do not need a fence Code wise we then use maybe_altstatus in the IRQ path (where we should only check status and the current code is actually I think buggy), and for DMA completion (no non ctl/altstatus controller does DMA but need to finish verifying the calling cases). This has been tested with ctl/altstatus faked to be unavailable on controllers I have and works. You get some spew about failed identify but that is another issue that can be fixed later and it does all work. Also the spew only occurs on controllers that currently just go wrong. Signed-off-by: Alan Cox <alan@xxxxxxxxxx>
Acked-by: Tejun Heo <htejun@xxxxxxxxx> -- tejun -- 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