Re: [PATCH] ahci: improve and limit spurious interrupt messages, take#2
From: Jeff Garzik <hidden>
Date: 2007-01-25 01:24:44
Tejun Heo wrote:
- /* ignore interim PIO setup fis interrupts */
- if (ata_tag_valid(ap->active_tag) && (status & PORT_IRQ_PIOS_FIS))
- return;
+ if ((status & PORT_IRQ_D2H_REG_FIS) &&
+ !(pp->seen_status & PORT_IRQ_D2H_REG_FIS)) {
+ ata_port_printk(ap, KERN_INFO, "D2H reg with I during NCQ, "
+ "this message won't be printed again\n");
+ pp->seen_status |= PORT_IRQ_D2H_REG_FIS;
+ } else if ((status & PORT_IRQ_DMAS_FIS) &&
+ !(pp->seen_status & PORT_IRQ_DMAS_FIS)) {
+ ata_port_printk(ap, KERN_INFO, "DMAS FIS during NCQ, "
+ "this message won't be printed again\n");
+ pp->seen_status |= PORT_IRQ_DMAS_FIS;
+ } else if (status & PORT_IRQ_SDB_FIS && pp->spurious_sdb_cnt < 10) {
+ /* SDB FIS containing spurious completions might be
+ * dangerous, we need to know more about them. Print
+ * more of it.
+ */
+ const u32 *f = pp->rx_fis + RX_FIS_SDB;This if/else/else tree does not take into account the possiblity that more than one bit may be set. Jeff