printk(KERN_WARNING "ata%u: error occurred, port reset\n", ap->id); 
printk(KERN_WARNING "ata%u: error occurred, port reset (%s%s%s%s)\n", ap->id, irq_stat & PORT_IRQ_TF_ERR ? "taskf " : "", irq_stat & PORT_IRQ_HBUS_ERR ? "hbus " : "", irq_stat & PORT_IRQ_HBUS_DATA_ERR ? "hbus_data " : "", irq_stat & PORT_IRQ_IF_ERR ? "if " : ""); 
static void ahci_intr_error(struct ata_port *ap, u32 irq_stat){	void __iomem *mmio = ap->host_set->mmio_base;	void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no);	u32 tmp;	int work;	/* stop DMA */	tmp = readl(port_mmio + PORT_CMD);	tmp &= ~PORT_CMD_START;	writel(tmp, port_mmio + PORT_CMD);	/* wait for engine to stop.  TODO: this could be	 * as long as 500 msec	 */	work = 1000;	while (work-- > 0) {		tmp = readl(port_mmio + PORT_CMD);		if ((tmp & PORT_CMD_LIST_ON) == 0)			break;		udelay(10);	}	/* clear SATA phy error, if any */	tmp = readl(port_mmio + PORT_SCR_ERR);	writel(tmp, port_mmio + PORT_SCR_ERR);	/* if DRQ/BSY is set, device needs to be reset.	 * if so, issue COMRESET	 */	tmp = readl(port_mmio + PORT_TFDATA);	if (tmp & (ATA_BUSY | ATA_DRQ)) {		writel(0x301, port_mmio + PORT_SCR_CTL);		readl(port_mmio + PORT_SCR_CTL); /* flush */		udelay(10);		writel(0x300, port_mmio + PORT_SCR_CTL);		readl(port_mmio + PORT_SCR_CTL); /* flush */	}	/* re-start DMA */	tmp = readl(port_mmio + PORT_CMD);	tmp |= PORT_CMD_START;	writel(tmp, port_mmio + PORT_CMD);	readl(port_mmio + PORT_CMD); /* flush */	printk(KERN_WARNING "ata%u: error occurred, port reset\n", ap->id);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/ad36d1a533da91d3448029b4da1113c5b880f25d/ahci.c/clean/drivers/scsi/ahci.c