diff options
author | Randy Dunlap <randy.dunlap@oracle.com> | 2008-03-07 15:53:50 -0500 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-03-07 15:53:50 -0500 |
commit | 331a5ad2a2ab6e93d1848b060c84fd2821c72e29 (patch) | |
tree | 78b8d2ce28f53602485b72d472bf23aafdf3a872 /Documentation/ide | |
parent | 0c6025d44448bd688dfd351a09bc620aafa4d1ff (diff) |
ide: move ide.txt to Documentation/ide/
Cleanup some of Documentation directory:
Move Documentation/ide.txt to the ide/ sub-directory.
Fix trailing whitespace while there.
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'Documentation/ide')
-rw-r--r-- | Documentation/ide/ide.txt | 335 |
1 files changed, 335 insertions, 0 deletions
diff --git a/Documentation/ide/ide.txt b/Documentation/ide/ide.txt new file mode 100644 index 000000000000..e3b3425328b6 --- /dev/null +++ b/Documentation/ide/ide.txt | |||
@@ -0,0 +1,335 @@ | |||
1 | |||
2 | Information regarding the Enhanced IDE drive in Linux 2.6 | ||
3 | |||
4 | ============================================================================== | ||
5 | |||
6 | |||
7 | The hdparm utility can be used to control various IDE features on a | ||
8 | running system. It is packaged separately. Please Look for it on popular | ||
9 | linux FTP sites. | ||
10 | |||
11 | |||
12 | |||
13 | *** IMPORTANT NOTICES: BUGGY IDE CHIPSETS CAN CORRUPT DATA!! | ||
14 | *** ================= | ||
15 | *** PCI versions of the CMD640 and RZ1000 interfaces are now detected | ||
16 | *** automatically at startup when PCI BIOS support is configured. | ||
17 | *** | ||
18 | *** Linux disables the "prefetch" ("readahead") mode of the RZ1000 | ||
19 | *** to prevent data corruption possible due to hardware design flaws. | ||
20 | *** | ||
21 | *** For the CMD640, linux disables "IRQ unmasking" (hdparm -u1) on any | ||
22 | *** drive for which the "prefetch" mode of the CMD640 is turned on. | ||
23 | *** If "prefetch" is disabled (hdparm -p8), then "IRQ unmasking" can be | ||
24 | *** used again. | ||
25 | *** | ||
26 | *** For the CMD640, linux disables "32bit I/O" (hdparm -c1) on any drive | ||
27 | *** for which the "prefetch" mode of the CMD640 is turned off. | ||
28 | *** If "prefetch" is enabled (hdparm -p9), then "32bit I/O" can be | ||
29 | *** used again. | ||
30 | *** | ||
31 | *** The CMD640 is also used on some Vesa Local Bus (VLB) cards, and is *NOT* | ||
32 | *** automatically detected by Linux. For safe, reliable operation with such | ||
33 | *** interfaces, one *MUST* use the "cmd640.probe_vlb" kernel option. | ||
34 | *** | ||
35 | *** Use of the "serialize" option is no longer necessary. | ||
36 | |||
37 | ================================================================================ | ||
38 | Common pitfalls: | ||
39 | |||
40 | - 40-conductor IDE cables are capable of transferring data in DMA modes up to | ||
41 | udma2, but no faster. | ||
42 | |||
43 | - If possible devices should be attached to separate channels if they are | ||
44 | available. Typically the disk on the first and CD-ROM on the second. | ||
45 | |||
46 | - If you mix devices on the same cable, please consider using similar devices | ||
47 | in respect of the data transfer mode they support. | ||
48 | |||
49 | - Even better try to stick to the same vendor and device type on the same | ||
50 | cable. | ||
51 | |||
52 | ================================================================================ | ||
53 | |||
54 | This is the multiple IDE interface driver, as evolved from hd.c. | ||
55 | |||
56 | It supports up to 9 IDE interfaces per default, on one or more IRQs (usually | ||
57 | 14 & 15). There can be up to two drives per interface, as per the ATA-6 spec. | ||
58 | |||
59 | Primary: ide0, port 0x1f0; major=3; hda is minor=0; hdb is minor=64 | ||
60 | Secondary: ide1, port 0x170; major=22; hdc is minor=0; hdd is minor=64 | ||
61 | Tertiary: ide2, port 0x1e8; major=33; hde is minor=0; hdf is minor=64 | ||
62 | Quaternary: ide3, port 0x168; major=34; hdg is minor=0; hdh is minor=64 | ||
63 | fifth.. ide4, usually PCI, probed | ||
64 | sixth.. ide5, usually PCI, probed | ||
65 | |||
66 | To access devices on interfaces > ide0, device entries please make sure that | ||
67 | device files for them are present in /dev. If not, please create such | ||
68 | entries, by using /dev/MAKEDEV. | ||
69 | |||
70 | This driver automatically probes for most IDE interfaces (including all PCI | ||
71 | ones), for the drives/geometries attached to those interfaces, and for the IRQ | ||
72 | lines being used by the interfaces (normally 14, 15 for ide0/ide1). | ||
73 | |||
74 | For special cases, interfaces may be specified using kernel "command line" | ||
75 | options. For example, | ||
76 | |||
77 | ide3=0x168,0x36e,10 /* ioports 0x168-0x16f,0x36e, irq 10 */ | ||
78 | |||
79 | Normally the irq number need not be specified, as ide.c will probe for it: | ||
80 | |||
81 | ide3=0x168,0x36e /* ioports 0x168-0x16f,0x36e */ | ||
82 | |||
83 | The standard port, and irq values are these: | ||
84 | |||
85 | ide0=0x1f0,0x3f6,14 | ||
86 | ide1=0x170,0x376,15 | ||
87 | ide2=0x1e8,0x3ee,11 | ||
88 | ide3=0x168,0x36e,10 | ||
89 | |||
90 | Note that the first parameter reserves 8 contiguous ioports, whereas the | ||
91 | second value denotes a single ioport. If in doubt, do a 'cat /proc/ioports'. | ||
92 | |||
93 | In all probability the device uses these ports and IRQs if it is attached | ||
94 | to the appropriate ide channel. Pass the parameter for the correct ide | ||
95 | channel to the kernel, as explained above. | ||
96 | |||
97 | Any number of interfaces may share a single IRQ if necessary, at a slight | ||
98 | performance penalty, whether on separate cards or a single VLB card. | ||
99 | The IDE driver automatically detects and handles this. However, this may | ||
100 | or may not be harmful to your hardware.. two or more cards driving the same IRQ | ||
101 | can potentially burn each other's bus driver, though in practice this | ||
102 | seldom occurs. Be careful, and if in doubt, don't do it! | ||
103 | |||
104 | Drives are normally found by auto-probing and/or examining the CMOS/BIOS data. | ||
105 | For really weird situations, the apparent (fdisk) geometry can also be specified | ||
106 | on the kernel "command line" using LILO. The format of such lines is: | ||
107 | |||
108 | hdx=cyls,heads,sects,wpcom,irq | ||
109 | or hdx=cdrom | ||
110 | |||
111 | where hdx can be any of hda through hdh, Three values are required | ||
112 | (cyls,heads,sects). For example: | ||
113 | |||
114 | hdc=1050,32,64 hdd=cdrom | ||
115 | |||
116 | either {hda,hdb} or {hdc,hdd}. The results of successful auto-probing may | ||
117 | override the physical geometry/irq specified, though the "original" geometry | ||
118 | may be retained as the "logical" geometry for partitioning purposes (fdisk). | ||
119 | |||
120 | If the auto-probing during boot time confuses a drive (ie. the drive works | ||
121 | with hd.c but not with ide.c), then an command line option may be specified | ||
122 | for each drive for which you'd like the drive to skip the hardware | ||
123 | probe/identification sequence. For example: | ||
124 | |||
125 | hdb=noprobe | ||
126 | or | ||
127 | hdc=768,16,32 | ||
128 | hdc=noprobe | ||
129 | |||
130 | Note that when only one IDE device is attached to an interface, it should be | ||
131 | jumpered as "single" or "master", *not* "slave". Many folks have had | ||
132 | "trouble" with cdroms because of this requirement, so the driver now probes | ||
133 | for both units, though success is more likely when the drive is jumpered | ||
134 | correctly. | ||
135 | |||
136 | Courtesy of Scott Snyder and others, the driver supports ATAPI cdrom drives | ||
137 | such as the NEC-260 and the new MITSUMI triple/quad speed drives. | ||
138 | Such drives will be identified at boot time, just like a hard disk. | ||
139 | |||
140 | If for some reason your cdrom drive is *not* found at boot time, you can force | ||
141 | the probe to look harder by supplying a kernel command line parameter | ||
142 | via LILO, such as: | ||
143 | |||
144 | hdc=cdrom /* hdc = "master" on second interface */ | ||
145 | or | ||
146 | hdd=cdrom /* hdd = "slave" on second interface */ | ||
147 | |||
148 | For example, a GW2000 system might have a hard drive on the primary | ||
149 | interface (/dev/hda) and an IDE cdrom drive on the secondary interface | ||
150 | (/dev/hdc). To mount a CD in the cdrom drive, one would use something like: | ||
151 | |||
152 | ln -sf /dev/hdc /dev/cdrom | ||
153 | mkdir /mnt/cdrom | ||
154 | mount /dev/cdrom /mnt/cdrom -t iso9660 -o ro | ||
155 | |||
156 | If, after doing all of the above, mount doesn't work and you see | ||
157 | errors from the driver (with dmesg) complaining about `status=0xff', | ||
158 | this means that the hardware is not responding to the driver's attempts | ||
159 | to read it. One of the following is probably the problem: | ||
160 | |||
161 | - Your hardware is broken. | ||
162 | |||
163 | - You are using the wrong address for the device, or you have the | ||
164 | drive jumpered wrong. Review the configuration instructions above. | ||
165 | |||
166 | - Your IDE controller requires some nonstandard initialization sequence | ||
167 | before it will work properly. If this is the case, there will often | ||
168 | be a separate MS-DOS driver just for the controller. IDE interfaces | ||
169 | on sound cards usually fall into this category. Such configurations | ||
170 | can often be made to work by first booting MS-DOS, loading the | ||
171 | appropriate drivers, and then warm-booting linux (without powering | ||
172 | off). This can be automated using loadlin in the MS-DOS autoexec. | ||
173 | |||
174 | If you always get timeout errors, interrupts from the drive are probably | ||
175 | not making it to the host. Check how you have the hardware jumpered | ||
176 | and make sure it matches what the driver expects (see the configuration | ||
177 | instructions above). If you have a PCI system, also check the BIOS | ||
178 | setup; I've had one report of a system which was shipped with IRQ 15 | ||
179 | disabled by the BIOS. | ||
180 | |||
181 | The kernel is able to execute binaries directly off of the cdrom, | ||
182 | provided it is mounted with the default block size of 1024 (as above). | ||
183 | |||
184 | Please pass on any feedback on any of this stuff to the maintainer, | ||
185 | whose address can be found in linux/MAINTAINERS. | ||
186 | |||
187 | Note that if BOTH hd.c and ide.c are configured into the kernel, | ||
188 | hd.c will normally be allowed to control the primary IDE interface. | ||
189 | This is useful for older hardware that may be incompatible with ide.c, | ||
190 | and still allows newer hardware to run on the 2nd/3rd/4th IDE ports | ||
191 | under control of ide.c. To have ide.c also "take over" the primary | ||
192 | IDE port in this situation, use the "command line" parameter: ide0=0x1f0 | ||
193 | |||
194 | The IDE driver is modularized. The high level disk/CD-ROM/tape/floppy | ||
195 | drivers can always be compiled as loadable modules, the chipset drivers | ||
196 | can only be compiled into the kernel, and the core code (ide.c) can be | ||
197 | compiled as a loadable module provided no chipset support is needed. | ||
198 | |||
199 | When using ide.c as a module in combination with kmod, add: | ||
200 | |||
201 | alias block-major-3 ide-probe | ||
202 | |||
203 | to /etc/modprobe.conf. | ||
204 | |||
205 | When ide.c is used as a module, you can pass command line parameters to the | ||
206 | driver using the "options=" keyword to insmod, while replacing any ',' with | ||
207 | ';'. For example: | ||
208 | |||
209 | insmod ide.o options="ide0=serialize ide1=serialize ide2=0x1e8;0x3ee;11" | ||
210 | |||
211 | |||
212 | ================================================================================ | ||
213 | |||
214 | Summary of ide driver parameters for kernel command line | ||
215 | -------------------------------------------------------- | ||
216 | |||
217 | "hdx=" is recognized for all "x" from "a" to "h", such as "hdc". | ||
218 | |||
219 | "idex=" is recognized for all "x" from "0" to "3", such as "ide1". | ||
220 | |||
221 | "hdx=noprobe" : drive may be present, but do not probe for it | ||
222 | |||
223 | "hdx=none" : drive is NOT present, ignore cmos and do not probe | ||
224 | |||
225 | "hdx=nowerr" : ignore the WRERR_STAT bit on this drive | ||
226 | |||
227 | "hdx=cdrom" : drive is present, and is a cdrom drive | ||
228 | |||
229 | "hdx=cyl,head,sect" : disk drive is present, with specified geometry | ||
230 | |||
231 | "hdx=remap" : remap access of sector 0 to sector 1 (for EZDrive) | ||
232 | |||
233 | "hdx=remap63" : remap the drive: add 63 to all sector numbers | ||
234 | (for DM OnTrack) | ||
235 | |||
236 | "idex=noautotune" : driver will NOT attempt to tune interface speed | ||
237 | |||
238 | "hdx=autotune" : driver will attempt to tune interface speed | ||
239 | to the fastest PIO mode supported, | ||
240 | if possible for this drive only. | ||
241 | Not fully supported by all chipset types, | ||
242 | and quite likely to cause trouble with | ||
243 | older/odd IDE drives. | ||
244 | |||
245 | "hdx=nodma" : disallow DMA | ||
246 | |||
247 | "hdx=scsi" : the return of the ide-scsi flag, this is useful for | ||
248 | allowing ide-floppy, ide-tape, and ide-cdrom|writers | ||
249 | to use ide-scsi emulation on a device specific option. | ||
250 | |||
251 | "idebus=xx" : inform IDE driver of VESA/PCI bus speed in MHz, | ||
252 | where "xx" is between 20 and 66 inclusive, | ||
253 | used when tuning chipset PIO modes. | ||
254 | For PCI bus, 25 is correct for a P75 system, | ||
255 | 30 is correct for P90,P120,P180 systems, | ||
256 | and 33 is used for P100,P133,P166 systems. | ||
257 | If in doubt, use idebus=33 for PCI. | ||
258 | As for VLB, it is safest to not specify it. | ||
259 | Bigger values are safer than smaller ones. | ||
260 | |||
261 | "idex=base" : probe for an interface at the addr specified, | ||
262 | where "base" is usually 0x1f0 or 0x170 | ||
263 | and "ctl" is assumed to be "base"+0x206 | ||
264 | |||
265 | "idex=base,ctl" : specify both base and ctl | ||
266 | |||
267 | "idex=base,ctl,irq" : specify base, ctl, and irq number | ||
268 | |||
269 | "idex=serialize" : do not overlap operations on idex. Please note | ||
270 | that you will have to specify this option for | ||
271 | both the respective primary and secondary channel | ||
272 | to take effect. | ||
273 | |||
274 | "idex=four" : four drives on idex and ide(x^1) share same ports | ||
275 | |||
276 | "idex=reset" : reset interface after probe | ||
277 | |||
278 | "idex=ata66" : informs the interface that it has an 80c cable | ||
279 | for chipsets that are ATA-66 capable, but the | ||
280 | ability to bit test for detection is currently | ||
281 | unknown. | ||
282 | |||
283 | "ide=reverse" : formerly called to pci sub-system, but now local. | ||
284 | |||
285 | The following are valid ONLY on ide0, which usually corresponds | ||
286 | to the first ATA interface found on the particular host, and the defaults for | ||
287 | the base,ctl ports must not be altered. | ||
288 | |||
289 | "ide=doubler" : probe/support IDE doublers on Amiga | ||
290 | |||
291 | There may be more options than shown -- use the source, Luke! | ||
292 | |||
293 | Everything else is rejected with a "BAD OPTION" message. | ||
294 | |||
295 | For legacy IDE VLB host drivers (ali14xx/dtc2278/ht6560b/qd65xx/umc8672) | ||
296 | you need to explicitly enable probing by using "probe" kernel parameter, | ||
297 | i.e. to enable probing for ALI M14xx chipsets (ali14xx host driver) use: | ||
298 | |||
299 | * "ali14xx.probe" boot option when ali14xx driver is built-in the kernel | ||
300 | |||
301 | * "probe" module parameter when ali14xx driver is compiled as module | ||
302 | ("modprobe ali14xx probe") | ||
303 | |||
304 | Also for legacy CMD640 host driver (cmd640) you need to use "probe_vlb" | ||
305 | kernel paremeter to enable probing for VLB version of the chipset (PCI ones | ||
306 | are detected automatically). | ||
307 | |||
308 | ================================================================================ | ||
309 | |||
310 | Some Terminology | ||
311 | ---------------- | ||
312 | IDE = Integrated Drive Electronics, meaning that each drive has a built-in | ||
313 | controller, which is why an "IDE interface card" is not a "controller card". | ||
314 | |||
315 | ATA = AT (the old IBM 286 computer) Attachment Interface, a draft American | ||
316 | National Standard for connecting hard drives to PCs. This is the official | ||
317 | name for "IDE". | ||
318 | |||
319 | The latest standards define some enhancements, known as the ATA-6 spec, | ||
320 | which grew out of vendor-specific "Enhanced IDE" (EIDE) implementations. | ||
321 | |||
322 | ATAPI = ATA Packet Interface, a new protocol for controlling the drives, | ||
323 | similar to SCSI protocols, created at the same time as the ATA2 standard. | ||
324 | ATAPI is currently used for controlling CDROM, TAPE and FLOPPY (ZIP or | ||
325 | LS120/240) devices, removable R/W cartridges, and for high capacity hard disk | ||
326 | drives. | ||
327 | |||
328 | mlord@pobox.com | ||
329 | -- | ||
330 | |||
331 | Wed Apr 17 22:52:44 CEST 2002 edited by Marcin Dalecki, the current | ||
332 | maintainer. | ||
333 | |||
334 | Wed Aug 20 22:31:29 CEST 2003 updated ide boot options to current ide.c | ||
335 | comments at 2.6.0-test4 time. Maciej Soltysiak <solt@dns.toxicfilms.tv> | ||