On Mon, 2008-03-31 at 18:23 +0800, Ke Wei wrote: > James Bottomley wrote: > > This tasklet usage doesn't quite look right. What a tasklet does is > > defer processing until after all interrupts have completed. It's > > commonly used for aggregation, which is why scsi_done simply queues for > > the block softirq (tasklet). However, for mvsas, I don't see any > > benefit to defering the work to a tasklet. > > OK, I understood. I will remove tasklet feature. > > > > > Additionally, for the non MSI case, doesn't the interrupt, which is > > level triggered, fail to deassert because we haven't cleared any > > registers? > > > I don't understood what you said. What's your meaning about non MSI case. A level triggered interrupt stays asserted until the condition causing it is removed. I've no idea what this is for mvsas, but for most SCSI cards it's a write to an ISTAT like register to acknowledge receipt of the interrupt. If you don't deassert the interrupt, it reinterrupts again as soon as you return from the interrupt routine, so you can't defer the event that would cause the interrupt to be deasserted to a tasklet or softirq otherwise you'll never get there. James -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html