123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394 |
- Information regarding the Enhanced IDE drive in Linux 2.6
- ==============================================================================
-
- 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 NOTICES: 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 "ide0=cmd640_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).
- For special cases, interfaces may be specified using kernel "command line"
- options. For example,
- ide3=0x168,0x36e,10 /* ioports 0x168-0x16f,0x36e, irq 10 */
- Normally the irq number need not be specified, as ide.c will probe for it:
- ide3=0x168,0x36e /* ioports 0x168-0x16f,0x36e */
- The standard port, and irq values are these:
- ide0=0x1f0,0x3f6,14
- ide1=0x170,0x376,15
- ide2=0x1e8,0x3ee,11
- ide3=0x168,0x36e,10
- Note that the first parameter reserves 8 contiguous ioports, whereas the
- second value denotes a single ioport. If in doubt, do a 'cat /proc/ioports'.
- In all probability the device uses these ports and IRQs if it is attached
- to the appropriate ide channel. Pass the parameter for the correct ide
- channel to the kernel, as explained above.
- 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:
- hdx=cyls,heads,sects,wpcom,irq
- or hdx=cdrom
- where hdx can be any of hda through hdh, Three values are required
- (cyls,heads,sects). For example:
- hdc=1050,32,64 hdd=cdrom
- either {hda,hdb} or {hdc,hdd}. 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:
- hdb=noprobe
- or
- hdc=768,16,32
- hdc=noprobe
- 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:
- hdc=cdrom /* hdc = "master" on second interface */
- or
- hdd=cdrom /* hdd = "slave" on second interface */
- 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.
- Note that if BOTH hd.c and ide.c are configured into the kernel,
- hd.c will normally be allowed to control the primary IDE interface.
- This is useful for older hardware that may be incompatible with ide.c,
- and still allows newer hardware to run on the 2nd/3rd/4th IDE ports
- under control of ide.c. To have ide.c also "take over" the primary
- IDE port in this situation, use the "command line" parameter: ide0=0x1f0
- 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 /etc/modprobe.conf.
- 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
- ';'. For example:
- insmod ide.o options="ide0=serialize ide1=serialize ide2=0x1e8;0x3ee;11"
- ================================================================================
- Summary of ide driver parameters for kernel command line
- --------------------------------------------------------
- "hdx=" is recognized for all "x" from "a" to "h", such as "hdc".
-
- "idex=" is recognized for all "x" from "0" to "3", such as "ide1".
- "hdx=noprobe" : drive may be present, but do not probe for it
-
- "hdx=none" : drive is NOT present, ignore cmos and do not probe
-
- "hdx=nowerr" : ignore the WRERR_STAT bit on this drive
-
- "hdx=cdrom" : drive is present, and is a cdrom drive
-
- "hdx=cyl,head,sect" : disk drive is present, with specified geometry
- "hdx=remap" : remap access of sector 0 to sector 1 (for EZDrive)
- "hdx=remap63" : remap the drive: add 63 to all sector numbers
- (for DM OnTrack)
-
- "hdx=autotune" : driver will attempt to tune interface speed
- to the fastest PIO mode supported,
- if possible for this drive only.
- Not fully supported by all chipset types,
- and quite likely to cause trouble with
- older/odd IDE drives.
- "hdx=swapdata" : when the drive is a disk, byte swap all data
- "hdx=bswap" : same as above..........
- "hdx=scsi" : the return of the ide-scsi flag, this is useful for
- allowing ide-floppy, ide-tape, and ide-cdrom|writers
- to use ide-scsi emulation on a device specific option.
- "idebus=xx" : inform IDE driver of VESA/PCI bus speed in MHz,
- where "xx" is between 20 and 66 inclusive,
- used when tuning chipset PIO modes.
- For PCI bus, 25 is correct for a P75 system,
- 30 is correct for P90,P120,P180 systems,
- and 33 is used for P100,P133,P166 systems.
- If in doubt, use idebus=33 for PCI.
- As for VLB, it is safest to not specify it.
- Bigger values are safer than smaller ones.
- "idex=noprobe" : do not attempt to access/use this interface
-
- "idex=base" : probe for an interface at the addr specified,
- where "base" is usually 0x1f0 or 0x170
- and "ctl" is assumed to be "base"+0x206
-
- "idex=base,ctl" : specify both base and ctl
- "idex=base,ctl,irq" : specify base, ctl, and irq number
-
- "idex=autotune" : driver will attempt to tune interface speed
- to the fastest PIO mode supported,
- for all drives on this interface.
- Not fully supported by all chipset types,
- and quite likely to cause trouble with
- older/odd IDE drives.
- "idex=noautotune" : driver will NOT attempt to tune interface speed
- This is the default for most chipsets,
- except the cmd640.
- "idex=serialize" : do not overlap operations on idex. Please note
- that you will have to specify this option for
- both the respective primary and secondary channel
- to take effect.
- "idex=four" : four drives on idex and ide(x^1) share same ports
-
- "idex=reset" : reset interface after probe
-
- "idex=dma" : automatically configure/use DMA if possible.
- "idex=ata66" : informs the interface that it has an 80c cable
- for chipsets that are ATA-66 capable, but the
- ability to bit test for detection is currently
- unknown.
- "ide=reverse" : formerly called to pci sub-system, but now local.
- "ide=nodma" : disable DMA globally for the IDE subsystem.
- The following are valid ONLY on ide0, which usually corresponds
- to the first ATA interface found on the particular host, and the defaults for
- the base,ctl ports must not be altered.
- "ide0=dtc2278" : probe/support DTC2278 interface
- "ide0=ht6560b" : probe/support HT6560B interface
- "ide0=cmd640_vlb" : *REQUIRED* for VLB cards with the CMD640 chip
- (not for PCI -- automatically detected)
- "ide0=qd65xx" : probe/support qd65xx interface
- "ide0=ali14xx" : probe/support ali14xx chipsets (ALI M1439/M1443/M1445)
- "ide0=umc8672" : probe/support umc8672 chipsets
- "ide=doubler" : probe/support IDE doublers on Amiga
- There may be more options than shown -- use the source, Luke!
- Everything else is rejected with a "BAD OPTION" message.
- ================================================================================
- IDE ATAPI streaming tape driver
- -------------------------------
- This driver is a part of the Linux ide driver and works in co-operation
- with linux/drivers/block/ide.c.
- The driver, in co-operation with ide.c, basically traverses the
- request-list for the block device interface. The character device
- interface, on the other hand, creates new requests, adds them
- to the request-list of the block device, and waits for their completion.
- Pipelined operation mode is now supported on both reads and writes.
- The block device major and minor numbers are determined from the
- tape's relative position in the ide interfaces, as explained in ide.c.
- The character device interface consists of the following devices:
- ht0 major 37, minor 0 first IDE tape, rewind on close.
- ht1 major 37, minor 1 second IDE tape, rewind on close.
- ...
- nht0 major 37, minor 128 first IDE tape, no rewind on close.
- nht1 major 37, minor 129 second IDE tape, no rewind on close.
- ...
- Run /dev/MAKEDEV to create the above entries.
- The general magnetic tape commands compatible interface, as defined by
- include/linux/mtio.h, is accessible through the character device.
- General ide driver configuration options, such as the interrupt-unmask
- flag, can be configured by issuing an ioctl to the block device interface,
- as any other ide device.
- Our own ide-tape ioctl's can be issued to either the block device or
- the character device interface.
- Maximal throughput with minimal bus load will usually be achieved in the
- following scenario:
- 1. ide-tape is operating in the pipelined operation mode.
- 2. No buffering is performed by the user backup program.
- ================================================================================
- 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.
- mlord@pobox.com
- --
- 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 uptions to current ide.c
- comments at 2.6.0-test4 time. Maciej Soltysiak <solt@dns.toxicfilms.tv>
|