Commit 16585e76 authored by Linus Torvalds's avatar Linus Torvalds

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
parents facf0147 a75ad3c2
...@@ -776,7 +776,7 @@ static void update_ordered(ide_drive_t *drive) ...@@ -776,7 +776,7 @@ static void update_ordered(ide_drive_t *drive)
* not available so we don't need to recheck that. * not available so we don't need to recheck that.
*/ */
capacity = idedisk_capacity(drive); 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) || (drive->addressing == 0 || capacity <= (1ULL << 28) ||
ide_id_has_flush_cache_ext(id)); ide_id_has_flush_cache_ext(id));
......
...@@ -750,7 +750,7 @@ void ide_dma_verbose(ide_drive_t *drive) ...@@ -750,7 +750,7 @@ void ide_dma_verbose(ide_drive_t *drive)
goto bug_dma_off; goto bug_dma_off;
printk(", DMA"); printk(", DMA");
} else if (id->field_valid & 1) { } else if (id->field_valid & 1) {
printk(", BUG"); goto bug_dma_off;
} }
return; return;
bug_dma_off: bug_dma_off:
......
...@@ -1539,7 +1539,7 @@ static int __init ide_setup(char *s) ...@@ -1539,7 +1539,7 @@ static int __init ide_setup(char *s)
const char *hd_words[] = { const char *hd_words[] = {
"none", "noprobe", "nowerr", "cdrom", "serialize", "none", "noprobe", "nowerr", "cdrom", "serialize",
"autotune", "noautotune", "minus8", "swapdata", "bswap", "autotune", "noautotune", "minus8", "swapdata", "bswap",
"minus11", "remap", "remap63", "scsi", NULL }; "noflush", "remap", "remap63", "scsi", NULL };
unit = s[2] - 'a'; unit = s[2] - 'a';
hw = unit / MAX_DRIVES; hw = unit / MAX_DRIVES;
unit = unit % MAX_DRIVES; unit = unit % MAX_DRIVES;
...@@ -1578,6 +1578,9 @@ static int __init ide_setup(char *s) ...@@ -1578,6 +1578,9 @@ static int __init ide_setup(char *s)
case -10: /* "bswap" */ case -10: /* "bswap" */
drive->bswap = 1; drive->bswap = 1;
goto done; goto done;
case -11: /* noflush */
drive->noflush = 1;
goto done;
case -12: /* "remap" */ case -12: /* "remap" */
drive->remap_0_to_1 = 1; drive->remap_0_to_1 = 1;
goto done; goto done;
......
...@@ -498,9 +498,14 @@ static int config_chipset_for_dma (ide_drive_t *drive) ...@@ -498,9 +498,14 @@ static int config_chipset_for_dma (ide_drive_t *drive)
{ {
u8 speed = ide_dma_speed(drive, it821x_ratemask(drive)); u8 speed = ide_dma_speed(drive, it821x_ratemask(drive));
config_it821x_chipset_for_pio(drive, !speed); if (speed) {
config_it821x_chipset_for_pio(drive, 0);
it821x_tune_chipset(drive, speed); it821x_tune_chipset(drive, speed);
return ide_dma_enable(drive); return ide_dma_enable(drive);
}
return 0;
} }
/** /**
......
...@@ -110,11 +110,8 @@ static int ioctl_internal_command(struct scsi_device *sdev, char *cmd, ...@@ -110,11 +110,8 @@ static int ioctl_internal_command(struct scsi_device *sdev, char *cmd,
sshdr.asc, sshdr.ascq); sshdr.asc, sshdr.ascq);
break; break;
case NOT_READY: /* This happens if there is no disc in drive */ case NOT_READY: /* This happens if there is no disc in drive */
if (sdev->removable && (cmd[0] != TEST_UNIT_READY)) { if (sdev->removable)
printk(KERN_INFO "Device not ready. Make sure"
" there is a disc in the drive.\n");
break; break;
}
case UNIT_ATTENTION: case UNIT_ATTENTION:
if (sdev->removable) { if (sdev->removable) {
sdev->changed = 1; sdev->changed = 1;
......
...@@ -571,6 +571,7 @@ typedef struct ide_drive_s { ...@@ -571,6 +571,7 @@ typedef struct ide_drive_s {
u8 waiting_for_dma; /* dma currently in progress */ u8 waiting_for_dma; /* dma currently in progress */
u8 unmask; /* okay to unmask other irqs */ u8 unmask; /* okay to unmask other irqs */
u8 bswap; /* byte swap data */ u8 bswap; /* byte swap data */
u8 noflush; /* don't attempt flushes */
u8 dsc_overlap; /* DSC overlap */ u8 dsc_overlap; /* DSC overlap */
u8 nice1; /* give potential excess bandwidth */ u8 nice1; /* give potential excess bandwidth */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment