On Wed, 15 Dec 2010, Jan Kiszka wrote: > Am 15.12.2010 09:05, Thomas Gleixner wrote: > > On Wed, 15 Dec 2010, Jan Kiszka wrote: > > > >> Am 14.12.2010 22:46, Thomas Gleixner wrote: > >>> On Mon, 13 Dec 2010, Jan Kiszka wrote: > >>>> From: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> > >>>> chip_bus_lock(desc); > >>>> retval = __setup_irq(irq, desc, action); > >>>> chip_bus_sync_unlock(desc); > >>>> > >>>> - if (retval) > >>>> + if (retval) { > >>>> + if (desc->action && !desc->action->next) > >>>> + desc->irq_data.drv_status &= ~IRQS_SHARED; > >>> > >>> This is redundant. IRQS_SHARED gets set in a code path where all > >>> checks are done already. > >> > >> Nope, it's also set before entry of __setup_irq in case we call an > >> IRQF_ADAPTIVE handler. > >> > >> We need to set it that early as we may race with IRQ events for the > >> already registered handler happening between the sharing notification > >> and the actual registration of the second handler. > > > > Hmm, ok. Though the MAKE_SHAREABLE flag should be sufficient to do the > > notification. > > For notification, yes. But we need SHARED once we reenable the line > after the notification. Darn. Will think more about it. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html