aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ide/Kconfig23
-rw-r--r--drivers/ide/ide-probe.c6
2 files changed, 2 insertions, 27 deletions
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig
index 052879a6f853..b50b5dac95b0 100644
--- a/drivers/ide/Kconfig
+++ b/drivers/ide/Kconfig
@@ -131,29 +131,6 @@ config BLK_DEV_IDEDISK
131 131
132 If unsure, say Y. 132 If unsure, say Y.
133 133
134config IDEDISK_MULTI_MODE
135 bool "Use multiple sector mode for Programmed Input/Output by default"
136 help
137 This setting is irrelevant for most IDE disks, with direct memory
138 access, to which multiple sector mode does not apply. Multiple sector
139 mode is a feature of most modern IDE hard drives, permitting the
140 transfer of multiple sectors per Programmed Input/Output interrupt,
141 rather than the usual one sector per interrupt. When this feature is
142 enabled, it can reduce operating system overhead for disk Programmed
143 Input/Output. On some systems, it also can increase the data
144 throughput of Programmed Input/Output. Some drives, however, seemed
145 to run slower with multiple sector mode enabled. Some drives claimed
146 to support multiple sector mode, but lost data at some settings.
147 Under rare circumstances, such failures could result in massive
148 filesystem corruption.
149
150 If you get the following error, try to say Y here:
151
152 hda: set_multmode: status=0x51 { DriveReady SeekComplete Error }
153 hda: set_multmode: error=0x04 { DriveStatusError }
154
155 If in doubt, say N.
156
157config BLK_DEV_IDECS 134config BLK_DEV_IDECS
158 tristate "PCMCIA IDE support" 135 tristate "PCMCIA IDE support"
159 depends on PCMCIA 136 depends on PCMCIA
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 8cfce50c71e4..9926e12783bb 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -89,16 +89,14 @@ static void ide_disk_init_mult_count(ide_drive_t *drive)
89 u8 max_multsect = id[ATA_ID_MAX_MULTSECT] & 0xff; 89 u8 max_multsect = id[ATA_ID_MAX_MULTSECT] & 0xff;
90 90
91 if (max_multsect) { 91 if (max_multsect) {
92#ifdef CONFIG_IDEDISK_MULTI_MODE
93 if ((max_multsect / 2) > 1) 92 if ((max_multsect / 2) > 1)
94 id[ATA_ID_MULTSECT] = max_multsect | 0x100; 93 id[ATA_ID_MULTSECT] = max_multsect | 0x100;
95 else 94 else
96 id[ATA_ID_MULTSECT] &= ~0x1ff; 95 id[ATA_ID_MULTSECT] &= ~0x1ff;
97 96
98 drive->mult_req = id[ATA_ID_MULTSECT] & 0xff; 97 drive->mult_req = id[ATA_ID_MULTSECT] & 0xff;
99#endif 98
100 if ((id[ATA_ID_MULTSECT] & 0x100) && 99 if (drive->mult_req)
101 (id[ATA_ID_MULTSECT] & 0xff))
102 drive->special.b.set_multmode = 1; 100 drive->special.b.set_multmode = 1;
103 } 101 }
104} 102}