diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index 5982849..d65aa86 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -1063,6 +1063,7 @@
  *	ata_dev_configure - Configure the specified ATA/ATAPI device
  *	@ap: Port on which target device resides
  *	@dev: Target device to configure
+ *	@print_info: Enable device info printout
  *
  *	Configure @dev according to @dev->id.  Generic and low-level
  *	driver specific fixups are also applied.
@@ -1073,7 +1074,8 @@
  *	RETURNS:
  *	0 on success, -errno otherwise
  */
-static int ata_dev_configure(struct ata_port *ap, struct ata_device *dev)
+static int ata_dev_configure(struct ata_port *ap, struct ata_device *dev,
+			     int print_info)
 {
 	unsigned long xfer_modes;
 	int i, rc;
@@ -1120,18 +1122,24 @@
 		dev->n_sectors = ata_id_n_sectors(dev->id);
 
 		if (ata_id_has_lba(dev->id)) {
-			dev->flags |= ATA_DFLAG_LBA;
+			const char *lba_desc;
 
-			if (ata_id_has_lba48(dev->id))
+			lba_desc = "LBA";
+			dev->flags |= ATA_DFLAG_LBA;
+			if (ata_id_has_lba48(dev->id)) {
 				dev->flags |= ATA_DFLAG_LBA48;
+				lba_desc = "LBA48";
+			}
 
 			/* print device info to dmesg */
-			printk(KERN_INFO "ata%u: dev %u ATA-%d, max %s, %Lu sectors:%s\n",
-			       ap->id, dev->devno,
-			       ata_id_major_version(dev->id),
-			       ata_mode_string(xfer_modes),
-			       (unsigned long long)dev->n_sectors,
-			       dev->flags & ATA_DFLAG_LBA48 ? " LBA48" : " LBA");
+			if (print_info)
+				printk(KERN_INFO "ata%u: dev %u ATA-%d, "
+				       "max %s, %Lu sectors: %s\n",
+				       ap->id, dev->devno,
+				       ata_id_major_version(dev->id),
+				       ata_mode_string(xfer_modes),
+				       (unsigned long long)dev->n_sectors,
+				       lba_desc);
 		} else {
 			/* CHS */
 
@@ -1148,13 +1156,14 @@
 			}
 
 			/* print device info to dmesg */
-			printk(KERN_INFO "ata%u: dev %u ATA-%d, max %s, %Lu sectors: CHS %d/%d/%d\n",
-			       ap->id, dev->devno,
-			       ata_id_major_version(dev->id),
-			       ata_mode_string(xfer_modes),
-			       (unsigned long long)dev->n_sectors,
-			       (int)dev->cylinders, (int)dev->heads, (int)dev->sectors);
-
+			if (print_info)
+				printk(KERN_INFO "ata%u: dev %u ATA-%d, "
+				       "max %s, %Lu sectors: CHS %u/%u/%u\n",
+				       ap->id, dev->devno,
+				       ata_id_major_version(dev->id),
+				       ata_mode_string(xfer_modes),
+				       (unsigned long long)dev->n_sectors,
+				       dev->cylinders, dev->heads, dev->sectors);
 		}
 
 		dev->cdb_len = 16;
@@ -1171,9 +1180,9 @@
 		dev->cdb_len = (unsigned int) rc;
 
 		/* print device info to dmesg */
-		printk(KERN_INFO "ata%u: dev %u ATAPI, max %s\n",
-		       ap->id, dev->devno,
-		       ata_mode_string(xfer_modes));
+		if (print_info)
+			printk(KERN_INFO "ata%u: dev %u ATAPI, max %s\n",
+			       ap->id, dev->devno, ata_mode_string(xfer_modes));
 	}
 
 	ap->host->max_cmd_len = 0;
@@ -1184,8 +1193,9 @@
 
 	/* limit bridge transfers to udma5, 200 sectors */
 	if (ata_dev_knobble(ap, dev)) {
-		printk(KERN_INFO "ata%u(%u): applying bridge limits\n",
-		       ap->id, dev->devno);
+		if (print_info)
+			printk(KERN_INFO "ata%u(%u): applying bridge limits\n",
+			       ap->id, dev->devno);
 		ap->udma_mask &= ATA_UDMA5;
 		dev->max_sectors = ATA_MAX_SECTORS;
 	}
@@ -1263,7 +1273,7 @@
 			continue;
 		}
 
-		if (ata_dev_configure(ap, dev)) {
+		if (ata_dev_configure(ap, dev, 1)) {
 			dev->class++;	/* disable device */
 			continue;
 		}
