diff options
author | Robert Hancock <hancockr@shaw.ca> | 2007-02-11 19:34:44 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-02-21 04:58:17 -0500 |
commit | 2cb27853b7cbf0c908444e25c61b62fa336b88cd (patch) | |
tree | e6f7b25db7c4f41b2cde372bb9909d219dacc73b /drivers | |
parent | 4bb64fb98168981d3e5a0e790c077ff511768e84 (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')
-rw-r--r-- | drivers/ata/sata_nv.c | 20 |
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); |