} else if (lba48 && (qc->ap->flags & ATA_FLAG_PIO_LBA48)) {
                /* Unable to use DMA due to host limitation */
                tf->protocol = ATA_PROT_PIO;
-               index = dev->multi_count ? 0 : 4;
+               index = dev->multi_count ? 0 : 8;
        } else {
                tf->protocol = ATA_PROT_DMA;
                index = 16;
 {
        struct ata_queued_cmd *qc;
 
-       printk(KERN_WARNING "ata%u: PIO error\n", ap->id);
-
        qc = ata_qc_from_tag(ap, ap->active_tag);
        assert(qc != NULL);
 
+       if (qc->tf.command != ATA_CMD_PACKET)
+               printk(KERN_WARNING "ata%u: PIO error\n", ap->id);
+
        /* make sure qc->err_mask is available to 
         * know what's wrong and recover
         */