Merge branch 'for-linus' of git://brick.kernel.dk/data/git/linux-2.6-block
* 'for-linus' of git://brick.kernel.dk/data/git/linux-2.6-block: [PATCH] scsi: kill overeager "not-ready" messages [PATCH] it821x: fix ide dma setup bug [PATCH] ide: if the id fields looks screwy, disable DMA [PATCH] ide: option to disable cache flushes for buggy drives
This commit is contained in:
commit
16585e76a7
|
@ -776,7 +776,7 @@ static void update_ordered(ide_drive_t *drive)
|
|||
* not available so we don't need to recheck that.
|
||||
*/
|
||||
capacity = idedisk_capacity(drive);
|
||||
barrier = ide_id_has_flush_cache(id) &&
|
||||
barrier = ide_id_has_flush_cache(id) && !drive->noflush &&
|
||||
(drive->addressing == 0 || capacity <= (1ULL << 28) ||
|
||||
ide_id_has_flush_cache_ext(id));
|
||||
|
||||
|
|
|
@ -750,7 +750,7 @@ void ide_dma_verbose(ide_drive_t *drive)
|
|||
goto bug_dma_off;
|
||||
printk(", DMA");
|
||||
} else if (id->field_valid & 1) {
|
||||
printk(", BUG");
|
||||
goto bug_dma_off;
|
||||
}
|
||||
return;
|
||||
bug_dma_off:
|
||||
|
|
|
@ -1539,7 +1539,7 @@ static int __init ide_setup(char *s)
|
|||
const char *hd_words[] = {
|
||||
"none", "noprobe", "nowerr", "cdrom", "serialize",
|
||||
"autotune", "noautotune", "minus8", "swapdata", "bswap",
|
||||
"minus11", "remap", "remap63", "scsi", NULL };
|
||||
"noflush", "remap", "remap63", "scsi", NULL };
|
||||
unit = s[2] - 'a';
|
||||
hw = unit / MAX_DRIVES;
|
||||
unit = unit % MAX_DRIVES;
|
||||
|
@ -1578,6 +1578,9 @@ static int __init ide_setup(char *s)
|
|||
case -10: /* "bswap" */
|
||||
drive->bswap = 1;
|
||||
goto done;
|
||||
case -11: /* noflush */
|
||||
drive->noflush = 1;
|
||||
goto done;
|
||||
case -12: /* "remap" */
|
||||
drive->remap_0_to_1 = 1;
|
||||
goto done;
|
||||
|
|
|
@ -498,9 +498,14 @@ static int config_chipset_for_dma (ide_drive_t *drive)
|
|||
{
|
||||
u8 speed = ide_dma_speed(drive, it821x_ratemask(drive));
|
||||
|
||||
config_it821x_chipset_for_pio(drive, !speed);
|
||||
it821x_tune_chipset(drive, speed);
|
||||
return ide_dma_enable(drive);
|
||||
if (speed) {
|
||||
config_it821x_chipset_for_pio(drive, 0);
|
||||
it821x_tune_chipset(drive, speed);
|
||||
|
||||
return ide_dma_enable(drive);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -110,11 +110,8 @@ static int ioctl_internal_command(struct scsi_device *sdev, char *cmd,
|
|||
sshdr.asc, sshdr.ascq);
|
||||
break;
|
||||
case NOT_READY: /* This happens if there is no disc in drive */
|
||||
if (sdev->removable && (cmd[0] != TEST_UNIT_READY)) {
|
||||
printk(KERN_INFO "Device not ready. Make sure"
|
||||
" there is a disc in the drive.\n");
|
||||
if (sdev->removable)
|
||||
break;
|
||||
}
|
||||
case UNIT_ATTENTION:
|
||||
if (sdev->removable) {
|
||||
sdev->changed = 1;
|
||||
|
|
|
@ -571,6 +571,7 @@ typedef struct ide_drive_s {
|
|||
u8 waiting_for_dma; /* dma currently in progress */
|
||||
u8 unmask; /* okay to unmask other irqs */
|
||||
u8 bswap; /* byte swap data */
|
||||
u8 noflush; /* don't attempt flushes */
|
||||
u8 dsc_overlap; /* DSC overlap */
|
||||
u8 nice1; /* give potential excess bandwidth */
|
||||
|
||||
|
|
Loading…
Reference in New Issue