Difference between revisions of "Problems with SATA and Linux"

From ThinkWiki
Jump to: navigation, search
(Patches)
 
(132 intermediate revisions by 57 users not shown)
Line 2: Line 2:
 
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__
 
|style="vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;" | __TOC__
 
|style="vertical-align:top" |
 
|style="vertical-align:top" |
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.
+
Some ThinkPad models use an [[Intel ICH6-M]] SATA/PATA 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.
 
+
{{HINT|The information on this page is outdated. As long as you have a fairly recent distribution with kernel 2.6.19 or newer, none of the issues described here apply}}
 
===Models using a SATA disk interface===
 
===Models using a SATA disk interface===
 
Models using a SATA controller and a SATA system disk:
 
Models using a SATA controller and a SATA system disk:
 +
*ThinkPad {{R60}}, {{R60e}}, {{R61}}
 +
*ThinkPad {{T60}}, {{T60p}}, {{T61}}
 +
*ThinkPad {{X60}}, {{X60s}}, {{X60_Tablet}}, {{X61}}, {{X61s}}, {{X61_Tablet}}
 
*ThinkPad {{Z60t}}, {{Z60m}}
 
*ThinkPad {{Z60t}}, {{Z60m}}
 +
*ThinkPad {{Z61e}}, {{Z61t}}, {{Z61m}}, {{Z61p}}
 
Models using a SATA controller and a PATA (IDE) system disk with a SATA-to-PATA bridge:
 
Models using a SATA controller and a PATA (IDE) system disk with a SATA-to-PATA bridge:
 
*ThinkPad {{T43}}, {{T43p}}
 
*ThinkPad {{T43}}, {{T43p}}
 
*ThinkPad {{R52}}
 
*ThinkPad {{R52}}
 
*ThinkPad {{X41}}, {{X41T}}
 
*ThinkPad {{X41}}, {{X41T}}
 +
 +
{{NOTE|Some of these problems (namely SMART support, power management and disk information) are solved in Linux 2.6.15 with the inclusion of libata pass-through. See the SATA driver [http://linux-ata.org/features.html features], [http://linux-ata.org/software-status.html software status] and [http://linux-ata.org/driver-status.html hardware status].}}
 
|}
 
|}
  
 
==Hang on resume from suspend to RAM==
 
==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 [http://marc.theaimsgroup.com/?l=linux-kernel&m=111504542402455&w=2 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.)
+
Linux kernels prior to 2.6.16 (ata_piix) and 2.6.19 (ahci) 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 ([http://lkml.org/lkml/2005/5/2/46 LKML posting]) fixes this by adding SATA power management support.
 +
 
 +
Kernel 2.6.16 and later fixes this problem for most systems. The Thinkpad T60 and X60s still need some patches to get resume working using 2.6.16, see [[Talk:Problems with SATA and Linux#Patch against SATA-resume problem with T60|here]]. The T60p resumes properly with 2.6.17-rc6, the T60 and X60 should also.  You need to enable ata_piix and disable AHCI in the bios. The latest fedora (FC5) 2.6.17 kernel seems to have fixed the resume problem on the T60p, still need to disable AHCI though. Applying [http://cvs.fedora.redhat.com/viewcvs/rpms/kernel/FC-5/linux-2.6-console-suspend.patch this FC5 patch] makes suspend-to-ram work with AHCI enabled.
  
 
===Patches===
 
===Patches===
Line 21: Line 29:
 
* [http://shamrock.dyndns.org/~ln/linux/sata_pm.2.6.13-rc5.diff Patch for kernel 2.6.13-rc5]
 
* [http://shamrock.dyndns.org/~ln/linux/sata_pm.2.6.13-rc5.diff Patch for kernel 2.6.13-rc5]
 
* [http://lkml.org/lkml/2005/9/23/97 Patch for kernel 2.6.14]
 
* [http://lkml.org/lkml/2005/9/23/97 Patch for kernel 2.6.14]
 +
* [http://www.xenotime.net/linux/SATA/2.6.15-rc/libata_suspend.patch Patch for kernel 2.6.15-rc4]
 +
* [http://tpctl.sourceforge.net/tmp/sata_pm.2.6.15-rc6.patch Patch for kernels 2.6.15-rc6 through 2.6.15]
  
Some distributions already include this patch (e.g., {{Ubuntu}} Breezy), but some don't (e.g., {{Fedora}} 4).
+
Some distributions already include this patch (e.g., {{Ubuntu}} Breezy, {{Gentoo}}'s gentoo-sources 2.6.15-r1), but some don't (e.g., {{Fedora}} 4). If your distribution doesn't include the patch, you will need to compile your own kernel with this patch included.
 +
 
 +
===Links===
 +
* RedHat Bugzilla [https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=169201 bug 169201: "SATA drives fail on laptop suspend"]
 +
* [http://lkml.org/lkml/2005/11/15/385 Fix to libata.h recommended on LKML] in case you get "ata: abnormal state 0x80 on port 0x1F7"
 +
* RedHat Bugzilla [https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=183138 bug 183138": "SATA failure after pm-suspend/resume ata1: handling error/timeout"]
  
 
==Failed resume from suspend to disk==
 
==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.
+
Suspend to disk (using [[swsusp]] or [[Software Suspend 2]]) 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==
 
==No DMA on DVD drive==
Line 52: Line 56:
 
As a result, the optical drive is slow, and in particular, too slow to play video DVDs.
 
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:
+
One workaround is to use the <tt>ata_piix</tt> driver (instead of the IDE driver) for the optical drive. This requires enabling the ATAPI support of the <tt>ata_piix</tt> driver (which as of 2.6.2x kernels, is working fine but wasn't stable in kernels before 2.6.18). You must also make sure that the IDE driver (<tt>ide-generic</tt>) does not grab the devices before <tt>ata_piix</tt>.  
  
* Grab the latest kernel, since these feature are under active development (these instructions where tested with 2.6.14-rc2 and 2.6.14; they will not work with 2.6.13 or earlier).
+
* Grab a recent kernel (must be 2.6.18 or newer)
* Pass the {{bootparm|hdc|noprobe}} kernel/module argument, or disable the IDE driver completely.
+
* Do one of the following:
* 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.
+
** Enable the <tt>ata_piix</tt> and <tt>libata</tt> drivers as built-in,
* Use {{cmd|lspci -vn|}} to check whether one of the following chipsets is used in the Thinkpad:
+
** Enable <tt>ata_piix</tt> and <tt>libata</tt> as modules (this is often the default) and add "<tt>options libata atapi_enabled=1</tt>" to your {{path|/etc/modprobe.conf}} (or the equivalent in your distribution).  
 +
* Do one of the following:
 +
** Disable the IDE system.
 +
** Build the IDE driver as built-in (this is often the default) and add the {{bootparm|hdc|noprobe}} kernel argument (e.g., in in {{path|/boot/grub/menu.lst}} or {{path|/etc/lilo.conf}}. Don't forget to run lilo after changes).
 +
** Build the IDE driver as module and add "<tt>options ide hdc=noprobe</tt>" to your {{path|/etc/modprobe.conf}} (or the equivalent in your distribution).
 +
* If you chose to use modules above, regenerate your <tt>initrd</tt> file.
 +
 
 +
Note : If you are using a ''Debian Sid'' system, and want to use Debian precompiled kernels, then type the following command in a ''root'' shell (This creates a new <tt>initrd</tt> with enabled ATAPI support of <tt>ata_piix</tt> and loads <tt>ata_piix</tt> before the IDE driver):
 +
'''# echo options libata atapi_enabled=1>/etc/modprobe.d/atapienable && update-initramfs -u'''
 +
(this is apparently not necessary with newer kernels)
 +
 
 +
<b>The following is likely obsolete with recent kernels</b>
 +
Note : If your work was successful, your CD-ROM drive will no longer be accessible through /dev/hdc, but /dev/scd0 or /dev/sr0.
 +
 
 +
If this all doesn't work, use {{cmd|lspci -vn|}} to check whether one of the following chipsets is used in the Thinkpad:
 
{| border="1" cellspacing="0" cellpadding="2"
 
{| border="1" cellspacing="0" cellpadding="2"
 
|-
 
|-
Line 72: Line 90:
 
|Intel 6300ESB PATA Storage Controller
 
|Intel 6300ESB PATA Storage Controller
 
|}
 
|}
 +
If yes, enable support for these chipsets has to be enabled by setting
 +
#define ATA_ENABLE_PATA
 +
in {{path|include/linux/libata.h}} (and report your ThinkPad model in the discussion page).
  
If yes, the support for these chipsets has to be enabled by setting
+
There have been reports that DVD burning doesn't work under this configuration, but it seems to work with kernel 2.6.14 and later (tested on a ThinkPad {{T43}} and {{T43p}} with a [[UltraBay Slim DVD Multi-Burner Plus]]).
#define ATA_ENABLE_PATA
 
in {{path|include/linux/libata.h}}
 
* Add the {{bootparm|libata.atapi_enabled|1}} boot parameter to your kernel command line, e.g. in {{path|/boot/grub/menu.lst}}, or pass {{bootparm|atapi_enabled|1}} as argument to {{cmd|modprobe|}}
 
  
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).
+
===Problem with kernel 2.6.16 kernel and suspend2 2.2.1===
 +
DVD access fails with kernel 2.6.16.* and [[Software Suspend 2|suspend2]] 2.2.1. Thia is fixed by later versions of suspend2, or by deleting the 4000-libata-rollup-2616-rc3.patch (see
 +
[http://lists.suspend2.net/lurker/message/20060322.082452.873dc526.en.html this post notice] by Alexander E. Patrakov).
  
{{NOTE|If you are aware of a more reliable solution to this issue, please update this page.}}
+
===Links===
 +
* RedHat Bugzilla [https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=163418 bug 163418: "can't enable DMA on DVD drive"]
 +
* Enabling DMA on a SATA DVD drive, kernel 2.6.18 [http://thomer.com/howtos/dma_on_sata_dvd.html]
  
 
==No DMA on system hard disk==
 
==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 {{path|/dev/sda}} and DMA is enabled. With the IDE driver, it shows as {{path|/dev/hda}} and DMA is disabled.
+
In recent Linux kernels, there are two modules capable of handling the ICH6 disk controller:
 +
* <tt>ata_piix</tt>: the disk shows as {{path|/dev/sda}} and DMA is enabled.
 +
* Generic IDE driver (<tt>ide-disk</tt>): the disk shows as {{path|/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 {{bootparm|hda|noprobe}} kernel argument. The driver will then be handled by the SATA driver. Note that this will change its device name to {{path|/dev/sda}} (which may require changes in {{path|/etc/fstab}} and the boot loader) and may cause other problems as listed above.
+
The simplest way to enable DMA is to force the IDE driver to ignore the system hard disk by passing the {{bootparm|hda|noprobe}} and {{bootparm|hda|none}} kernel argument. The driver will then be handled by the <tt>ata_piix</tt> driver. Note that this will change its device name to {{path|/dev/sda}} (which may require changes in {{path|/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.)
 
(Observed on a ThinkPad T43 with Fedora Core kernel 2.6.13-1.1526_FC4.)
 +
(Observed on a ThinkPad X40 with Debian kernel 2.6.18-4-686.) [[User:Hendry|Hendry]] 20:05, 11 June 2007 (UTC)
 +
 +
It may be necessary to set CONFIG_IDE to n and not pass the parameters mentioned above.
 +
 +
(Observed on a ThinkPad T60 with gentoo kernel 2.6.26)
  
 
==No SMART support==
 
==No SMART support==
  
The Linux SATA system currently does not support SMART commands (e.g., via smartctl). This is under development.  
+
Prior to kernel 2.6.15, the Linux SATA system did not support SMART commands (e.g., via smartctl).
  
A patch is available:
+
The necessary capability is "libata pass-through", which was incorporated into Linux 2.6.15-rc1 and later. A patch is available for older kernels:
 
* Kernel 2.6.12: http://rtr.ca/dell_i9300/kernel/kernel-2.6.12/03_libata_passthru.patch
 
* 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.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
+
* Kernel 2.6.14: http://www.foo.fh-furtwangen.de/~koenigr/02_libata_passthru.fixed.again.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:
 
After applying the patch, run smartctl with the "-d ata" parameter:
 
:{{cmdroot|smartctl -d ata -a /dev/sda}}
 
:{{cmdroot|smartctl -d ata -a /dev/sda}}
  
(Tested on ThinkPad T43 with kernel 2.6.13.1.)
+
From smartmontools version 5.37 "-d sat" is preferred to "-d ata". The smartctl command will auto-detect SATA disks so:
 +
:{{cmdroot|smartctl -a /dev/sda}}
 +
should just work. The smartd daemon still requires "-d sat" in /etc/smartd.conf .
  
 
==No disk power management==
 
==No disk power management==
  
The Linux SATA system currently does not support power management commands. This is under development.
+
Prior to kernel 2.6.15, the Linux SATA system did not support power management commands on these models.
  
The above patches for SMART support resolves this, as it also enables the following commands:
+
The above patches for SMART support resolves this, and in particular enables the following commands:
 
* {{cmdroot|hdparm -y}} (spin down)
 
* {{cmdroot|hdparm -y}} (spin down)
 
* {{cmdroot|hdparm -S num}} (automatic spin down timeout)
 
* {{cmdroot|hdparm -S num}} (automatic spin down timeout)
Line 115: Line 148:
 
(Tested with patched kernels 2.6.13.1 and 2.6.12-4 and a 60GB 7200RPM disk model HTS726060M9AT00.)
 
(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 {{path|/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 {{path|/proc/acpi/ibm/thermal}} values corresponds to the disk's built-in temperature sensor).
+
Refer to [[How to make use of Harddisk Power Management features]] for details about using
 +
HD power management. Refer to [[Laptop-mode]] if you are interested into spinning down your HD.
  
 
==No disk information==
 
==No disk information==
With mainline kernels (as of 2.6.14-rc2), the disk information cannot be read via either of:
+
 
 +
Prior to kernel 2.6.15, on these models the disk information could not be read by the standard commands such as:
 
*{{cmdroot|hdparm -i /dev/sda}}
 
*{{cmdroot|hdparm -i /dev/sda}}
 
*{{cmdroot|hdparm -I /dev/sda}}
 
*{{cmdroot|hdparm -I /dev/sda}}
 
The latter is fixed by the above patch for SMART support.
 
The latter is fixed by the above patch for SMART support.
 +
 +
==No swapping of UltraBay device==
 +
 +
The <tt>ata_piix</tt> driver in mainline Linux kernels supports hot-swapping and warm-swapping of PATA and SATA devices. This requires kernel 2.6.18 or newer (with older kernels, you must power off the laptop before swapping such devices). See [[How to hotswap Ultrabay devices#When_using_the_ata_piix_driver|How to hotswap Ultrabay devices]] for further information.
 +
 +
Swapping of the [[Ultrabay Slim Battery]] works out-of-the box.
  
 
==BIOS error 2010 on user-installed hard disk==
 
==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]].
 
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]].
 +
 +
==CompactFlash module doesn't work==
 +
 +
Normally, PATA disks can be replaced with a solid-state [[CompactFlash]] module using a cheap PATA-to-CompactFlash adapter. However, there is a [http://thread.gmane.org/gmane.linux.ide/22400 report] that replacing the system disk with CompactFlash fails on a ThinkPad {{X41}}, possibly due to the SATA-to-PATA bridge. If so, the problem would probably occur also on the {{X41T}}, {{T43}}, {{T43p}} and {{R52}}.
 +
I (KotCzarny) can confirm that {{X41T}} has this issue. READ is OK, but every attempt to do a WRITE results in timeouts as listed in gmane report. A quick and dirty workaround is to use generic ide driver (not sata one) to disable DMA. You won't get high speeds but at least it will work.
 +
 +
'''Update''' please check [[Compact Flash boot drive]] for more current information on using Compact Flash to boot
 +
 +
==RHEL3.0 Update 7 on T60p==
 +
 +
RHEL3.0 Update 7 will install on a {{T60p}}, but you need to make an adjustment.  Both uni-processor and SMP kernels get installed, with the SMP kerrnel the default.  However, the SMP kernel can't seem to find the disk drive.  You can work around this by use "e" at the GRUB kernel prompt, then on the "kernel" line appending " noapic".  After the system boots, you'll want to edit /boot/grub/grub.conf to add the " noapic" option to the kernel line as well.
 +
 +
==Mandriva 2006 on T60==
 +
 +
Mandriva 2006.0 has a problem with SATA on a {{T60}}, to fix this you need to make an adjustment. The install procedure can't seem to find the SATA disk drive, you can work around this by adding the "noapic" kernel option during CD/DVD boot. You *might* need to add this to lilo or GRUB for normal operations, after install completes. The problem with not using apic during normal operations is that you might have problems with power management, please see article on [[Software Suspend 2]]
 +
 +
==Problem burning CD/DVD==
 +
 +
To a CD/DVD problem, try to burn a CD/DVD as "root"-user on command-line with the option "-dummy" and "-v" enabled, do not use K3B or similar. Doing so you will get more informations and waste less CD/DVD's.
 +
 +
Experiment with the parameters "burnfree" and "dev". With cdrecord on debian etch, burnfree seems not work, disable it. With wodim on debian etch: try parameter "dev=/dev/scd0", the default "dev=1,0,0" seems not to work.
 +
 +
==Spurious NCQ completions==
 +
 +
It was initially thought the HDD firmware support for NCQ was buggy ([http://lkml.org/lkml/2007/6/6/15 LKML posting] and [http://lkml.org/lkml/2007/6/6/195 LKML posting]).
 +
It was later found that it was a driver misinterpretation and there is no hardware problem ([http://article.gmane.org/gmane.linux.ide/26012 newsgroup posting]).
 +
 +
If you have an old kernel and get some warnings about spurious NCQ completions, you can safely ignore them. You are advised, anyway, to upgrade to a recent kernel.

Latest revision as of 20:16, 14 June 2009

Some ThinkPad models use an Intel ICH6-M SATA/PATA 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.

Hint:
The information on this page is outdated. As long as you have a fairly recent distribution with kernel 2.6.19 or newer, none of the issues described here apply

Models using a SATA disk interface

Models 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:

NOTE!
Some of these problems (namely SMART support, power management and disk information) are solved in Linux 2.6.15 with the inclusion of libata pass-through. See the SATA driver features, software status and hardware status.

Hang on resume from suspend to RAM

Linux kernels prior to 2.6.16 (ata_piix) and 2.6.19 (ahci) 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) fixes this by adding SATA power management support.

Kernel 2.6.16 and later fixes this problem for most systems. The Thinkpad T60 and X60s still need some patches to get resume working using 2.6.16, see here. The T60p resumes properly with 2.6.17-rc6, the T60 and X60 should also. You need to enable ata_piix and disable AHCI in the bios. The latest fedora (FC5) 2.6.17 kernel seems to have fixed the resume problem on the T60p, still need to disable AHCI though. Applying this FC5 patch makes suspend-to-ram work with AHCI enabled.

Patches

Some distributions already include this patch (e.g., Ubuntu Breezy, Gentoo's gentoo-sources 2.6.15-r1), but some don't (e.g., Fedora 4). If your distribution doesn't include the patch, you will need to compile your own kernel with this patch included.

Links

Failed resume from suspend to disk

Suspend to disk (using swsusp or Software Suspend 2) 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.

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 the ata_piix driver (instead of the IDE driver) for the optical drive. This requires enabling the ATAPI support of the ata_piix driver (which as of 2.6.2x kernels, is working fine but wasn't stable in kernels before 2.6.18). You must also make sure that the IDE driver (ide-generic) does not grab the devices before ata_piix.

  • Grab a recent kernel (must be 2.6.18 or newer)
  • Do one of the following:
    • Enable the ata_piix and libata drivers as built-in,
    • Enable ata_piix and libata as modules (this is often the default) and add "options libata atapi_enabled=1" to your /etc/modprobe.conf (or the equivalent in your distribution).
  • Do one of the following:
    • Disable the IDE system.
    • Build the IDE driver as built-in (this is often the default) and add the hdc=noprobe kernel argument (e.g., in in /boot/grub/menu.lst or /etc/lilo.conf. Don't forget to run lilo after changes).
    • Build the IDE driver as module and add "options ide hdc=noprobe" to your /etc/modprobe.conf (or the equivalent in your distribution).
  • If you chose to use modules above, regenerate your initrd file.

Note : If you are using a Debian Sid system, and want to use Debian precompiled kernels, then type the following command in a root shell (This creates a new initrd with enabled ATAPI support of ata_piix and loads ata_piix before the IDE driver):

# echo options libata atapi_enabled=1>/etc/modprobe.d/atapienable && update-initramfs -u

(this is apparently not necessary with newer kernels)

The following is likely obsolete with recent kernels Note : If your work was successful, your CD-ROM drive will no longer be accessible through /dev/hdc, but /dev/scd0 or /dev/sr0.

If this all doesn't work, 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, enable support for these chipsets has to be enabled by setting

#define ATA_ENABLE_PATA

in include/linux/libata.h (and report your ThinkPad model in the discussion page).

There have been reports that DVD burning doesn't work under this configuration, but it seems to work with kernel 2.6.14 and later (tested on a ThinkPad T43 and T43p with a UltraBay Slim DVD Multi-Burner Plus).

Problem with kernel 2.6.16 kernel and suspend2 2.2.1

DVD access fails with kernel 2.6.16.* and suspend2 2.2.1. Thia is fixed by later versions of suspend2, or by deleting the 4000-libata-rollup-2616-rc3.patch (see this post notice by Alexander E. Patrakov).

Links

No DMA on system hard disk

In recent Linux kernels, there are two modules capable of handling the ICH6 disk controller:

  • ata_piix: the disk shows as /dev/sda and DMA is enabled.
  • Generic IDE driver (ide-disk): the disk 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 and hda=none kernel argument. The driver will then be handled by the ata_piix 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.) (Observed on a ThinkPad X40 with Debian kernel 2.6.18-4-686.) Hendry 20:05, 11 June 2007 (UTC)

It may be necessary to set CONFIG_IDE to n and not pass the parameters mentioned above.

(Observed on a ThinkPad T60 with gentoo kernel 2.6.26)

No SMART support

Prior to kernel 2.6.15, the Linux SATA system did not support SMART commands (e.g., via smartctl).

The necessary capability is "libata pass-through", which was incorporated into Linux 2.6.15-rc1 and later. A patch is available for older kernels:

After applying the patch, run smartctl with the "-d ata" parameter:

# smartctl -d ata -a /dev/sda

From smartmontools version 5.37 "-d sat" is preferred to "-d ata". The smartctl command will auto-detect SATA disks so:

# smartctl -a /dev/sda

should just work. The smartd daemon still requires "-d sat" in /etc/smartd.conf .

No disk power management

Prior to kernel 2.6.15, the Linux SATA system did not support power management commands on these models.

The above patches for SMART support resolves this, and in particular 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.)

Refer to How to make use of Harddisk Power Management features for details about using HD power management. Refer to Laptop-mode if you are interested into spinning down your HD.

No disk information

Prior to kernel 2.6.15, on these models the disk information could not be read by the standard commands such as:

  • # hdparm -i /dev/sda
  • # hdparm -I /dev/sda

The latter is fixed by the above patch for SMART support.

No swapping of UltraBay device

The ata_piix driver in mainline Linux kernels supports hot-swapping and warm-swapping of PATA and SATA devices. This requires kernel 2.6.18 or newer (with older kernels, you must power off the laptop before swapping such devices). See How to hotswap Ultrabay devices for further information.

Swapping of the Ultrabay Slim Battery works out-of-the box.

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.

CompactFlash module doesn't work

Normally, PATA disks can be replaced with a solid-state CompactFlash module using a cheap PATA-to-CompactFlash adapter. However, there is a report that replacing the system disk with CompactFlash fails on a ThinkPad X41, possibly due to the SATA-to-PATA bridge. If so, the problem would probably occur also on the X41 Tablet, T43, T43p and R52. I (KotCzarny) can confirm that X41 Tablet has this issue. READ is OK, but every attempt to do a WRITE results in timeouts as listed in gmane report. A quick and dirty workaround is to use generic ide driver (not sata one) to disable DMA. You won't get high speeds but at least it will work.

Update please check Compact Flash boot drive for more current information on using Compact Flash to boot

RHEL3.0 Update 7 on T60p

RHEL3.0 Update 7 will install on a T60p, but you need to make an adjustment. Both uni-processor and SMP kernels get installed, with the SMP kerrnel the default. However, the SMP kernel can't seem to find the disk drive. You can work around this by use "e" at the GRUB kernel prompt, then on the "kernel" line appending " noapic". After the system boots, you'll want to edit /boot/grub/grub.conf to add the " noapic" option to the kernel line as well.

Mandriva 2006 on T60

Mandriva 2006.0 has a problem with SATA on a T60, to fix this you need to make an adjustment. The install procedure can't seem to find the SATA disk drive, you can work around this by adding the "noapic" kernel option during CD/DVD boot. You *might* need to add this to lilo or GRUB for normal operations, after install completes. The problem with not using apic during normal operations is that you might have problems with power management, please see article on Software Suspend 2

Problem burning CD/DVD

To a CD/DVD problem, try to burn a CD/DVD as "root"-user on command-line with the option "-dummy" and "-v" enabled, do not use K3B or similar. Doing so you will get more informations and waste less CD/DVD's.

Experiment with the parameters "burnfree" and "dev". With cdrecord on debian etch, burnfree seems not work, disable it. With wodim on debian etch: try parameter "dev=/dev/scd0", the default "dev=1,0,0" seems not to work.

Spurious NCQ completions

It was initially thought the HDD firmware support for NCQ was buggy (LKML posting and LKML posting). It was later found that it was a driver misinterpretation and there is no hardware problem (newsgroup posting).

If you have an old kernel and get some warnings about spurious NCQ completions, you can safely ignore them. You are advised, anyway, to upgrade to a recent kernel.