On Fri, 2012-10-12 at 14:57 +0000, Liu, Chuansheng wrote: > > On SMP an interrupt which is raised after the ack() again before the > > handler finishes, can invoke another delivery on a different CPU, > > which then sees the IRQ_INPROGESS flag, masks it and flags it > > PENDING. When the primary handler on the first CPU returns, it sees > > the PENDING flag, unmasks and invokes the handler another time. > In this case, when IRQ_INPROGRESS flag is set, on another CPU, it will > mask and ack it, if before the primary handler on the first CPU returns, > the edge interrupt is raised again, it will be lost, right? Why will the interrupt be raised again?Is not it masked?I read tglx statement as this:if the interrupt is being handled on one core, then the delivery of new interrupt can be on the second core and in that case it will see IRQ_INPROGRESS flag and it will *mask* it and set the flag as pending.So there is no chance of any new interrupt. > So I think set PENDING just confirm one time, it just depends on primary > handler > execution time and irq frequency. > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/