Weird READ_DMA errors in dmesg

Arto Pekkanen isoa at kapsi.fi
Wed Jul 10 00:56:10 UTC 2013


I have the following device in my BSD box

# camcontrol identify ada0

pass0: <KINGSTON SVP200S360G 502ABBF0> ATA-8 SATA 3.x device
pass0: 150.000MB/s transfers (SATA 1.x, UDMA5, PIO 8192bytes)

protocol              ATA/ATAPI-8 SATA 3.x
device model          KINGSTON SVP200S360G
firmware revision     502ABBF0
serial number         50026B7227002AA4
WWN                   50026b7227002aa4
cylinders             16383
heads                 16
sectors/track         63
sector size           logical 512, physical 512, offset 0
LBA supported         117231408 sectors
LBA48 supported       117231408 sectors
PIO supported         PIO4
DMA supported         WDMA2 UDMA6
media RPM             non-rotating

Feature                      Support  Enabled   Value           Vendor
read ahead                     yes      yes
write cache                    yes      yes
flush cache                    yes      yes
overlap                        no
Tagged Command Queuing (TCQ)   no       no
Native Command Queuing (NCQ)   yes              32 tags
SMART                          yes      yes
microcode download             yes      yes
security                       yes      no
power management               yes      yes
advanced power management      yes      yes     254/0xFE
automatic acoustic management  no       no
media status notification      no       no
power-up in Standby            yes      no
write-read-verify              yes      no      0/0x0
unload                         yes      yes
free-fall                      no       no
data set management (TRIM)     yes


I get a sometimes the following types of dmesg output on my Kingston V+200 SSD hd:

(ada0:ata3:0:0:0): READ_DMA. ACB: c8 00 bf fa 39 40 00 00 00 00 08 00
(ada0:ata3:0:0:0): CAM status: ATA Status Error
(ada0:ata3:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 84 (ICRC ABRT )
(ada0:ata3:0:0:0): RES: 51 84 bf fa 39 00 00 00 00 08 00
(ada0:ata3:0:0:0): Retrying command
(ada0:ata3:0:0:0): READ_DMA. ACB: c8 00 0f 75 d7 41 00 00 00 00 40 00
(ada0:ata3:0:0:0): CAM status: ATA Status Error
(ada0:ata3:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 84 (ICRC ABRT )
(ada0:ata3:0:0:0): RES: 51 84 0f 75 d7 01 01 00 00 40 00
(ada0:ata3:0:0:0): Retrying command
(ada0:ata3:0:0:0): READ_DMA. ACB: c8 00 4f bc e9 44 00 00 00 00 40 00
(ada0:ata3:0:0:0): CAM status: ATA Status Error
(ada0:ata3:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 84 (ICRC ABRT )
(ada0:ata3:0:0:0): RES: 51 84 4f bc e9 04 04 00 00 40 00
(ada0:ata3:0:0:0): Retrying command
(ada0:ata3:0:0:0): READ_DMA. ACB: c8 00 27 1a 95 40 00 00 00 00 08 00
(ada0:ata3:0:0:0): CAM status: ATA Status Error
(ada0:ata3:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 84 (ICRC ABRT )
(ada0:ata3:0:0:0): RES: 51 84 27 1a 95 00 00 00 00 08 00
(ada0:ata3:0:0:0): Retrying command
(ada0:ata3:0:0:0): READ_DMA. ACB: c8 00 cf d8 35 45 00 00 00 00 08 00
(ada0:ata3:0:0:0): CAM status: ATA Status Error
(ada0:ata3:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 84 (ICRC ABRT )
(ada0:ata3:0:0:0): RES: 51 84 cf d8 35 05 05 00 00 08 00
(ada0:ata3:0:0:0): Retrying command
(ada0:ata3:0:0:0): READ_DMA. ACB: c8 00 2f 5b ab 40 00 00 00 00 08 00
(ada0:ata3:0:0:0): CAM status: ATA Status Error
(ada0:ata3:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 84 (ICRC ABRT )
(ada0:ata3:0:0:0): RES: 51 84 2f 5b ab 00 00 00 00 08 00
(ada0:ata3:0:0:0): Retrying command
(ada0:ata3:0:0:0): READ_DMA. ACB: c8 00 9f 08 22 40 00 00 00 00 08 00
(ada0:ata3:0:0:0): CAM status: ATA Status Error
(ada0:ata3:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 84 (ICRC ABRT )
(ada0:ata3:0:0:0): RES: 51 84 9f 08 22 00 00 00 00 08 00
(ada0:ata3:0:0:0): Retrying command
(ada0:ata3:0:0:0): READ_DMA. ACB: c8 00 67 3b 3a 40 00 00 00 00 08 00
(ada0:ata3:0:0:0): CAM status: ATA Status Error
(ada0:ata3:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 84 (ICRC ABRT )
(ada0:ata3:0:0:0): RES: 51 84 67 3b 3a 00 00 00 00 08 00
(ada0:ata3:0:0:0): Retrying command
(ada0:ata3:0:0:0): READ_DMA. ACB: c8 00 4f 27 8d 44 00 00 00 00 40 00
(ada0:ata3:0:0:0): CAM status: ATA Status Error
(ada0:ata3:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 84 (ICRC ABRT )
(ada0:ata3:0:0:0): RES: 51 84 4f 27 8d 04 04 00 00 40 00
(ada0:ata3:0:0:0): Retrying command

This is just a sample of the output. ACB and RES parameters seem to vary.

I have a geli-encrypted root partition on it, and data set management (wear
leveling) enabled on the UFS2 filesystem. The encryption (AES-256-CBC) is
assisted by padlock and the padlock.ko kernel module. The motherboard on the box
is some 1.2 Ghz VIA C7 CPU based EPIA, cannot remember which ...

The disk seems to work just fine, I have never gotten any errors while writing
or reading stuff from the disk, as far as I know. The commands are retried, and
maybe they succeed after all?

Are the above errors dangerous? Any idea what causes them?

Also, I would like to know if BIO_DELETE (ssd trim) commands are passed thru the
geli layer to the actual block device.

Thanks beforehand.

-- 
Arto Pekkanen, säätäjä
ksym at IRCnet


More information about the freebsd-hardware mailing list