diff options
Diffstat (limited to 'drivers/scsi/libata-core.c')
-rw-r--r-- | drivers/scsi/libata-core.c | 73 |
1 files changed, 47 insertions, 26 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index 24d340aeb51..6c66877be2b 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
@@ -418,7 +418,7 @@ static const char *sata_spd_string(unsigned int spd) | |||
418 | 418 | ||
419 | void ata_dev_disable(struct ata_device *dev) | 419 | void ata_dev_disable(struct ata_device *dev) |
420 | { | 420 | { |
421 | if (ata_dev_enabled(dev)) { | 421 | if (ata_dev_enabled(dev) && ata_msg_drv(dev->ap)) { |
422 | ata_dev_printk(dev, KERN_WARNING, "disabled\n"); | 422 | ata_dev_printk(dev, KERN_WARNING, "disabled\n"); |
423 | dev->class++; | 423 | dev->class++; |
424 | } | 424 | } |
@@ -777,8 +777,11 @@ void ata_std_dev_select (struct ata_port *ap, unsigned int device) | |||
777 | void ata_dev_select(struct ata_port *ap, unsigned int device, | 777 | void ata_dev_select(struct ata_port *ap, unsigned int device, |
778 | unsigned int wait, unsigned int can_sleep) | 778 | unsigned int wait, unsigned int can_sleep) |
779 | { | 779 | { |
780 | VPRINTK("ENTER, ata%u: device %u, wait %u\n", | 780 | if (ata_msg_probe(ap)) { |
781 | ap->id, device, wait); | 781 | ata_port_printk(ap, KERN_INFO, "ata_dev_select: ENTER, ata%u: " |
782 | "device %u, wait %u\n", | ||
783 | ap->id, device, wait); | ||
784 | } | ||
782 | 785 | ||
783 | if (wait) | 786 | if (wait) |
784 | ata_wait_idle(ap); | 787 | ata_wait_idle(ap); |
@@ -946,7 +949,8 @@ void ata_port_flush_task(struct ata_port *ap) | |||
946 | * Cancel and flush. | 949 | * Cancel and flush. |
947 | */ | 950 | */ |
948 | if (!cancel_delayed_work(&ap->port_task)) { | 951 | if (!cancel_delayed_work(&ap->port_task)) { |
949 | DPRINTK("flush #2\n"); | 952 | if (ata_msg_ctl(ap)) |
953 | ata_port_printk(ap, KERN_DEBUG, "%s: flush #2\n", __FUNCTION__); | ||
950 | flush_workqueue(ata_wq); | 954 | flush_workqueue(ata_wq); |
951 | } | 955 | } |
952 | 956 | ||
@@ -954,7 +958,8 @@ void ata_port_flush_task(struct ata_port *ap) | |||
954 | ap->flags &= ~ATA_FLAG_FLUSH_PORT_TASK; | 958 | ap->flags &= ~ATA_FLAG_FLUSH_PORT_TASK; |
955 | spin_unlock_irqrestore(ap->lock, flags); | 959 | spin_unlock_irqrestore(ap->lock, flags); |
956 | 960 | ||
957 | DPRINTK("EXIT\n"); | 961 | if (ata_msg_ctl(ap)) |
962 | ata_port_printk(ap, KERN_DEBUG, "%s: EXIT\n", __FUNCTION__); | ||
958 | } | 963 | } |
959 | 964 | ||
960 | void ata_qc_complete_internal(struct ata_queued_cmd *qc) | 965 | void ata_qc_complete_internal(struct ata_queued_cmd *qc) |
@@ -1074,7 +1079,8 @@ unsigned ata_exec_internal(struct ata_device *dev, | |||
1074 | else | 1079 | else |
1075 | ata_qc_complete(qc); | 1080 | ata_qc_complete(qc); |
1076 | 1081 | ||
1077 | ata_dev_printk(dev, KERN_WARNING, | 1082 | if (ata_msg_warn(ap)) |
1083 | ata_dev_printk(dev, KERN_WARNING, | ||
1078 | "qc timeout (cmd 0x%x)\n", command); | 1084 | "qc timeout (cmd 0x%x)\n", command); |
1079 | } | 1085 | } |
1080 | 1086 | ||
@@ -1086,7 +1092,9 @@ unsigned ata_exec_internal(struct ata_device *dev, | |||
1086 | ap->ops->post_internal_cmd(qc); | 1092 | ap->ops->post_internal_cmd(qc); |
1087 | 1093 | ||
1088 | if (qc->flags & ATA_QCFLAG_FAILED && !qc->err_mask) { | 1094 | if (qc->flags & ATA_QCFLAG_FAILED && !qc->err_mask) { |
1089 | ata_dev_printk(dev, KERN_WARNING, "zero err_mask for failed " | 1095 | if (ata_msg_warn(ap)) |
1096 | ata_dev_printk(dev, KERN_WARNING, | ||
1097 | "zero err_mask for failed " | ||
1090 | "internal command, assuming AC_ERR_OTHER\n"); | 1098 | "internal command, assuming AC_ERR_OTHER\n"); |
1091 | qc->err_mask |= AC_ERR_OTHER; | 1099 | qc->err_mask |= AC_ERR_OTHER; |
1092 | } | 1100 | } |
@@ -1184,7 +1192,9 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class, | |||
1184 | const char *reason; | 1192 | const char *reason; |
1185 | int rc; | 1193 | int rc; |
1186 | 1194 | ||
1187 | DPRINTK("ENTER, host %u, dev %u\n", ap->id, dev->devno); | 1195 | if (ata_msg_ctl(ap)) |
1196 | ata_dev_printk(dev, KERN_DEBUG, "%s: ENTER, host %u, dev %u\n", | ||
1197 | __FUNCTION__, ap->id, dev->devno); | ||
1188 | 1198 | ||
1189 | ata_dev_select(ap, dev->devno, 1, 1); /* select device 0/1 */ | 1199 | ata_dev_select(ap, dev->devno, 1, 1); /* select device 0/1 */ |
1190 | 1200 | ||
@@ -1253,7 +1263,8 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class, | |||
1253 | return 0; | 1263 | return 0; |
1254 | 1264 | ||
1255 | err_out: | 1265 | err_out: |
1256 | ata_dev_printk(dev, KERN_WARNING, "failed to IDENTIFY " | 1266 | if (ata_msg_warn(ap)) |
1267 | ata_dev_printk(dev, KERN_WARNING, "failed to IDENTIFY " | ||
1257 | "(%s, err_mask=0x%x)\n", reason, err_mask); | 1268 | "(%s, err_mask=0x%x)\n", reason, err_mask); |
1258 | return rc; | 1269 | return rc; |
1259 | } | 1270 | } |
@@ -1306,18 +1317,21 @@ int ata_dev_configure(struct ata_device *dev, int print_info) | |||
1306 | unsigned int xfer_mask; | 1317 | unsigned int xfer_mask; |
1307 | int i, rc; | 1318 | int i, rc; |
1308 | 1319 | ||
1309 | if (!ata_dev_enabled(dev)) { | 1320 | if (!ata_dev_enabled(dev) && ata_msg_info(ap)) { |
1310 | DPRINTK("ENTER/EXIT (host %u, dev %u) -- nodev\n", | 1321 | ata_dev_printk(dev, KERN_INFO, "%s: ENTER/EXIT (host %u, dev %u) -- nodev\n", |
1311 | ap->id, dev->devno); | 1322 | __FUNCTION__, ap->id, dev->devno); |
1312 | return 0; | 1323 | return 0; |
1313 | } | 1324 | } |
1314 | 1325 | ||
1315 | DPRINTK("ENTER, host %u, dev %u\n", ap->id, dev->devno); | 1326 | if (ata_msg_probe(ap)) |
1327 | ata_dev_printk(dev, KERN_DEBUG, "%s: ENTER, host %u, dev %u\n", | ||
1328 | __FUNCTION__, ap->id, dev->devno); | ||
1316 | 1329 | ||
1317 | /* print device capabilities */ | 1330 | /* print device capabilities */ |
1318 | if (print_info) | 1331 | if (ata_msg_probe(ap)) |
1319 | ata_dev_printk(dev, KERN_DEBUG, "cfg 49:%04x 82:%04x 83:%04x " | 1332 | ata_dev_printk(dev, KERN_DEBUG, "%s: cfg 49:%04x 82:%04x 83:%04x " |
1320 | "84:%04x 85:%04x 86:%04x 87:%04x 88:%04x\n", | 1333 | "84:%04x 85:%04x 86:%04x 87:%04x 88:%04x\n", |
1334 | __FUNCTION__, | ||
1321 | id[49], id[82], id[83], id[84], | 1335 | id[49], id[82], id[83], id[84], |
1322 | id[85], id[86], id[87], id[88]); | 1336 | id[85], id[86], id[87], id[88]); |
1323 | 1337 | ||
@@ -1337,7 +1351,8 @@ int ata_dev_configure(struct ata_device *dev, int print_info) | |||
1337 | /* find max transfer mode; for printk only */ | 1351 | /* find max transfer mode; for printk only */ |
1338 | xfer_mask = ata_id_xfermask(id); | 1352 | xfer_mask = ata_id_xfermask(id); |
1339 | 1353 | ||
1340 | ata_dump_id(id); | 1354 | if (ata_msg_probe(ap)) |
1355 | ata_dump_id(id); | ||
1341 | 1356 | ||
1342 | /* ATA-specific feature tests */ | 1357 | /* ATA-specific feature tests */ |
1343 | if (dev->class == ATA_DEV_ATA) { | 1358 | if (dev->class == ATA_DEV_ATA) { |
@@ -1358,7 +1373,7 @@ int ata_dev_configure(struct ata_device *dev, int print_info) | |||
1358 | ata_dev_config_ncq(dev, ncq_desc, sizeof(ncq_desc)); | 1373 | ata_dev_config_ncq(dev, ncq_desc, sizeof(ncq_desc)); |
1359 | 1374 | ||
1360 | /* print device info to dmesg */ | 1375 | /* print device info to dmesg */ |
1361 | if (print_info) | 1376 | if (ata_msg_info(ap)) |
1362 | ata_dev_printk(dev, KERN_INFO, "ATA-%d, " | 1377 | ata_dev_printk(dev, KERN_INFO, "ATA-%d, " |
1363 | "max %s, %Lu sectors: %s %s\n", | 1378 | "max %s, %Lu sectors: %s %s\n", |
1364 | ata_id_major_version(id), | 1379 | ata_id_major_version(id), |
@@ -1381,7 +1396,7 @@ int ata_dev_configure(struct ata_device *dev, int print_info) | |||
1381 | } | 1396 | } |
1382 | 1397 | ||
1383 | /* print device info to dmesg */ | 1398 | /* print device info to dmesg */ |
1384 | if (print_info) | 1399 | if (ata_msg_info(ap)) |
1385 | ata_dev_printk(dev, KERN_INFO, "ATA-%d, " | 1400 | ata_dev_printk(dev, KERN_INFO, "ATA-%d, " |
1386 | "max %s, %Lu sectors: CHS %u/%u/%u\n", | 1401 | "max %s, %Lu sectors: CHS %u/%u/%u\n", |
1387 | ata_id_major_version(id), | 1402 | ata_id_major_version(id), |
@@ -1392,7 +1407,8 @@ int ata_dev_configure(struct ata_device *dev, int print_info) | |||
1392 | 1407 | ||
1393 | if (dev->id[59] & 0x100) { | 1408 | if (dev->id[59] & 0x100) { |
1394 | dev->multi_count = dev->id[59] & 0xff; | 1409 | dev->multi_count = dev->id[59] & 0xff; |
1395 | DPRINTK("ata%u: dev %u multi count %u\n", | 1410 | if (ata_msg_info(ap)) |
1411 | ata_dev_printk(dev, KERN_INFO, "ata%u: dev %u multi count %u\n", | ||
1396 | ap->id, dev->devno, dev->multi_count); | 1412 | ap->id, dev->devno, dev->multi_count); |
1397 | } | 1413 | } |
1398 | 1414 | ||
@@ -1405,8 +1421,9 @@ int ata_dev_configure(struct ata_device *dev, int print_info) | |||
1405 | 1421 | ||
1406 | rc = atapi_cdb_len(id); | 1422 | rc = atapi_cdb_len(id); |
1407 | if ((rc < 12) || (rc > ATAPI_CDB_LEN)) { | 1423 | if ((rc < 12) || (rc > ATAPI_CDB_LEN)) { |
1408 | ata_dev_printk(dev, KERN_WARNING, | 1424 | if (ata_msg_warn(ap)) |
1409 | "unsupported CDB len\n"); | 1425 | ata_dev_printk(dev, KERN_WARNING, |
1426 | "unsupported CDB len\n"); | ||
1410 | rc = -EINVAL; | 1427 | rc = -EINVAL; |
1411 | goto err_out_nosup; | 1428 | goto err_out_nosup; |
1412 | } | 1429 | } |
@@ -1418,7 +1435,7 @@ int ata_dev_configure(struct ata_device *dev, int print_info) | |||
1418 | } | 1435 | } |
1419 | 1436 | ||
1420 | /* print device info to dmesg */ | 1437 | /* print device info to dmesg */ |
1421 | if (print_info) | 1438 | if (ata_msg_info(ap)) |
1422 | ata_dev_printk(dev, KERN_INFO, "ATAPI, max %s%s\n", | 1439 | ata_dev_printk(dev, KERN_INFO, "ATAPI, max %s%s\n", |
1423 | ata_mode_string(xfer_mask), | 1440 | ata_mode_string(xfer_mask), |
1424 | cdb_intr_string); | 1441 | cdb_intr_string); |
@@ -1432,7 +1449,7 @@ int ata_dev_configure(struct ata_device *dev, int print_info) | |||
1432 | 1449 | ||
1433 | /* limit bridge transfers to udma5, 200 sectors */ | 1450 | /* limit bridge transfers to udma5, 200 sectors */ |
1434 | if (ata_dev_knobble(dev)) { | 1451 | if (ata_dev_knobble(dev)) { |
1435 | if (print_info) | 1452 | if (ata_msg_info(ap)) |
1436 | ata_dev_printk(dev, KERN_INFO, | 1453 | ata_dev_printk(dev, KERN_INFO, |
1437 | "applying bridge limits\n"); | 1454 | "applying bridge limits\n"); |
1438 | dev->udma_mask &= ATA_UDMA5; | 1455 | dev->udma_mask &= ATA_UDMA5; |
@@ -1442,11 +1459,15 @@ int ata_dev_configure(struct ata_device *dev, int print_info) | |||
1442 | if (ap->ops->dev_config) | 1459 | if (ap->ops->dev_config) |
1443 | ap->ops->dev_config(ap, dev); | 1460 | ap->ops->dev_config(ap, dev); |
1444 | 1461 | ||
1445 | DPRINTK("EXIT, drv_stat = 0x%x\n", ata_chk_status(ap)); | 1462 | if (ata_msg_probe(ap)) |
1463 | ata_dev_printk(dev, KERN_DEBUG, "%s: EXIT, drv_stat = 0x%x\n", | ||
1464 | __FUNCTION__, ata_chk_status(ap)); | ||
1446 | return 0; | 1465 | return 0; |
1447 | 1466 | ||
1448 | err_out_nosup: | 1467 | err_out_nosup: |
1449 | DPRINTK("EXIT, err\n"); | 1468 | if (ata_msg_probe(ap)) |
1469 | ata_dev_printk(dev, KERN_DEBUG, | ||
1470 | "%s: EXIT, err\n", __FUNCTION__); | ||
1450 | return rc; | 1471 | return rc; |
1451 | } | 1472 | } |
1452 | 1473 | ||
@@ -5192,7 +5213,7 @@ static void ata_host_init(struct ata_port *ap, struct Scsi_Host *host, | |||
5192 | #elif defined(ATA_DEBUG) | 5213 | #elif defined(ATA_DEBUG) |
5193 | ap->msg_enable = ATA_MSG_DRV | ATA_MSG_INFO | ATA_MSG_CTL | ATA_MSG_WARN | ATA_MSG_ERR; | 5214 | ap->msg_enable = ATA_MSG_DRV | ATA_MSG_INFO | ATA_MSG_CTL | ATA_MSG_WARN | ATA_MSG_ERR; |
5194 | #else | 5215 | #else |
5195 | ap->msg_enable = ATA_MSG_DRV | ATA_MSG_ERR; | 5216 | ap->msg_enable = ATA_MSG_DRV | ATA_MSG_ERR | ATA_MSG_WARN; |
5196 | #endif | 5217 | #endif |
5197 | 5218 | ||
5198 | INIT_WORK(&ap->port_task, NULL, NULL); | 5219 | INIT_WORK(&ap->port_task, NULL, NULL); |