View | Details | Raw Unified | Return to bug 278533
Collapse All | Expand All

(-)a/drivers/ata/libata-core.c (+10 lines)
Lines 3782-3787 static const struct ata_blacklist_entry ata_device_blacklist [] = { Link Here
3782
	/* Weird ATAPI devices */
3782
	/* Weird ATAPI devices */
3783
	{ "TORiSAN DVD-ROM DRD-N216", NULL,	ATA_HORKAGE_MAX_SEC_128 |
3783
	{ "TORiSAN DVD-ROM DRD-N216", NULL,	ATA_HORKAGE_MAX_SEC_128 |
3784
						ATA_HORKAGE_DMA_RW_ONLY },
3784
						ATA_HORKAGE_DMA_RW_ONLY },
3785
	{ "QSI CD-RW/DVD-ROM SBW-241", NULL,	ATA_HORKAGE_PIO_INQUIRY },
3785
3786
3786
	/* Devices we expect to fail diagnostics */
3787
	/* Devices we expect to fail diagnostics */
3787
3788
Lines 4146-4151 int ata_check_atapi_dma(struct ata_queued_cmd *qc) Link Here
4146
		}
4147
		}
4147
	}
4148
	}
4148
4149
4150
	/* some drives don't like DMA for INQUIRY */
4151
	if (unlikely(qc->dev->horkage & ATA_HORKAGE_PIO_INQUIRY)) {
4152
		struct scsi_cmnd *cmd = qc->scsicmd;
4153
		u8 *scsicmd = cmd->cmnd;
4154
4155
		if (scsicmd[0] == INQUIRY)
4156
			return 1;
4157
	}
4158
4149
	if (ap->ops->check_atapi_dma)
4159
	if (ap->ops->check_atapi_dma)
4150
		rc = ap->ops->check_atapi_dma(qc);
4160
		rc = ap->ops->check_atapi_dma(qc);
4151
4161
(-)a/include/linux/libata.h (+1 lines)
Lines 299-304 enum { Link Here
299
	ATA_HORKAGE_NONCQ	= (1 << 2),	/* Don't use NCQ */
299
	ATA_HORKAGE_NONCQ	= (1 << 2),	/* Don't use NCQ */
300
	ATA_HORKAGE_MAX_SEC_128	= (1 << 3),	/* Limit max sects to 128 */
300
	ATA_HORKAGE_MAX_SEC_128	= (1 << 3),	/* Limit max sects to 128 */
301
	ATA_HORKAGE_DMA_RW_ONLY	= (1 << 4),	/* ATAPI DMA for RW only */
301
	ATA_HORKAGE_DMA_RW_ONLY	= (1 << 4),	/* ATAPI DMA for RW only */
302
	ATA_HORKAGE_PIO_INQUIRY	= (1 << 4),	/* use PIO for INQUIRY */
302
};
303
};
303
304
304
enum hsm_task_states {
305
enum hsm_task_states {

Return to bug 278533