On Fri, 2006-06-02 at 09:53 +0000, Frederik Deweerdt wrote: > On Fri, Jun 02, 2006 at 11:10:10AM +0800, Zhu Yi wrote: > > On Thu, 2006-06-01 at 16:42 +0200, Frederik Deweerdt wrote: > > > This got rid of the oops for me, is it the right fix? > > > > I don't think netlink will contend with hardirqs. Can you test with this > > fix for ipw2200 driver? > > > It does work, thanks. But doesn't this add a possibility of missing > some interrupts? > cpu0 cpu1 > ==== ==== > in isr in tasklet > > ipw_enable_interrupts > |->priv->status |= STATUS_INT_ENABLED; This is unlikely. cpu0 should not receive ipw2200 interrupt since the interrupt is disabled until HERE (see below). > ipw_disable_interrupts > |->priv->status &= ~STATUS_INT_ENABLED; > |->ipw_write32(priv, IPW_INTA_MASK_R, ~IPW_INTA_MASK_ALL); > > |->ipw_write32(priv, IPW_INTA_MASK_R, IPW_INTA_MASK_ALL); > /* This is possible due to priv->lock no longer being taken > in isr */ HERE Well, this is not 100% if when the card fires two consecutive interrupts. Though unlikely, it's better to protect early than seeing some "weird" bugs one day. I proposed attached patch. If you can help to test, that will be appreciated (I cannot see the lockdep warning on my box somehow). Thanks, -yi