Perl programmer for hire: download my resume (PDF).
John Bokma MexIT
freelance Perl programmer

Fixing the Vostro hang issue

Tuesday, August 5, 2008 | 1 comment

Some time ago, when I replaced Ubuntu 7.10 on my Dell Vostro 200 ST with Fedora 9 I bumped into an issue that prevented Fedora from booting randomly. After some searching with Google I found a solution on Dell's wiki. However, I never gave it a try. Instead, when Ubuntu 8.04 LTS came out, I installed Ubuntu instead, not expecting to run into the same issue because 7.10 worked fine (or maybe I was just lucky).

And today I decided to finally look into the issue by installing Ubuntu 8.04.1 LTS and seeing if the solution on Dell's wiki would fix the issue.

The boot issue

To do, short intro

Photo taken of the Dell hang issue.
Photo taken of the Dell hang issue.
BusyBox v1.1.3 (Debian 1:1.1-3-5ubuntu12) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs) [  111-913848] ata1.00: revaildation failed (errno=-5)
[  147.035278] ata1.00: revalidation failed (errno=-5)
[  153.831363] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
[  153.831399] ata2.00: cmd a0/00:00:00:24:00/00:00:00:00:00/a0 tag 0 pio 36 in
[  153.831433] ata2.00: status: { DRDY }
[  153.968230] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
[  153.968266] ata2.00: cmd a0/00:00:00:24:00/00:00:00:00:00/a0 tag 0 pio 36 in
[  153.968299] ata2.00: status: { DRDY }
[  166.105293] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
[  166.105329] ata2.00: cmd a0/00:00:00:24:00/00:00:00:00:00/a0 tag 0 pio 36 in
[  166.105362] ata2.00: status: { DRDY }
[  172.242372] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
[  172.242407] ata2.00: cmd a0/00:00:00:24:00/00:00:00:00:00/a0 tag 0 pio 36 in
[  172.242441] ata2.00: status: { DRDY }

What is a race condition

To do, short explanation

The workaround

The workaround for the hang issue is to force the SATA driver to load before the USB driver via a script. In a terminal I typed the following command to create the script:

$ gksudo gedit /usr/share/initramfs-tools/scripts/init-top/load_ata_piix

Next I copy pasted the script from Dell's wiki page, and modified the indent; I removed some spaces:

#!/bin/sh
PREREQ=""
prereqs()
{
    echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
    prereqs
    exit 0
    ;;
esac
modprobe -Qb ata_piix

Since the above code is a script, I used chmod to make it executable (implied on Dell's wiki but not mentioned):

$ sudo chmod +x /usr/share/initramfs-tools/scripts/init-top/load_ata_piix

Next, I executed the script per instructions given on Dell's wiki:

$ sudo /usr/share/initramfs-tools/scripts/init-top/load_ata_piix

And finally I rebuild initrd in order to make the kernel probe for the SATA driver before the USB driver:

$ sudo update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-2.6.24-19-generic

At the time of writing I've rebooted the Dell Vostro 200 Slim Tower several times after the above workaround without a single issue.

Race condition related

Also today

Please post a comment | read 1 comment by jacinto | RSS feed