[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: do not unmask disabled IRQ on eoi.
On Fri, 2010-10-22 at 09:29 +0100, Jan Beulich wrote: > >>> On 22.10.10 at 10:07, Ian Campbell <Ian.Campbell@xxxxxxxxxxxxx> wrote: > > On Fri, 2010-10-22 at 08:41 +0100, Jan Beulich wrote: > >> >>> On 21.10.10 at 15:36, Stefano Stabellini > >> >>> <stefano.stabellini@xxxxxxxxxxxxx> wrote: > >> > --- a/drivers/xen/events.c > >> > +++ b/drivers/xen/events.c > >> > @@ -436,21 +436,50 @@ static bool identity_mapped_irq(unsigned irq) > >> > return irq < get_nr_hw_irqs(); > >> > } > >> > > >> > -static void pirq_eoi(unsigned int irq) > >> > +static void eoi_pirq(unsigned int irq) > >> > { > >> > struct irq_info *info = info_for_irq(irq); > >> > struct physdev_eoi eoi = { .irq = info->u.pirq.gsi }; > >> > - bool need_eoi; > >> > + int evtchn = evtchn_from_irq(irq); > >> > + int rc = 0, need_mask = 0; > >> > + struct shared_info *s = HYPERVISOR_shared_info; > >> > > >> > - need_eoi = pirq_needs_eoi(irq); > >> > + if (!VALID_EVTCHN(evtchn)) > >> > + return; > >> > > >> > - if (!need_eoi || !pirq_eoi_does_unmask) > >> > - unmask_evtchn(info->evtchn); > >> > + move_masked_irq(irq); > >> > >> It's not clear whether calling this function is valid when the IRQ isn't > >> really masked. > >> > >> In any case I'd suggest adding an IRQ_DISABLED check matching > >> move_native_irq()'s. > > > > Why not just call move_native_irq instead of move_masked_irq as > > appropriate? > > That was what I implied with the first part of my response. Too subtle for me ;-) > But I think the second part applies if a (the conditional) call to > move_masked_irq() would stay. Agreed, although I suspect we should know if the evtchn is masked or not at this point depending on the already known properties of the particular pirq (need_eoi, pirq_eoi_does_unmask etc). Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |