diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 289c4f8..1af5203 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -1704,6 +1704,15 @@ static int ahci_do_softreset(struct ata_link *link, unsigned int *class,
 
 	/* wait for link to become ready */
 	rc = ata_wait_after_reset(link, deadline, check_ready);
+
+	/*
+	* Soft reset fails on some ATI chips with IPMS set when PMP
+	* is enabled but SATA HDD/ODD is connected to SATA port.
+	* A workaround shall be applied in the calling function
+	* and we dont want to print error message without trying first
+	*/
+	if (rc == -EIO)
+		return rc;
 	if (rc == -EBUSY && hpriv->flags & AHCI_HFLAG_SRST_TOUT_IS_OFFLINE) {
 		/*
 		 * Workaround for cases where link online status can't
@@ -1789,6 +1798,14 @@ static int ahci_sb600_softreset(struct ata_link *link, unsigned int *class,
 					"and retrying\n");
 			rc = ahci_do_softreset(link, class, 0, deadline,
 					       ahci_check_ready);
+		} else {
+			/* since no message was printed in ahci_do_softreset
+			* when ret value was -EIO and since we are not trying
+			* any work around, we should print the err msg here,
+			* (ideally we should not reach here)
+			*/
+			ata_link_printk(link, KERN_ERR, "softreset failed "
+					"(device not ready)\n");
 		}
 	}

