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-4.5 4/4] xen/arm: set GICH_HCR_NPIE if all the LRs are in use
Date: Mon, 10 Feb 2014 17:14:31 +0000 [thread overview]
Message-ID: <52F908F7.30405@linaro.org> (raw)
In-Reply-To: <alpine.DEB.2.02.1402101657030.4373@kaball.uk.xensource.com>
On 02/10/2014 04:59 PM, Stefano Stabellini wrote:
> On Fri, 7 Feb 2014, Julien Grall wrote:
>> On 07/02/14 18:56, Stefano Stabellini wrote:
>>> On return to guest, if there are no free LRs and we still have more
>>> interrupt to inject, set GICH_HCR_NPIE so that we are going to receive a
>>> maintenance interrupt when no pending interrupts are present in the LR
>>> registers.
>>> The maintenance interrupt handler won't do anything anymore, but
>>> receiving the interrupt is going to cause gic_inject to be called on
>>> return to guest that is going to clear the old LRs and inject new
>>> interrupts.
>>>
>>> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
>>> ---
>>> xen/arch/arm/gic.c | 8 +++++++-
>>> 1 file changed, 7 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
>>> index 87bd5d3..bee2618 100644
>>> --- a/xen/arch/arm/gic.c
>>> +++ b/xen/arch/arm/gic.c
>>> @@ -810,8 +810,14 @@ void gic_inject(void)
>>> gic_restore_pending_irqs(current);
>>> if (!gic_events_need_delivery())
>>> gic_inject_irq_stop();
>>> - else
>>> + else {
>>> gic_inject_irq_start();
>>> + }
>>> +
>>> + if ( !list_empty(¤t->arch.vgic.lr_pending) )
>>> + GICH[GICH_HCR] = GICH_HCR_EN | GICH_HCR_NPIE;
>>> + else
>>> + GICH[GICH_HCR] = GICH_HCR_EN;
>>
>> Any reason to not move this in the else?
>
> Yes: we need to be able to disable GICH_HCR_NPIE even if there are no
> irqs to inject.
In this case, can we simply enable/disable GICH_HCR_NPIE instead of
resetting the register every time? GICH_HCR contains other bits that
could be set in the future.
>> BTW, I think we can safely avoid to reinject the IRQ for the event channels if
>> there is pending events. It will also avoid spurious IRQ on some specific case
>> :).
>
> Currently we don't set GIC_IRQ_GUEST_PENDING for evtchn_irq if the irq
> is already inflight. I'll see if I can come up with a patch to
> streamline that behaviour.
Ok.
--
Julien Grall
next prev parent reply other threads:[~2014-02-10 17:14 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-07 18:56 [PATCH-4.5 0/4] remove maintenance interrupts Stefano Stabellini
2014-02-07 18:56 ` [PATCH-4.5 1/4] xen/arm: remove unused virtual parameter from vgic_vcpu_inject_irq Stefano Stabellini
2014-02-07 22:06 ` Julien Grall
2014-02-07 18:56 ` [PATCH-4.5 2/4] xen/arm: support HW interrupts in gic_set_lr Stefano Stabellini
2014-02-07 22:31 ` Julien Grall
2014-02-10 16:50 ` Stefano Stabellini
2014-02-07 18:56 ` [PATCH-4.5 3/4] xen/arm: do not request maintenance_interrupts Stefano Stabellini
2014-02-07 22:45 ` Julien Grall
2014-02-10 17:03 ` Stefano Stabellini
2014-02-10 17:21 ` Julien Grall
2014-02-07 23:10 ` Julien Grall
2014-02-10 17:06 ` Stefano Stabellini
2014-02-10 17:09 ` Ian Campbell
2014-02-10 17:16 ` Stefano Stabellini
2014-02-10 17:18 ` Ian Campbell
2014-02-10 17:24 ` Stefano Stabellini
2014-02-10 17:33 ` Ian Campbell
2014-02-10 17:11 ` Julien Grall
2014-02-07 18:56 ` [PATCH-4.5 4/4] xen/arm: set GICH_HCR_NPIE if all the LRs are in use Stefano Stabellini
2014-02-07 23:39 ` Julien Grall
2014-02-10 16:59 ` Stefano Stabellini
2014-02-10 17:14 ` Julien Grall [this message]
2014-02-10 17:16 ` Stefano Stabellini
2014-02-07 23:22 ` [PATCH-4.5 0/4] remove maintenance interrupts Julien Grall
2014-02-10 17:08 ` Stefano Stabellini
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=52F908F7.30405@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.