[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Question. Inject virq to Domain on Xen ARM.



On Wed, 15 Apr 2015, Ian Campbell wrote:
> On Mon, 2015-04-13 at 17:08 +0900, ììì wrote:
> > HI
> > 
> > I have a question about Inject virq to Domain on Xen ARM.
> > 
> >  
> > 
> > Function 'vgic_vcpu_inject_irq' is inject virq to target vcpu.
> > 
> > At the end of vgic_vcpu_inject_irq, like below
> > 
> > --------------------------------------------------------------
> > 
> > running = v->is_running;
> > 
> > vcpu_unblock(v); 
> > 
> > if ( running && v != current )
> > 
> >         smp_send_event_check_mask(cpumask_of(v->processor)); 
> > 
> > --------------------------------------------------------------
> > 
> > In code if target vcpu is not current, send SGI to v->processor;
> > 
> >  
> > 
> > I think this function help inject virq to target vcpu immediately in
> > Xen 4.5.0.
> > 
> > In Xen 4.5.0, vcpu that receive SGI, will execute
> > 'enter_hypervisor_head' function
> > 
> > and move irq from lr_queue to linked register. 
> > 
> >  
> > 
> > But I think that in Xen 4.4.X above code is not help inject virq.
> > because there is code
> > 
> > to move irq from lr_queue to linked register in hyp handler routine.
> 
> The virq injection stuff was heavily reworked by Stefano between 4.4 and
> 4.5, to try and avoid things like maintenance interrupts.
> 
> But I'm unsure what you actual question is, but on 4.4 I think the
> actual injection happens (as implied by the comment next to the
> GIC_SGI_EVENT_CHECK handler) in the return path, specifically in
> leave_hypervisor_tail.

The question is not clear to me too.

On Xen 4.4 the injection on vcpu != current happens by sending an SGI at
the end of vgic_vcpu_inject_irq. Then on the other vcpu
leave_hypervisor_tail will call gic_inject that is going to take care of
injecting the interrupt.

On Xen 4.5 vgic_vcpu_inject_irq also sends an SGI to the other vcpu,
which is going to clear old LRs from enter_hypervisor_head and inject
new interrupts from gic_inject, still called by leave_hypervisor_tail.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.