Difference between revisions of "Problems with SATA and Linux"
(→No DMA on DVD drive: more info about ATA_ENABLE_PATA) |
m (removed footnote, not necessary any more) |
||
Line 126: | Line 126: | ||
While not a Linux issue, note that there is an issue with installing alternative PATA (IDE) hard disks as the system drive. Unless the disk is one of the few approved disks listed inside the BIOS, you will get an BIOS error 2010 during system boot, and the disk may operate unreliably. See [[Problem with non-ThinkPad hard disks]]. | While not a Linux issue, note that there is an issue with installing alternative PATA (IDE) hard disks as the system drive. Unless the disk is one of the few approved disks listed inside the BIOS, you will get an BIOS error 2010 during system boot, and the disk may operate unreliably. See [[Problem with non-ThinkPad hard disks]]. | ||
− | |||
− | |||
− | |||
− |
Revision as of 11:16, 5 November 2005
Contents
|
Some ThinkPad models use a SATA controller for the system hard disk. This causes several complications for Linux installation. The following lists these problems and known workarounds. Note that the details are often version- and distribution-specific. Models using a SATA disk interfaceModels using a SATA controller and a SATA system disk: Models using a SATA controller and a PATA (IDE) system disk with a SATA-to-PATA bridge:
|
Hang on resume from suspend to RAM
Linux kernels (as of 2.6.14-rc2) do not support suspend and resume for SATA devices. As a result, the machine hangs upon the first disk access after resume. A kernel patch LKML posting) is available that provides SATA power-management support and makes Suspend to RAM work on the T43 and X41 at least. (Tested on 2.6.12rc6 which the patch applies to with some offsets. (On the T43p the patch has not been tested so far but should work as well. The R52 uses SATA and sleep doesn't work, so it is probably affected too.)
Patches
Some distributions already include this patch (e.g., Ubuntu Breezy), but some don't (e.g., Fedora 4).
Failed resume from suspend to disk
Suspend to disk (using swsusp or swsusp2) needs to load the memory image from the SATA disk. For this to work, you either need an initrd with all the necessary SATA modules, or the SATA drivers compiled into the kernel.
DVD drive not recognized
The ata_piix SATA driver grabs ownership over the IDE ports when it is loaded, but (by default) does not support PATA ATAPI devices such as the Ultrabay optical drives. Thus, if IDE support is compiled as a module and loaded after ata_piix, the DVD drive will not be recognized by either driver.
The following configurations do work:
- Compile IDE into the kernel (non-module).
- Compile both IDE and SATA as modules and make sure IDE is loaded first (the module is called 'ide_generic').
- Enable PATA ATAPI support in the SATA system (experimental; see below).
Note that the optical drive must be in the Ultrabay during system boot (Ultrabay device swapping is currently unsupported).
No DMA on DVD drive
Using the IDE driver, DMA support cannot be enabled on an Ultrabay optical drive:
# hdparm -d1 /dev/hdc /dev/hdc: setting using_dma to 1 (on) HDIO_SET_DMA failed: Operation not permitted using_dma = 0 (off)
As a result, the optical drive is slow, and in particular, too slow to play video DVDs.
One workaround is to use employ the SATA driver (instead of the IDE driver) for the optical drive. This requires enabling two featues of the SATA driver, namely ATAPI support and PATA support, which are both in active development and far from stable. Using this will probably devour all your data and go on to eat all the food in your fridge. But if you have full backups and an empty fridge, do the following:
- Grab the latest kernel, since these feature are under active development (these instructions where tested with 2.6.14-rc2 and 2.6.14).
- Pass the
hdc=noprobe
kernel/module argument, or disable the IDE driver completely. - Configure the SATA system (and in particular the ata_piix driver) as built-in, unless you're using an initrd in which case building as module is of course also possible.
- Use
lspci -vn
to check whether one of the following chipsets is used in the Thinkpad:
PCI ID | Name |
---|---|
8086:7111 | Intel 82371AB/EB/MB PIIX4 IDE |
8086:24db | Intel 82801EB/ER (ICH5/ICH5R) IDE Controller |
8086:25a2 | Intel 6300ESB PATA Storage Controller |
If yes, the support for these chipsets has to be enabled by setting
#define ATA_ENABLE_PATA
in include/linux/libata.h
- Add the
libata.atapi_enabled=1
boot parameter to your kernel command line, e.g. in /boot/grub/menu.lst, or passatapi_enabled=1
as argument tomodprobe
There have been reports that DVD burning doesn't work under this configuration, but it seems to work with kernel 2.6.14-rc2 (tested on a ThinkPad T43 with a UltraBay Slim DVD Multi-Burner Plus) and kernel 2.6.14 (on a T43p with the same drive).
No DMA on system hard disk
In some Linux kernels, both the SATA driver and the IDE driver can handle the system hard disk. With the SATA driver, it shows as /dev/sda and DMA is enabled. With the IDE driver, it shows as /dev/hda and DMA is disabled.
The simplest way to enable DMA is to force the IDE driver to ignore the system hard disk by passing the hda=noprobe
kernel argument. The driver will then be handled by the SATA driver. Note that this will change its device name to /dev/sda (which may require changes in /etc/fstab and the boot loader) and may cause other problems as listed above.
(Observed on a ThinkPad T43 with Fedora Core kernel 2.6.13-1.1526_FC4.)
No SMART support
The Linux SATA system currently does not support SMART commands (e.g., via smartctl). This is under development.
A patch is available:
- Kernel 2.6.12: http://rtr.ca/dell_i9300/kernel/kernel-2.6.12/03_libata_passthru.patch
- Kernel 2.6.13: http://rtr.ca/dell_i9300/kernel/kernel-2.6.13/02_libata_passthru.patch
- Kernel 2.6.14 with the above suspend-to-RAM patch: http://linux.spiney.org/system/files?file=02_libata_passthru.fixed.patch
After applying the patch, run smartctl with the "-d ata" parameter:
# smartctl -d ata -a /dev/sda
(Tested on ThinkPad T43 with kernel 2.6.13.1.)
No disk power management
The Linux SATA system currently does not support power management commands. This is under development.
The above patches for SMART support resolves this, as it also enables the following commands:
# hdparm -y
(spin down)# hdparm -S num
(automatic spin down timeout)# hdparm -B num
(advanced power management level)
Note that this command is still rejected:
# hdparm -M num
(acoustic management)
(Tested with patched kernels 2.6.13.1 and 2.6.12-4 and a 60GB 7200RPM disk model HTS726060M9AT00.)
Note that even when Laptop-mode is used, the "hddtemp" daemon (as shipped with Fedora Core 4) will wake up the disk every minute, and must thus be disabled for power management to be effective. Its accesses are not visibile through the /proc/sys/vm/block_dump facility. It is unclear whether disk temperature can be monitored without causing the disk to spin up (on the T43, none of the /proc/acpi/ibm/thermal values corresponds to the disk's built-in temperature sensor).
No disk information
With mainline kernels (as of 2.6.14-rc2), the disk information cannot be read via either of:
# hdparm -i /dev/sda
# hdparm -I /dev/sda
The latter is fixed by the above patch for SMART support.
BIOS error 2010 on user-installed hard disk
While not a Linux issue, note that there is an issue with installing alternative PATA (IDE) hard disks as the system drive. Unless the disk is one of the few approved disks listed inside the BIOS, you will get an BIOS error 2010 during system boot, and the disk may operate unreliably. See Problem with non-ThinkPad hard disks.