OK, this is a quick post for anyone who is running into issues with using Linux on a Samsung RF-711. Specifically this applies to Ubuntu Linux 12.04 64-bit.
Essentially what was happening, was that periodically my entire machine would freeze with the exception of anything currently running. This kept on happening all the time, until I wasn’t able to even use the machine for minutes at a time. Which is a real shame since this is a very powerful and nice laptop. Essentially my SATA hardware kept on hiccing up and failing to handle DMA write requests:
> dmesg
… (output abbrevated for display purposes) …
[ 485.289702] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0 [ 485.289712] ata1.00: irq_stat 0x40000001 [ 485.289720] ata1.00: failed command: READ DMA EXT [ 485.289742] ata1.00: cmd 25/00:08:c0:c6:a7/00:00:1c:00:00/e0 tag 0 dma 4096 in [ 485.289744] res 51/40:08:c0:c6:a7/00:00:1c:00:00/e0 Emask 0x9 (media error) [ 485.289747] ata1.00: status: { DRDY ERR } [ 485.289750] ata1.00: error: { UNC } [ 485.432598] ata1.00: configured for UDMA/133 [ 485.432629] ata1: EH complete [ 490.745427] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0 [ 490.745437] ata1.00: irq_stat 0x40000001 [ 490.745444] ata1.00: failed command: READ DMA EXT [ 490.745458] ata1.00: cmd 25/00:08:c0:c6:a7/00:00:1c:00:00/e0 tag 0 dma 4096 in [ 490.745460] res 51/40:08:c0:c6:a7/00:00:1c:00:00/e0 Emask 0x9 (media error) [ 490.745467] ata1.00: status: { DRDY ERR } [ 490.745472] ata1.00: error: { UNC } [ 490.887945] ata1.00: configured for UDMA/133 [ 490.887980] ata1: EH complete [ 496.201083] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0 [ 496.201093] ata1.00: irq_stat 0x40000001 [ 496.201100] ata1.00: failed command: READ DMA EXT [ 496.201113] ata1.00: cmd 25/00:08:c0:c6:a7/00:00:1c:00:00/e0 tag 0 dma 4096 in [ 496.201116] res 51/40:08:c0:c6:a7/00:00:1c:00:00/e0 Emask 0x9 (media error) [ 496.201122] ata1.00: status: { DRDY ERR } [ 496.201134] ata1.00: error: { UNC } [ 496.354593] ata1.00: configured for UDMA/133 [ 496.354618] ata1: EH complete [ 501.667841] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0 [ 501.667850] ata1.00: irq_stat 0x40000001 [ 501.667857] ata1.00: failed command: READ DMA EXT [ 501.667870] ata1.00: cmd 25/00:08:c0:c6:a7/00:00:1c:00:00/e0 tag 0 dma 4096 in [ 501.667873] res 51/40:08:c0:c6:a7/00:00:1c:00:00/e0 Emask 0x9 (media error) [ 501.667880] ata1.00: status: { DRDY ERR } [ 501.667885] ata1.00: error: { UNC } [ 501.810534] ata1.00: configured for UDMA/133 [ 501.810566] sd 0:0:0:0: [sda] Unhandled sense code [ 501.810571] sd 0:0:0:0: [sda] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 501.810588] sd 0:0:0:0: [sda] Sense Key : Medium Error [current] [descriptor] [ 501.810593] Descriptor sense data with sense descriptors (in hex): [ 501.810596] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 [ 501.810606] 1c a7 c6 c0 [ 501.810611] sd 0:0:0:0: [sda] Add. Sense: Unrecovered read error - auto reallocate failed [ 501.810616] sd 0:0:0:0: [sda] CDB: Read(10): 28 00 1c a7 c6 c0 00 00 08 00 [ 501.810627] end_request: I/O error, dev sda, sector 480757440 [ 501.810655] ata1: EH complete [ 508.210222] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0 [ 508.210228] ata1.00: irq_stat 0x40000001 [ 508.210232] ata1.00: failed command: READ DMA EXT [ 508.210240] ata1.00: cmd 25/00:08:c0:c6:a7/00:00:1c:00:00/e0 tag 0 dma 4096 in [ 508.210241] res 51/40:08:c0:c6:a7/00:00:1c:00:00/e0 Emask 0x9 (media error) [ 508.210245] ata1.00: status: { DRDY ERR } [ 508.210248] ata1.00: error: { UNC }
…
So every save, every time something needed to get loaded into memory was terribly slow. After a fair bit of searching I found that the issue related to the parameters being passed to the SATA drive where my Linux partition lives:
> sudo lshw
… (output abbrevated for display purposes) …
*-storage description: SATA controller product: 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller vendor: Intel Corporation physical id: 1f.2 bus info: pci@0000:00:1f.2 logical name: scsi0 logical name: scsi2 version: 04 width: 32 bits clock: 66MHz capabilities: storage msi pm ahci_1.0 bus_master cap_list emulated configuration: driver=ahci latency=0 resources: irq:41 ioport:e0b0(size=8) ioport:e0a0(size=4) ioport:e090(size=8) ioport:e080(size=4) ioport:e060(size=32) memory:f7606000-f76067ff *-disk description: ATA Disk product: SAMSUNG HN-M101M physical id: 0 bus info: scsi@0:0.0.0 logical name: /dev/sda version: 2AR1 size: 931GiB (1TB) capabilities: partitioned partitioned:dos configuration: ansiversion=5
The nearest bug report that I can point to on Launchpad is: Bug #550559 – hdd problems, failed command: READ FPDMA QUEUED
- Turn off SATA GEN3 support in the BIOS.
- Set the AHCI to manual and then disable it.
- Add the following kernel parameter to your grub config:
libata.force=X:noncq
You will need to edit your/etc/default/grub
file as I have below. Copy the/etc/default/grub.original
file if you don’t have the a grub file already. - Rebuild your GRUB and initramfs with:
sudo update-initramfs && sudo update-grub2
# If you change this file, run ‘update-grub’ afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n ‘Simple configuration’
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash libata.force=1:noncq”
GRUB_CMDLINE_LINUX=”libata.force=1:noncq”
Anyways, this took me a while to fix. So I’m posting in hopes that it’ll be help out someone else.