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
1 changed files with 19 additions and 0 deletions
|
@ -244,6 +244,24 @@ static int pdc2026x_port_start(struct ata_port *ap)
|
||||||
return ata_sff_port_start(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 = {
|
static struct scsi_host_template pdc202xx_sht = {
|
||||||
.module = THIS_MODULE,
|
.module = THIS_MODULE,
|
||||||
.name = DRV_NAME,
|
.name = DRV_NAME,
|
||||||
|
@ -311,6 +329,7 @@ static struct ata_port_operations pdc2026x_port_ops = {
|
||||||
.post_internal_cmd = ata_bmdma_post_internal_cmd,
|
.post_internal_cmd = ata_bmdma_post_internal_cmd,
|
||||||
.cable_detect = pdc2026x_cable_detect,
|
.cable_detect = pdc2026x_cable_detect,
|
||||||
|
|
||||||
|
.check_atapi_dma= pdc2026x_check_atapi_dma,
|
||||||
.bmdma_setup = ata_bmdma_setup,
|
.bmdma_setup = ata_bmdma_setup,
|
||||||
.bmdma_start = pdc2026x_bmdma_start,
|
.bmdma_start = pdc2026x_bmdma_start,
|
||||||
.bmdma_stop = pdc2026x_bmdma_stop,
|
.bmdma_stop = pdc2026x_bmdma_stop,
|
||||||
|
|
Loading…
Reference in a new issue