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.stabell...@eu.citrix.com>
To: "Ian Campbell"<ian.campb...@citrix.com>;
Cc: "신정섭"<supsup5...@naver.com>; <xen-devel@lists.xen.org>;
"Stefano Stabellini"<stefano.stabell...@eu.citrix.com>;
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@lists.xen.org
http://lists.xen.org/xen-devel