Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | |
2 | Information regarding the Enhanced IDE drive in Linux 2.6 | |
3 | ||
4 | ============================================================================== | |
5 | ||
331a5ad2 | 6 | |
1da177e4 LT |
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. | |
331a5ad2 | 10 | |
1da177e4 LT |
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 | |
ade2daf9 | 33 | *** interfaces, one *MUST* use the "cmd640.probe_vlb" kernel option. |
1da177e4 LT |
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 | ||
331a5ad2 | 54 | This is the multiple IDE interface driver, as evolved from hd.c. |
1da177e4 LT |
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 | ||
1da177e4 LT |
74 | Any number of interfaces may share a single IRQ if necessary, at a slight |
75 | performance penalty, whether on separate cards or a single VLB card. | |
76 | The IDE driver automatically detects and handles this. However, this may | |
77 | or may not be harmful to your hardware.. two or more cards driving the same IRQ | |
78 | can potentially burn each other's bus driver, though in practice this | |
79 | seldom occurs. Be careful, and if in doubt, don't do it! | |
80 | ||
81 | Drives are normally found by auto-probing and/or examining the CMOS/BIOS data. | |
82 | For really weird situations, the apparent (fdisk) geometry can also be specified | |
83 | on the kernel "command line" using LILO. The format of such lines is: | |
84 | ||
4706a7e0 BZ |
85 | ide_core.chs=[interface_number.device_number]:cyls,heads,sects |
86 | or ide_core.cdrom=[interface_number.device_number] | |
1da177e4 | 87 | |
4706a7e0 | 88 | For example: |
1da177e4 | 89 | |
4706a7e0 | 90 | ide_core.chs=1.0:1050,32,64 ide_core.cdrom=1.1 |
1da177e4 | 91 | |
4706a7e0 BZ |
92 | The results of successful auto-probing may override the physical geometry/irq |
93 | specified, though the "original" geometry may be retained as the "logical" | |
94 | geometry for partitioning purposes (fdisk). | |
1da177e4 LT |
95 | |
96 | If the auto-probing during boot time confuses a drive (ie. the drive works | |
97 | with hd.c but not with ide.c), then an command line option may be specified | |
98 | for each drive for which you'd like the drive to skip the hardware | |
99 | probe/identification sequence. For example: | |
100 | ||
6e87543a | 101 | ide_core.noprobe=0.1 |
1da177e4 | 102 | or |
4706a7e0 | 103 | ide_core.chs=1.0:768,16,32 |
6e87543a | 104 | ide_core.noprobe=1.0 |
1da177e4 LT |
105 | |
106 | Note that when only one IDE device is attached to an interface, it should be | |
107 | jumpered as "single" or "master", *not* "slave". Many folks have had | |
108 | "trouble" with cdroms because of this requirement, so the driver now probes | |
109 | for both units, though success is more likely when the drive is jumpered | |
110 | correctly. | |
111 | ||
112 | Courtesy of Scott Snyder and others, the driver supports ATAPI cdrom drives | |
113 | such as the NEC-260 and the new MITSUMI triple/quad speed drives. | |
114 | Such drives will be identified at boot time, just like a hard disk. | |
115 | ||
116 | If for some reason your cdrom drive is *not* found at boot time, you can force | |
117 | the probe to look harder by supplying a kernel command line parameter | |
118 | via LILO, such as: | |
119 | ||
4706a7e0 | 120 | ide_core.cdrom=1.0 /* "master" on second interface (hdc) */ |
1da177e4 | 121 | or |
4706a7e0 | 122 | ide_core.cdrom=1.1 /* "slave" on second interface (hdd) */ |
1da177e4 LT |
123 | |
124 | For example, a GW2000 system might have a hard drive on the primary | |
125 | interface (/dev/hda) and an IDE cdrom drive on the secondary interface | |
126 | (/dev/hdc). To mount a CD in the cdrom drive, one would use something like: | |
127 | ||
128 | ln -sf /dev/hdc /dev/cdrom | |
129 | mkdir /mnt/cdrom | |
130 | mount /dev/cdrom /mnt/cdrom -t iso9660 -o ro | |
131 | ||
132 | If, after doing all of the above, mount doesn't work and you see | |
133 | errors from the driver (with dmesg) complaining about `status=0xff', | |
134 | this means that the hardware is not responding to the driver's attempts | |
135 | to read it. One of the following is probably the problem: | |
136 | ||
137 | - Your hardware is broken. | |
138 | ||
139 | - You are using the wrong address for the device, or you have the | |
140 | drive jumpered wrong. Review the configuration instructions above. | |
141 | ||
142 | - Your IDE controller requires some nonstandard initialization sequence | |
143 | before it will work properly. If this is the case, there will often | |
144 | be a separate MS-DOS driver just for the controller. IDE interfaces | |
145 | on sound cards usually fall into this category. Such configurations | |
146 | can often be made to work by first booting MS-DOS, loading the | |
147 | appropriate drivers, and then warm-booting linux (without powering | |
148 | off). This can be automated using loadlin in the MS-DOS autoexec. | |
149 | ||
150 | If you always get timeout errors, interrupts from the drive are probably | |
151 | not making it to the host. Check how you have the hardware jumpered | |
152 | and make sure it matches what the driver expects (see the configuration | |
153 | instructions above). If you have a PCI system, also check the BIOS | |
154 | setup; I've had one report of a system which was shipped with IRQ 15 | |
155 | disabled by the BIOS. | |
156 | ||
157 | The kernel is able to execute binaries directly off of the cdrom, | |
158 | provided it is mounted with the default block size of 1024 (as above). | |
159 | ||
160 | Please pass on any feedback on any of this stuff to the maintainer, | |
161 | whose address can be found in linux/MAINTAINERS. | |
162 | ||
1da177e4 LT |
163 | The IDE driver is modularized. The high level disk/CD-ROM/tape/floppy |
164 | drivers can always be compiled as loadable modules, the chipset drivers | |
165 | can only be compiled into the kernel, and the core code (ide.c) can be | |
166 | compiled as a loadable module provided no chipset support is needed. | |
167 | ||
168 | When using ide.c as a module in combination with kmod, add: | |
169 | ||
170 | alias block-major-3 ide-probe | |
171 | ||
172 | to /etc/modprobe.conf. | |
173 | ||
174 | When ide.c is used as a module, you can pass command line parameters to the | |
175 | driver using the "options=" keyword to insmod, while replacing any ',' with | |
6e87543a | 176 | ';'. |
1da177e4 LT |
177 | |
178 | ||
179 | ================================================================================ | |
180 | ||
181 | Summary of ide driver parameters for kernel command line | |
182 | -------------------------------------------------------- | |
183 | ||
84913882 BZ |
184 | For legacy IDE VLB host drivers (ali14xx/dtc2278/ht6560b/qd65xx/umc8672) |
185 | you need to explicitly enable probing by using "probe" kernel parameter, | |
186 | i.e. to enable probing for ALI M14xx chipsets (ali14xx host driver) use: | |
187 | ||
188 | * "ali14xx.probe" boot option when ali14xx driver is built-in the kernel | |
189 | ||
190 | * "probe" module parameter when ali14xx driver is compiled as module | |
191 | ("modprobe ali14xx probe") | |
192 | ||
ade2daf9 BZ |
193 | Also for legacy CMD640 host driver (cmd640) you need to use "probe_vlb" |
194 | kernel paremeter to enable probing for VLB version of the chipset (PCI ones | |
195 | are detected automatically). | |
196 | ||
ffd4f6f0 BZ |
197 | You also need to use "probe" kernel parameter for ide-4drives driver |
198 | (support for IDE generic chipset with four drives on one port). | |
199 | ||
9dcba7f2 BZ |
200 | To enable support for IDE doublers on Amiga use "doubler" kernel parameter |
201 | for gayle host driver (i.e. "gayle.doubler" if the driver is built-in). | |
202 | ||
9fd91d95 BZ |
203 | To force ignoring cable detection (this should be needed only if you're using |
204 | short 40-wires cable which cannot be automatically detected - if this is not | |
205 | a case please report it as a bug instead) use "ignore_cable" kernel parameter: | |
206 | ||
207 | * "ide_core.ignore_cable=[interface_number]" boot option if IDE is built-in | |
208 | (i.e. "ide_core.ignore_cable=1" to force ignoring cable for "ide1") | |
209 | ||
210 | * "ignore_cable=[interface_number]" module parameter (for ide_core module) | |
211 | if IDE is compiled as module | |
212 | ||
6e87543a BZ |
213 | Other kernel parameters for ide_core are: |
214 | ||
215 | * "nodma=[interface_number.device_number]" to disallow DMA for a device | |
216 | ||
217 | * "noflush=[interface_number.device_number]" to disable flush requests | |
218 | ||
075affcb BZ |
219 | * "nohpa=[interface_number.device_number]" to disable Host Protected Area |
220 | ||
6e87543a BZ |
221 | * "noprobe=[interface_number.device_number]" to skip probing |
222 | ||
223 | * "nowerr=[interface_number.device_number]" to ignore the WRERR_STAT bit | |
224 | ||
4706a7e0 BZ |
225 | * "cdrom=[interface_number.device_number]" to force device as a CD-ROM |
226 | ||
227 | * "chs=[interface_number.device_number]" to force device as a disk (using CHS) | |
228 | ||
1da177e4 LT |
229 | ================================================================================ |
230 | ||
231 | Some Terminology | |
232 | ---------------- | |
233 | IDE = Integrated Drive Electronics, meaning that each drive has a built-in | |
234 | controller, which is why an "IDE interface card" is not a "controller card". | |
235 | ||
236 | ATA = AT (the old IBM 286 computer) Attachment Interface, a draft American | |
237 | National Standard for connecting hard drives to PCs. This is the official | |
238 | name for "IDE". | |
239 | ||
240 | The latest standards define some enhancements, known as the ATA-6 spec, | |
241 | which grew out of vendor-specific "Enhanced IDE" (EIDE) implementations. | |
242 | ||
243 | ATAPI = ATA Packet Interface, a new protocol for controlling the drives, | |
244 | similar to SCSI protocols, created at the same time as the ATA2 standard. | |
245 | ATAPI is currently used for controlling CDROM, TAPE and FLOPPY (ZIP or | |
246 | LS120/240) devices, removable R/W cartridges, and for high capacity hard disk | |
247 | drives. | |
248 | ||
249 | mlord@pobox.com | |
250 | -- | |
251 | ||
252 | Wed Apr 17 22:52:44 CEST 2002 edited by Marcin Dalecki, the current | |
253 | maintainer. | |
254 | ||
4ae0edc2 | 255 | Wed Aug 20 22:31:29 CEST 2003 updated ide boot options to current ide.c |
1da177e4 | 256 | comments at 2.6.0-test4 time. Maciej Soltysiak <solt@dns.toxicfilms.tv> |