Hello, (cc'ing Mark) Justin Madru wrote: > Well, it's good to hear that you don't think my drive is failing (sure > hope it's not failing!) Yeap, it's your DVD drive. > I posted the full dmesg in reply to Alan in > http://lkml.org/lkml/2008/12/19/30. Ah.. oops, missed the other messages. Sorry. > Also, more information about my computer can be found at: > http://jdserver.homelinux.org/bugreports/ > If you need me to run anything else not found in the above links then > let me know. Ah.. strange. The command protocol is ATAPI_PROT_NODATA and the drive should be setting DRQ to receive CDB but it's not doing that. Strange. It could be that the drive is a little bit tardy with DRQ - ie. setting DRQ after clearing BUSY and ata_piix is now successfully hitting the small window for some reason. Does the attached patch make any difference? Thanks. -- tejun
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index 4b47394..0630ac3 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c @@ -1120,6 +1120,20 @@ fsm_start: */ poll_next = (qc->tf.flags & ATA_TFLAG_POLLING); + { + int cnt = 0; + + while (!(status & (ATA_DRQ | ATA_ERR | ATA_DF)) && + cnt < 100) { + status = ap->ops->sff_check_status(ap); + cnt++; + } + + if (cnt) + ata_port_printk(ap, KERN_INFO, "XXX DRQ set after %d tries\n", + cnt); + } + /* check device status */ if (unlikely((status & ATA_DRQ) == 0)) { /* handle BSY=0, DRQ=0 as error */