Can I prevent an IDENTIFY PACKET DEVICE command to a specific device at boot?

Solution 1:

Turns out these are libata messages from the kernel resulting from ATAPI commands being sent to the DVD drive. The problem is, the ASM1061 to which the DVD is attached doesn't support ATAPI.

The solution is to edit /lib/udev/rules.d/60-persistent-storage.rules, find the line containing the word "ATAPI" and comment out the next line.

Thanks to Olli Helin for his answer to my previous post for this answer!

Solution 2:

Apparently, ASM106x and optical drives just don't go together. It works - most of the time. But then bam! the entire machine crashes, and this was the last message on screen:

ata10.00: exception Emask 0x52 SAct 0x0 SErr 0xffffffff action 0xe frozen
ata10: SError: { RecovData REcovComm UnrecovData Persist Proto HostInt PHYRdyChg PHYInt CommWake 10B8B Dispar BadCRC Handshk LinkSeq TrStaTrns UnrecFIS DevExch }
ata10.00: failed command: IDENTIFY PACKET DEVICE
ata10.00: cmd a1/00:01:00:00:00/00:00:00:00:00/0 tag 0 pio 512 in
         res 40/00:03:00:00:00/00:00:00:00:00/a0 Emask 0x56 (ATA bus error)
ata10.00: status: { DRDY }
ata10: hard resetting link

The issue also was discussed on the linux-ide mailing list: http://thread.gmane.org/gmane.linux.ide/55284

Another workaround mentioned there is libata.atapi_passthru16=0 (kernel parameter).

But in the end it seems to be a buggy SATA controller and you should avoid using it for optical drives altogether. Use a SATA port backed by another controller, or an USB adapter.