aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorRobert Hancock <hancockr@shaw.ca>2007-02-11 19:34:44 -0500
committerJeff Garzik <jeff@garzik.org>2007-02-21 04:58:17 -0500
commit2cb27853b7cbf0c908444e25c61b62fa336b88cd (patch)
treee6f7b25db7c4f41b2cde372bb9909d219dacc73b /drivers/ata
parent4bb64fb98168981d3e5a0e790c077ff511768e84 (diff)
sata_nv: add back some verbosity into ADMA error_handler
Some debug output in the ADMA error_handler function was removed recently, but it may be useful in certain cases, like NCQ commands timing out. Add it back in, but make it a bit more intelligent so that it only prints if command(s) are active and only prints the CPBs for those commands. That way it won't spew at inappropriate times like suspend/resume. Signed-off-by: Robert Hancock <hancockr@shaw.ca> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/sata_nv.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index ab92f208dae2..f1fea96e90bd 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -1446,6 +1446,26 @@ static void nv_adma_error_handler(struct ata_port *ap)
1446 void __iomem *mmio = pp->ctl_block; 1446 void __iomem *mmio = pp->ctl_block;
1447 int i; 1447 int i;
1448 u16 tmp; 1448 u16 tmp;
1449
1450 if(ata_tag_valid(ap->active_tag) || ap->sactive) {
1451 u32 notifier = readl(mmio + NV_ADMA_NOTIFIER);
1452 u32 notifier_error = readl(mmio + NV_ADMA_NOTIFIER_ERROR);
1453 u32 gen_ctl = readl(pp->gen_block + NV_ADMA_GEN_CTL);
1454 u32 status = readw(mmio + NV_ADMA_STAT);
1455
1456 ata_port_printk(ap, KERN_ERR, "EH in ADMA mode, notifier 0x%X "
1457 "notifier_error 0x%X gen_ctl 0x%X status 0x%X\n",
1458 notifier, notifier_error, gen_ctl, status);
1459
1460 for( i=0;i<NV_ADMA_MAX_CPBS;i++) {
1461 struct nv_adma_cpb *cpb = &pp->cpb[i];
1462 if( (ata_tag_valid(ap->active_tag) && i == ap->active_tag) ||
1463 ap->sactive & (1 << i) )
1464 ata_port_printk(ap, KERN_ERR,
1465 "CPB %d: ctl_flags 0x%x, resp_flags 0x%x\n",
1466 i, cpb->ctl_flags, cpb->resp_flags);
1467 }
1468 }
1449 1469
1450 /* Push us back into port register mode for error handling. */ 1470 /* Push us back into port register mode for error handling. */
1451 nv_adma_register_mode(ap); 1471 nv_adma_register_mode(ap);