From: Julien Grall <julien.grall@linaro.org>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: julien.grall@citrix.com, xen-devel@lists.xensource.com,
Ian.Campbell@citrix.com
Subject: Re: [PATCH v6 2/5] xen/arm: inflight irqs during migration
Date: Tue, 24 Jun 2014 13:17:15 +0100 [thread overview]
Message-ID: <53A96C4B.3020900@linaro.org> (raw)
In-Reply-To: <alpine.DEB.2.02.1406241249010.19982@kaball.uk.xensource.com>
On 24/06/14 12:57, Stefano Stabellini wrote:
> On Mon, 23 Jun 2014, Julien Grall wrote:
>> Hi Stefano,
>>
>> On 23/06/14 17:37, Stefano Stabellini wrote:
>>> @@ -786,9 +837,14 @@ void vgic_vcpu_inject_irq(struct vcpu *v, unsigned int irq)
>>>
>>> spin_lock_irqsave(&v->arch.vgic.lock, flags);
>>>
>>> + set_bit(GIC_IRQ_GUEST_QUEUED, &n->status);
>>> + /* update QUEUED before MIGRATING */
>>> + smp_wmb();
>>> + if ( test_bit(GIC_IRQ_GUEST_MIGRATING, &n->status) )
>>> + goto out;
>>
>> Why do you kick the current VCPU here? It looks like useless because the migration will take care of it.
>
> With the physical follow virtual patch, the vcpu_unblock below is going
> to be mostly useless but harmless as vgic_vcpu_inject_irq is going to be called on
> the pcpu running the destination vcpu. smp_send_event_check_mask won't be called as
> v == current.
>
> On the other hand without that patch, the pcpu receiving the physical
> interrupt could be different from any of the pcpus running the vcpus
> involved in vcpu migration, therefore we would need the kick to wake up
> the destination vcpu.
If the MIGRATING bit is set it means that an IRQ is already inflight,
and therefore gic_update_one_lr will take care of injecting this IRQ to
the new VCPU by calling vgic_vcpu_inject_irq.
So kicking the new VCPU here is pointless and may unschedule another
VCPU for nothing. The latter may be able to run a bit more.
With your patch #4 (physical IRQ follow virtual IRQ), there is a tiny
range the VCPU may not run on the same pCPU where the physical IRQ as
been routed. This is the case when the VCPU is unscheduled.
Regards,
--
Julien Grall
next prev parent reply other threads:[~2014-06-24 12:17 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-23 16:36 [PATCH v6 0/5] vgic emulation and GICD_ITARGETSR Stefano Stabellini
2014-06-23 16:37 ` [PATCH v6 1/5] xen/arm: observe itargets setting in vgic_enable_irqs and vgic_disable_irqs Stefano Stabellini
2014-06-23 17:41 ` Julien Grall
2014-06-24 11:38 ` Stefano Stabellini
2014-06-24 12:07 ` Julien Grall
2014-06-24 18:04 ` Stefano Stabellini
2014-06-24 18:20 ` Julien Grall
2014-06-24 18:29 ` Stefano Stabellini
2014-06-27 15:17 ` Ian Campbell
2014-07-02 15:39 ` Stefano Stabellini
2014-07-02 15:58 ` Ian Campbell
2014-07-02 18:05 ` Stefano Stabellini
2014-06-23 16:37 ` [PATCH v6 2/5] xen/arm: inflight irqs during migration Stefano Stabellini
2014-06-23 20:14 ` Julien Grall
2014-06-24 11:57 ` Stefano Stabellini
2014-06-24 12:17 ` Julien Grall [this message]
2014-07-02 22:27 ` Stefano Stabellini
2014-06-27 15:37 ` Ian Campbell
2014-07-02 18:22 ` Stefano Stabellini
2014-06-27 15:40 ` Ian Campbell
2014-07-02 18:33 ` Stefano Stabellini
2014-07-03 9:29 ` Ian Campbell
2014-07-03 14:43 ` Stefano Stabellini
2014-06-23 16:37 ` [PATCH v6 3/5] xen/arm: support irq delivery to vcpu > 0 Stefano Stabellini
2014-06-24 13:33 ` Julien Grall
2014-06-27 15:42 ` Ian Campbell
2014-07-02 15:52 ` Stefano Stabellini
2014-06-23 16:37 ` [PATCH v6 4/5] xen/arm: physical irq follow virtual irq Stefano Stabellini
2014-06-24 13:43 ` Julien Grall
2014-07-02 18:14 ` Stefano Stabellini
2014-06-23 16:37 ` [PATCH v6 5/5] xen: introduce sched_move_irqs Stefano Stabellini
2014-06-24 6:38 ` Jan Beulich
2014-06-24 12:02 ` George Dunlap
2014-06-27 15:46 ` Ian Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53A96C4B.3020900@linaro.org \
--to=julien.grall@linaro.org \
--cc=Ian.Campbell@citrix.com \
--cc=julien.grall@citrix.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.