Hello, Edward. One more question.
> > > > > >I think this will work (adapted from sil_interrupt(): > > > > > >static void sil_irq_clear(struct ata_port *ap) > > >{ > > > struct sil_port_priv *pp = ap->private_data; > > > struct Port_Registers *port_base = pp->pregs; > > > unsigned long port_int; > > > > > > port_int = readl((void *)&port_base->IntStatus); > > > writel(port_int, &port_base->IntStatus); > > >} > > > > > >I'm assuming that this entry point is expected to clear all interrupts, no? > > > > Correct. > > > > I'll verify with the error register clearing part of the original > driver and submit a patch. > Command completion interrupt is automatcally cleared by reading PORT_SLOT_STAT register (SlotStatus in the original driver), and error registers should be manually cleared by writing to PORT_IRQ_STAT (IntStatus). I agree that above code should clear both. Just wanna verify. Have you tested it and/or do you have any information confirming this? If we don't have any further info, I think we should read PORT_SLOT_STAT before clearing PORT_IRQ_STAT to be on the safe side. Thanks. -- tejun - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/