forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
265 lines
11 KiB
265 lines
11 KiB
============================================ |
|
Information regarding the Enhanced IDE drive |
|
============================================ |
|
|
|
The hdparm utility can be used to control various IDE features on a |
|
running system. It is packaged separately. Please Look for it on popular |
|
linux FTP sites. |
|
|
|
------------------------------------------------------------------------------- |
|
|
|
.. important:: |
|
|
|
BUGGY IDE CHIPSETS CAN CORRUPT DATA!! |
|
|
|
PCI versions of the CMD640 and RZ1000 interfaces are now detected |
|
automatically at startup when PCI BIOS support is configured. |
|
|
|
Linux disables the "prefetch" ("readahead") mode of the RZ1000 |
|
to prevent data corruption possible due to hardware design flaws. |
|
|
|
For the CMD640, linux disables "IRQ unmasking" (hdparm -u1) on any |
|
drive for which the "prefetch" mode of the CMD640 is turned on. |
|
If "prefetch" is disabled (hdparm -p8), then "IRQ unmasking" can be |
|
used again. |
|
|
|
For the CMD640, linux disables "32bit I/O" (hdparm -c1) on any drive |
|
for which the "prefetch" mode of the CMD640 is turned off. |
|
If "prefetch" is enabled (hdparm -p9), then "32bit I/O" can be |
|
used again. |
|
|
|
The CMD640 is also used on some Vesa Local Bus (VLB) cards, and is *NOT* |
|
automatically detected by Linux. For safe, reliable operation with such |
|
interfaces, one *MUST* use the "cmd640.probe_vlb" kernel option. |
|
|
|
Use of the "serialize" option is no longer necessary. |
|
|
|
------------------------------------------------------------------------------- |
|
|
|
Common pitfalls |
|
=============== |
|
|
|
- 40-conductor IDE cables are capable of transferring data in DMA modes up to |
|
udma2, but no faster. |
|
|
|
- If possible devices should be attached to separate channels if they are |
|
available. Typically the disk on the first and CD-ROM on the second. |
|
|
|
- If you mix devices on the same cable, please consider using similar devices |
|
in respect of the data transfer mode they support. |
|
|
|
- Even better try to stick to the same vendor and device type on the same |
|
cable. |
|
|
|
This is the multiple IDE interface driver, as evolved from hd.c |
|
=============================================================== |
|
|
|
It supports up to 9 IDE interfaces per default, on one or more IRQs (usually |
|
14 & 15). There can be up to two drives per interface, as per the ATA-6 spec.:: |
|
|
|
Primary: ide0, port 0x1f0; major=3; hda is minor=0; hdb is minor=64 |
|
Secondary: ide1, port 0x170; major=22; hdc is minor=0; hdd is minor=64 |
|
Tertiary: ide2, port 0x1e8; major=33; hde is minor=0; hdf is minor=64 |
|
Quaternary: ide3, port 0x168; major=34; hdg is minor=0; hdh is minor=64 |
|
fifth.. ide4, usually PCI, probed |
|
sixth.. ide5, usually PCI, probed |
|
|
|
To access devices on interfaces > ide0, device entries please make sure that |
|
device files for them are present in /dev. If not, please create such |
|
entries, by using /dev/MAKEDEV. |
|
|
|
This driver automatically probes for most IDE interfaces (including all PCI |
|
ones), for the drives/geometries attached to those interfaces, and for the IRQ |
|
lines being used by the interfaces (normally 14, 15 for ide0/ide1). |
|
|
|
Any number of interfaces may share a single IRQ if necessary, at a slight |
|
performance penalty, whether on separate cards or a single VLB card. |
|
The IDE driver automatically detects and handles this. However, this may |
|
or may not be harmful to your hardware.. two or more cards driving the same IRQ |
|
can potentially burn each other's bus driver, though in practice this |
|
seldom occurs. Be careful, and if in doubt, don't do it! |
|
|
|
Drives are normally found by auto-probing and/or examining the CMOS/BIOS data. |
|
For really weird situations, the apparent (fdisk) geometry can also be specified |
|
on the kernel "command line" using LILO. The format of such lines is:: |
|
|
|
ide_core.chs=[interface_number.device_number]:cyls,heads,sects |
|
|
|
or:: |
|
|
|
ide_core.cdrom=[interface_number.device_number] |
|
|
|
For example:: |
|
|
|
ide_core.chs=1.0:1050,32,64 ide_core.cdrom=1.1 |
|
|
|
The results of successful auto-probing may override the physical geometry/irq |
|
specified, though the "original" geometry may be retained as the "logical" |
|
geometry for partitioning purposes (fdisk). |
|
|
|
If the auto-probing during boot time confuses a drive (ie. the drive works |
|
with hd.c but not with ide.c), then an command line option may be specified |
|
for each drive for which you'd like the drive to skip the hardware |
|
probe/identification sequence. For example:: |
|
|
|
ide_core.noprobe=0.1 |
|
|
|
or:: |
|
|
|
ide_core.chs=1.0:768,16,32 |
|
ide_core.noprobe=1.0 |
|
|
|
Note that when only one IDE device is attached to an interface, it should be |
|
jumpered as "single" or "master", *not* "slave". Many folks have had |
|
"trouble" with cdroms because of this requirement, so the driver now probes |
|
for both units, though success is more likely when the drive is jumpered |
|
correctly. |
|
|
|
Courtesy of Scott Snyder and others, the driver supports ATAPI cdrom drives |
|
such as the NEC-260 and the new MITSUMI triple/quad speed drives. |
|
Such drives will be identified at boot time, just like a hard disk. |
|
|
|
If for some reason your cdrom drive is *not* found at boot time, you can force |
|
the probe to look harder by supplying a kernel command line parameter |
|
via LILO, such as::: |
|
|
|
ide_core.cdrom=1.0 /* "master" on second interface (hdc) */ |
|
|
|
or:: |
|
|
|
ide_core.cdrom=1.1 /* "slave" on second interface (hdd) */ |
|
|
|
For example, a GW2000 system might have a hard drive on the primary |
|
interface (/dev/hda) and an IDE cdrom drive on the secondary interface |
|
(/dev/hdc). To mount a CD in the cdrom drive, one would use something like:: |
|
|
|
ln -sf /dev/hdc /dev/cdrom |
|
mkdir /mnt/cdrom |
|
mount /dev/cdrom /mnt/cdrom -t iso9660 -o ro |
|
|
|
If, after doing all of the above, mount doesn't work and you see |
|
errors from the driver (with dmesg) complaining about `status=0xff`, |
|
this means that the hardware is not responding to the driver's attempts |
|
to read it. One of the following is probably the problem: |
|
|
|
- Your hardware is broken. |
|
|
|
- You are using the wrong address for the device, or you have the |
|
drive jumpered wrong. Review the configuration instructions above. |
|
|
|
- Your IDE controller requires some nonstandard initialization sequence |
|
before it will work properly. If this is the case, there will often |
|
be a separate MS-DOS driver just for the controller. IDE interfaces |
|
on sound cards usually fall into this category. Such configurations |
|
can often be made to work by first booting MS-DOS, loading the |
|
appropriate drivers, and then warm-booting linux (without powering |
|
off). This can be automated using loadlin in the MS-DOS autoexec. |
|
|
|
If you always get timeout errors, interrupts from the drive are probably |
|
not making it to the host. Check how you have the hardware jumpered |
|
and make sure it matches what the driver expects (see the configuration |
|
instructions above). If you have a PCI system, also check the BIOS |
|
setup; I've had one report of a system which was shipped with IRQ 15 |
|
disabled by the BIOS. |
|
|
|
The kernel is able to execute binaries directly off of the cdrom, |
|
provided it is mounted with the default block size of 1024 (as above). |
|
|
|
Please pass on any feedback on any of this stuff to the maintainer, |
|
whose address can be found in linux/MAINTAINERS. |
|
|
|
The IDE driver is modularized. The high level disk/CD-ROM/tape/floppy |
|
drivers can always be compiled as loadable modules, the chipset drivers |
|
can only be compiled into the kernel, and the core code (ide.c) can be |
|
compiled as a loadable module provided no chipset support is needed. |
|
|
|
When using ide.c as a module in combination with kmod, add:: |
|
|
|
alias block-major-3 ide-probe |
|
|
|
to a configuration file in /etc/modprobe.d/. |
|
|
|
When ide.c is used as a module, you can pass command line parameters to the |
|
driver using the "options=" keyword to insmod, while replacing any ',' with |
|
';'. |
|
|
|
|
|
Summary of ide driver parameters for kernel command line |
|
======================================================== |
|
|
|
For legacy IDE VLB host drivers (ali14xx/dtc2278/ht6560b/qd65xx/umc8672) |
|
you need to explicitly enable probing by using "probe" kernel parameter, |
|
i.e. to enable probing for ALI M14xx chipsets (ali14xx host driver) use: |
|
|
|
* "ali14xx.probe" boot option when ali14xx driver is built-in the kernel |
|
|
|
* "probe" module parameter when ali14xx driver is compiled as module |
|
("modprobe ali14xx probe") |
|
|
|
Also for legacy CMD640 host driver (cmd640) you need to use "probe_vlb" |
|
kernel paremeter to enable probing for VLB version of the chipset (PCI ones |
|
are detected automatically). |
|
|
|
You also need to use "probe" kernel parameter for ide-4drives driver |
|
(support for IDE generic chipset with four drives on one port). |
|
|
|
To enable support for IDE doublers on Amiga use "doubler" kernel parameter |
|
for gayle host driver (i.e. "gayle.doubler" if the driver is built-in). |
|
|
|
To force ignoring cable detection (this should be needed only if you're using |
|
short 40-wires cable which cannot be automatically detected - if this is not |
|
a case please report it as a bug instead) use "ignore_cable" kernel parameter: |
|
|
|
* "ide_core.ignore_cable=[interface_number]" boot option if IDE is built-in |
|
(i.e. "ide_core.ignore_cable=1" to force ignoring cable for "ide1") |
|
|
|
* "ignore_cable=[interface_number]" module parameter (for ide_core module) |
|
if IDE is compiled as module |
|
|
|
Other kernel parameters for ide_core are: |
|
|
|
* "nodma=[interface_number.device_number]" to disallow DMA for a device |
|
|
|
* "noflush=[interface_number.device_number]" to disable flush requests |
|
|
|
* "nohpa=[interface_number.device_number]" to disable Host Protected Area |
|
|
|
* "noprobe=[interface_number.device_number]" to skip probing |
|
|
|
* "nowerr=[interface_number.device_number]" to ignore the WRERR_STAT bit |
|
|
|
* "cdrom=[interface_number.device_number]" to force device as a CD-ROM |
|
|
|
* "chs=[interface_number.device_number]" to force device as a disk (using CHS) |
|
|
|
|
|
Some Terminology |
|
================ |
|
|
|
IDE |
|
Integrated Drive Electronics, meaning that each drive has a built-in |
|
controller, which is why an "IDE interface card" is not a "controller card". |
|
|
|
ATA |
|
AT (the old IBM 286 computer) Attachment Interface, a draft American |
|
National Standard for connecting hard drives to PCs. This is the official |
|
name for "IDE". |
|
|
|
The latest standards define some enhancements, known as the ATA-6 spec, |
|
which grew out of vendor-specific "Enhanced IDE" (EIDE) implementations. |
|
|
|
ATAPI |
|
ATA Packet Interface, a new protocol for controlling the drives, |
|
similar to SCSI protocols, created at the same time as the ATA2 standard. |
|
ATAPI is currently used for controlling CDROM, TAPE and FLOPPY (ZIP or |
|
LS120/240) devices, removable R/W cartridges, and for high capacity hard disk |
|
drives. |
|
|
|
[email protected] |
|
|
|
|
|
Wed Apr 17 22:52:44 CEST 2002 edited by Marcin Dalecki, the current |
|
maintainer. |
|
|
|
Wed Aug 20 22:31:29 CEST 2003 updated ide boot options to current ide.c |
|
comments at 2.6.0-test4 time. Maciej Soltysiak <[email protected]>
|
|
|