void ata_scsi_error(struct Scsi_Host *host)
 {
        struct ata_port *ap = ata_shost_to_port(host);
-       int i, repeat_cnt = ATA_EH_MAX_REPEAT;
+       int i;
        unsigned long flags;
 
        DPRINTK("ENTER\n");
                        __ata_port_freeze(ap);
 
                spin_unlock_irqrestore(ap->lock, flags);
+
+               /* initialize eh_tries */
+               ap->eh_tries = ATA_EH_MAX_TRIES;
        } else
                spin_unlock_wait(ap->lock);
 
                spin_lock_irqsave(ap->lock, flags);
 
                if (ap->pflags & ATA_PFLAG_EH_PENDING) {
-                       if (--repeat_cnt) {
-                               ata_port_printk(ap, KERN_INFO,
-                                       "EH pending after completion, "
-                                       "repeating EH (cnt=%d)\n", repeat_cnt);
+                       if (--ap->eh_tries) {
                                spin_unlock_irqrestore(ap->lock, flags);
                                goto repeat;
                        }
                        ata_port_printk(ap, KERN_ERR, "EH pending after %d "
-                                       "tries, giving up\n", ATA_EH_MAX_REPEAT);
+                                       "tries, giving up\n", ATA_EH_MAX_TRIES);
                        ap->pflags &= ~ATA_PFLAG_EH_PENDING;
                }
 
        struct ata_port *ap = link->ap;
        struct ata_eh_context *ehc = &link->eh_context;
        const char *frozen, *desc;
+       char tries_buf[6];
        int tag, nr_failed = 0;
 
        desc = NULL;
        if (ap->pflags & ATA_PFLAG_FROZEN)
                frozen = " frozen";
 
+       memset(tries_buf, 0, sizeof(tries_buf));
+       if (ap->eh_tries < ATA_EH_MAX_TRIES)
+               snprintf(tries_buf, sizeof(tries_buf) - 1, " t%d",
+                        ap->eh_tries);
+
        if (ehc->i.dev) {
                ata_dev_printk(ehc->i.dev, KERN_ERR, "exception Emask 0x%x "
-                              "SAct 0x%x SErr 0x%x action 0x%x%s\n",
-                              ehc->i.err_mask, link->sactive,
-                              ehc->i.serror, ehc->i.action, frozen);
+                              "SAct 0x%x SErr 0x%x action 0x%x%s%s\n",
+                              ehc->i.err_mask, link->sactive, ehc->i.serror,
+                              ehc->i.action, frozen, tries_buf);
                if (desc)
                        ata_dev_printk(ehc->i.dev, KERN_ERR, "%s\n", desc);
        } else {
                ata_link_printk(link, KERN_ERR, "exception Emask 0x%x "
-                               "SAct 0x%x SErr 0x%x action 0x%x%s\n",
-                               ehc->i.err_mask, link->sactive,
-                               ehc->i.serror, ehc->i.action, frozen);
+                               "SAct 0x%x SErr 0x%x action 0x%x%s%s\n",
+                               ehc->i.err_mask, link->sactive, ehc->i.serror,
+                               ehc->i.action, frozen, tries_buf);
                if (desc)
                        ata_link_printk(link, KERN_ERR, "%s\n", desc);
        }