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

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



Yes. I confirm

irq move from lr_queue to lr in gic_inject().

 

Thanks but i have another question about vgic_vcpu_inject_irq function.

I will Start new thread.

 

-----Original Message-----
From: "Stefano Stabellini"<stefano.stabellini@xxxxxxxxxxxxx>
To: "Ian Campbell"<ian.campbell@xxxxxxxxxx>;
Cc: "ììì"<supsup5642@xxxxxxxxx>; <xen-devel@xxxxxxxxxxxxx>; "Stefano Stabellini"<Stefano.Stabellini@xxxxxxxxxxxxx>;
Sent: 2015-04-15 (ì) 20:59:53
Subject: 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®.