Contents of /alx-src/tags/kernel26-2.6.12-alx-r9/Documentation/ide.txt
Parent Directory | Revision Log
Revision 630 -
(show annotations)
(download)
Wed Mar 4 11:03:09 2009 UTC (15 years, 3 months ago) by niro
File MIME type: text/plain
File size: 15767 byte(s)
Wed Mar 4 11:03:09 2009 UTC (15 years, 3 months ago) by niro
File MIME type: text/plain
File size: 15767 byte(s)
Tag kernel26-2.6.12-alx-r9
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 "ide0=cmd640_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 | "hdx=autotune" : driver will attempt to tune interface speed |
237 | to the fastest PIO mode supported, |
238 | if possible for this drive only. |
239 | Not fully supported by all chipset types, |
240 | and quite likely to cause trouble with |
241 | older/odd IDE drives. |
242 | |
243 | "hdx=swapdata" : when the drive is a disk, byte swap all data |
244 | |
245 | "hdx=bswap" : same as above.......... |
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=noprobe" : do not attempt to access/use this interface |
262 | |
263 | "idex=base" : probe for an interface at the addr specified, |
264 | where "base" is usually 0x1f0 or 0x170 |
265 | and "ctl" is assumed to be "base"+0x206 |
266 | |
267 | "idex=base,ctl" : specify both base and ctl |
268 | |
269 | "idex=base,ctl,irq" : specify base, ctl, and irq number |
270 | |
271 | "idex=autotune" : driver will attempt to tune interface speed |
272 | to the fastest PIO mode supported, |
273 | for all drives on this interface. |
274 | Not fully supported by all chipset types, |
275 | and quite likely to cause trouble with |
276 | older/odd IDE drives. |
277 | |
278 | "idex=noautotune" : driver will NOT attempt to tune interface speed |
279 | This is the default for most chipsets, |
280 | except the cmd640. |
281 | |
282 | "idex=serialize" : do not overlap operations on idex. Please note |
283 | that you will have to specify this option for |
284 | both the respecitve primary and secondary channel |
285 | to take effect. |
286 | |
287 | "idex=four" : four drives on idex and ide(x^1) share same ports |
288 | |
289 | "idex=reset" : reset interface after probe |
290 | |
291 | "idex=dma" : automatically configure/use DMA if possible. |
292 | |
293 | "idex=ata66" : informs the interface that it has an 80c cable |
294 | for chipsets that are ATA-66 capable, but the |
295 | ability to bit test for detection is currently |
296 | unknown. |
297 | |
298 | "ide=reverse" : formerly called to pci sub-system, but now local. |
299 | |
300 | "ide=nodma" : disable DMA globally for the IDE subsystem. |
301 | |
302 | The following are valid ONLY on ide0, which usually corresponds |
303 | to the first ATA interface found on the particular host, and the defaults for |
304 | the base,ctl ports must not be altered. |
305 | |
306 | "ide0=dtc2278" : probe/support DTC2278 interface |
307 | "ide0=ht6560b" : probe/support HT6560B interface |
308 | "ide0=cmd640_vlb" : *REQUIRED* for VLB cards with the CMD640 chip |
309 | (not for PCI -- automatically detected) |
310 | "ide0=qd65xx" : probe/support qd65xx interface |
311 | "ide0=ali14xx" : probe/support ali14xx chipsets (ALI M1439/M1443/M1445) |
312 | "ide0=umc8672" : probe/support umc8672 chipsets |
313 | |
314 | "ide=doubler" : probe/support IDE doublers on Amiga |
315 | |
316 | There may be more options than shown -- use the source, Luke! |
317 | |
318 | Everything else is rejected with a "BAD OPTION" message. |
319 | |
320 | ================================================================================ |
321 | |
322 | IDE ATAPI streaming tape driver |
323 | ------------------------------- |
324 | |
325 | This driver is a part of the Linux ide driver and works in co-operation |
326 | with linux/drivers/block/ide.c. |
327 | |
328 | The driver, in co-operation with ide.c, basically traverses the |
329 | request-list for the block device interface. The character device |
330 | interface, on the other hand, creates new requests, adds them |
331 | to the request-list of the block device, and waits for their completion. |
332 | |
333 | Pipelined operation mode is now supported on both reads and writes. |
334 | |
335 | The block device major and minor numbers are determined from the |
336 | tape's relative position in the ide interfaces, as explained in ide.c. |
337 | |
338 | The character device interface consists of the following devices: |
339 | |
340 | ht0 major 37, minor 0 first IDE tape, rewind on close. |
341 | ht1 major 37, minor 1 second IDE tape, rewind on close. |
342 | ... |
343 | nht0 major 37, minor 128 first IDE tape, no rewind on close. |
344 | nht1 major 37, minor 129 second IDE tape, no rewind on close. |
345 | ... |
346 | |
347 | Run /dev/MAKEDEV to create the above entries. |
348 | |
349 | The general magnetic tape commands compatible interface, as defined by |
350 | include/linux/mtio.h, is accessible through the character device. |
351 | |
352 | General ide driver configuration options, such as the interrupt-unmask |
353 | flag, can be configured by issuing an ioctl to the block device interface, |
354 | as any other ide device. |
355 | |
356 | Our own ide-tape ioctl's can be issued to either the block device or |
357 | the character device interface. |
358 | |
359 | Maximal throughput with minimal bus load will usually be achieved in the |
360 | following scenario: |
361 | |
362 | 1. ide-tape is operating in the pipelined operation mode. |
363 | 2. No buffering is performed by the user backup program. |
364 | |
365 | |
366 | |
367 | ================================================================================ |
368 | |
369 | Some Terminology |
370 | ---------------- |
371 | IDE = Integrated Drive Electronics, meaning that each drive has a built-in |
372 | controller, which is why an "IDE interface card" is not a "controller card". |
373 | |
374 | ATA = AT (the old IBM 286 computer) Attachment Interface, a draft American |
375 | National Standard for connecting hard drives to PCs. This is the official |
376 | name for "IDE". |
377 | |
378 | The latest standards define some enhancements, known as the ATA-6 spec, |
379 | which grew out of vendor-specific "Enhanced IDE" (EIDE) implementations. |
380 | |
381 | ATAPI = ATA Packet Interface, a new protocol for controlling the drives, |
382 | similar to SCSI protocols, created at the same time as the ATA2 standard. |
383 | ATAPI is currently used for controlling CDROM, TAPE and FLOPPY (ZIP or |
384 | LS120/240) devices, removable R/W cartridges, and for high capacity hard disk |
385 | drives. |
386 | |
387 | mlord@pobox.com |
388 | -- |
389 | |
390 | Wed Apr 17 22:52:44 CEST 2002 edited by Marcin Dalecki, the current |
391 | maintainer. |
392 | |
393 | Wed Aug 20 22:31:29 CEST 2003 updated ide boot uptions to current ide.c |
394 | comments at 2.6.0-test4 time. Maciej Soltysiak <solt@dns.toxicfilms.tv> |