Bastiaan Jacques wrote:
I was looking at ahci_host_intr() when I noticed something strange: it always
returns 1. Now, that alone is odd because when a function is successful it
ordinarily returns 0 (zero).
But more importantly, it is called in ahci_interrupt():
if (!ahci_host_intr(ap, qc))
if (ata_ratelimit())
dev_printk(KERN_WARNING, host_set->dev,
"unhandled interrupt on port %u\n",
i);
So that if-statement is always false; this seems like a logic error to me.
Its dead code at present, yes.
Back to ahci_host_intr itself. it does:
serr = readl(port_mmio + PORT_SCR_ERR);
writel(serr, port_mmio + PORT_SCR_ERR);
This looks like first we are reading a value from the port, and then writing
the same value back without modification. Why?
Standard write-1s-to-clear register behavior.
Jeff
-
: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html