pata_pdc202xx_old: Fix crashes with ATAPI
The PDC202xx older devices do not support ATAPI DMA via the usual interfaces. What documentation I have isn't sufficient to support DMA and it isn't clear if the Windows drivers do this or it is possible at all. (Neither do the drivers/ide old drivers) So turn it ATAPI DMA off, these are disk optimised controllers. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
5db501d7e3
commit
aa8f2371c5
|
@ -244,6 +244,24 @@ static int pdc2026x_port_start(struct ata_port *ap)
|
|||
return ata_sff_port_start(ap);
|
||||
}
|
||||
|
||||
/**
|
||||
* pdc2026x_check_atapi_dma - Check whether ATAPI DMA can be supported for this command
|
||||
* @qc: Metadata associated with taskfile to check
|
||||
*
|
||||
* Just say no - not supported on older Promise.
|
||||
*
|
||||
* LOCKING:
|
||||
* None (inherited from caller).
|
||||
*
|
||||
* RETURNS: 0 when ATAPI DMA can be used
|
||||
* 1 otherwise
|
||||
*/
|
||||
|
||||
static int pdc2026x_check_atapi_dma(struct ata_queued_cmd *qc)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static struct scsi_host_template pdc202xx_sht = {
|
||||
.module = THIS_MODULE,
|
||||
.name = DRV_NAME,
|
||||
|
@ -311,6 +329,7 @@ static struct ata_port_operations pdc2026x_port_ops = {
|
|||
.post_internal_cmd = ata_bmdma_post_internal_cmd,
|
||||
.cable_detect = pdc2026x_cable_detect,
|
||||
|
||||
.check_atapi_dma= pdc2026x_check_atapi_dma,
|
||||
.bmdma_setup = ata_bmdma_setup,
|
||||
.bmdma_start = pdc2026x_bmdma_start,
|
||||
.bmdma_stop = pdc2026x_bmdma_stop,
|
||||
|
|
Loading…
Reference in New Issue