If you’re using a fairly modern laptop with an Intel chipset, the chances are that it has an Intel ICH7 I/O controller hub:
$ lspci | grep -i ide
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE (rev 01)
This usually means that your internal hard disk and CD-ROM/DVD drive (if you have one) are wired using Serial ATA (SATA), not the obsolete Parallel ATA standard. However, while the Linux SATA driver will happily take control of your hard disk, for some reason the older IDE driver will often capture the CD-ROM drive. You can tell by looking at /dev/cdrom
$ ls -l /dev/cdrom
lrwxrwxrwx 1 root root 4 Dec 12 13:23 /dev/cdrom -> hdc
If the text after the “->
” arrow starts with “hd
” as above, the IDE controller owns your CD-ROM/DVD drive.
Everything might initially look okay, because the CD-ROM/DVD drive will appear to work normally, but performance will turn out to be awful: try to play a CD or DVD, and you’ll see your notionally speedy laptop crawl nearly to a halt.
If you’ve used Linux on previous generations of laptops, you’ll know enough to check the output of the hdparm command, to see if the kernel has DMA enabled on the CD-ROM/DVD drive. It will say no, whereupon you might try to force the kernel to use DMA, and be stumped when it refuses.
The reason this doesn’t work is that the ICH7 hub is emulating an IDE device, and the Linux IDE driver doesn’t know how to configure it to use DMA. Never fear; you don’t need to do this at all.
Instead, configure your kernel to use the newer libata driver to control the CD-ROM/DVD drive. To do this, you’ll need to modify the kernel’s boot command line. On Fedora systems, edit /etc/grub.conf
(this file will have a different name under other Linux distros), and look for the first line that starts with bit of white space, followed by the word “kernel
“. Append the following string to it: “combined_mode=libata
That line of your grub
config file will now look more like this (for god’s sake, don’t make a literal copy of my kernel command line; it won’t work for you!):
kernel /vmlinuz-2.6.18-1.2849.fc6 ro root=LABEL=/ rhgb quiet combined_mode=libata
Reboot your laptop, and you should find that /dev/cdrom
no longer points at something starting with “hd
$ ls -l /dev/cdrom
lrwxrwxrwx 1 root root 4 Dec 12 16:10 /dev/cdrom -> scd0
” string means that libata is now managing the CD-ROM/DVD drive. You should now get great performance for CD and DVD playing, without it dragging down the interactive performance of your laptop.