[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 03/10] xen/arm: support HW interrupts, do not request maintenance_interrupts
On Wed, 19 Mar 2014, Julien Grall wrote: > >> [..] > >> > >>> void gic_dump_info(struct vcpu *v) > >>> diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c > >>> index aab490c..566f0ff 100644 > >>> --- a/xen/arch/arm/vgic.c > >>> +++ b/xen/arch/arm/vgic.c > >>> @@ -701,8 +701,7 @@ void vgic_vcpu_inject_irq(struct vcpu *v, unsigned > >>> int irq) > >>> if ( (irq != current->domain->arch.evtchn_irq) || > >>> (!test_bit(GIC_IRQ_GUEST_VISIBLE, &n->status)) ) > >>> set_bit(GIC_IRQ_GUEST_PENDING, &n->status); > >>> - spin_unlock_irqrestore(&v->arch.vgic.lock, flags); > >>> - return; > >>> + goto out; > >> > >> We don't want to kick the other VCPU every time. I think it's enough > >> when the interrupt is updated. > > > > Without maintenance interrupts, the other vcpu potentially might never > > return. We need to send an SGI to it to make sure it gets interrupted. > > Once it is interrupted, it is going to run gic_clear_lrs that clears the > > old LR and inject the new interrupt. > > I'm not entirely convince, we only need to update when you set > GIC_IRQ_GUEST_PENDING in &n->status (e.g in the if sentence). If you > don't update the IRQ status, you don't need to kick the VCPUs because > either he is already unblock or it will be schedule soon. > > Anyway this case only happen when we inject the evtchn IRQ. I think it > might need some comment as reading only the code is unclear what is done > here... Reading the code again and your reply I think you might be right, it introduces few unneeded interruptions to the other cpu. However this is one of the bits of code that gets changed by another patch, see "second irq injection while the first irq is still inflight". That patch fixes this issue and more. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |