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 - To unsubscribe from this list: 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