From: Christoffer Dall <christoffer.dall@linaro.org>
To: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
"Radim Krčmář" <rkrcmar@redhat.com>, KVM <kvm@vger.kernel.org>,
"Linux-Next Mailing List" <linux-next@vger.kernel.org>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
"Marc Zyngier" <marc.zyngier@arm.com>
Subject: Re: linux-next: manual merge of the kvm tree with Linus' tree
Date: Thu, 1 Feb 2018 11:47:07 +0100 [thread overview]
Message-ID: <20180201104707.GA21802@cbox> (raw)
In-Reply-To: <20180201125512.7bc96674@canb.auug.org.au>
Hi,
On Thu, Feb 01, 2018 at 12:55:12PM +1100, Stephen Rothwell wrote:
> Hi all,
>
> Today's linux-next merge of the kvm tree got a conflict in:
>
> virt/kvm/arm/arch_timer.c
>
> between commit:
>
> 36e5cfd410ad ("KVM: arm/arm64: Properly handle arch-timer IRQs after vtimer_save_state")
>
> from Linus' tree and commits:
>
> 70450a9fbe06 ("KVM: arm/arm64: Don't cache the timer IRQ level")
> 13e59ece5b30 ("KVM: arm/arm64: Fix incorrect timer_is_pending logic")
>
> from the kvm tree.
>
> I fixed it up (I think - see below) and can carry the fix as
> necessary. This is now fixed as far as linux-next is concerned, but any
> non trivial conflicts should be mentioned to your upstream maintainer
> when your tree is submitted for merging. You may also want to consider
> cooperating with the maintainer of the conflicting tree to minimise any
> particularly complex conflicts.
>
While the suggested fix is functional it does result in some code
duplication, and the better resolution is the following:
diff --cc virt/kvm/arm/arch_timer.c
index cc29a8148328,fb6bd9b9845e..000000000000
--- a/virt/kvm/arm/arch_timer.c
+++ b/virt/kvm/arm/arch_timer.c
@@@ -92,27 -92,18 +92,22 @@@ static irqreturn_t kvm_arch_timer_handl
{
struct kvm_vcpu *vcpu = *(struct kvm_vcpu **)dev_id;
struct arch_timer_context *vtimer;
- u32 cnt_ctl;
- if (!vcpu) {
- pr_warn_once("Spurious arch timer IRQ on non-VCPU thread\n");
- return IRQ_NONE;
- }
+ /*
+ * We may see a timer interrupt after vcpu_put() has been called which
+ * sets the CPU's vcpu pointer to NULL, because even though the timer
+ * has been disabled in vtimer_save_state(), the hardware interrupt
+ * signal may not have been retired from the interrupt controller yet.
+ */
+ if (!vcpu)
+ return IRQ_HANDLED;
vtimer = vcpu_vtimer(vcpu);
- if (!vtimer->irq.level) {
- cnt_ctl = read_sysreg_el0(cntv_ctl);
- cnt_ctl &= ARCH_TIMER_CTRL_ENABLE | ARCH_TIMER_CTRL_IT_STAT |
- ARCH_TIMER_CTRL_IT_MASK;
- if (cnt_ctl == (ARCH_TIMER_CTRL_ENABLE | ARCH_TIMER_CTRL_IT_STAT))
- kvm_timer_update_irq(vcpu, true, vtimer);
- }
+ if (kvm_timer_should_fire(vtimer))
+ kvm_timer_update_irq(vcpu, true, vtimer);
- if (unlikely(!irqchip_in_kernel(vcpu->kvm)))
+ if (static_branch_unlikely(&userspace_irqchip_in_use) &&
+ unlikely(!irqchip_in_kernel(vcpu->kvm)))
kvm_vtimer_update_mask_user(vcpu);
return IRQ_HANDLED;
Thanks,
-Christoffer
next prev parent reply other threads:[~2018-02-01 10:47 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-01 1:55 linux-next: manual merge of the kvm tree with Linus' tree Stephen Rothwell
2018-02-01 10:47 ` Christoffer Dall [this message]
2018-02-01 13:22 ` Stephen Rothwell
2018-02-01 14:05 ` Christoffer Dall
2018-02-01 14:21 ` Paolo Bonzini
2018-02-01 15:22 ` Radim Krčmář
2018-02-01 15:30 ` Paolo Bonzini
2018-02-02 0:20 ` Stephen Rothwell
2018-02-02 17:22 ` Radim Krčmář
-- strict thread matches above, loose matches on Subject: below --
2022-10-10 1:31 Stephen Rothwell
2022-07-13 6:02 Stephen Rothwell
2022-07-13 6:09 ` Paolo Bonzini
2022-06-09 0:33 Stephen Rothwell
2022-05-13 3:53 Stephen Rothwell
2022-03-30 23:42 Stephen Rothwell
2021-04-22 4:29 linux-next: manual merge of the kvm tree with Linus tree Stephen Rothwell
2020-12-17 2:56 linux-next: manual merge of the kvm tree with Linus' tree Stephen Rothwell
2020-04-02 2:36 Stephen Rothwell
2020-04-02 8:15 ` Paolo Bonzini
2020-04-02 10:44 ` Paolo Bonzini
2020-01-24 2:57 Stephen Rothwell
2019-05-17 1:16 Stephen Rothwell
2019-05-17 1:10 Stephen Rothwell
2019-05-17 1:04 Stephen Rothwell
2019-03-04 2:50 Stephen Rothwell
2018-10-18 2:37 Stephen Rothwell
2018-08-15 4:24 Stephen Rothwell
2018-08-15 4:20 Stephen Rothwell
2018-08-06 5:21 Stephen Rothwell
2018-06-04 7:04 Stephen Rothwell
2018-02-05 2:06 Stephen Rothwell
2018-02-05 1:06 Stephen Rothwell
2018-01-25 21:07 Stephen Rothwell
2018-01-17 3:48 Stephen Rothwell
2018-01-17 11:45 ` Thomas Gleixner
2018-01-17 12:17 ` Paolo Bonzini
2018-01-17 12:23 ` Thomas Gleixner
2018-01-17 12:35 ` Paolo Bonzini
2018-01-17 12:37 ` Thomas Gleixner
2018-01-17 12:43 ` Stephen Rothwell
2018-01-17 12:53 ` Thomas Gleixner
2018-01-29 4:02 ` Stephen Rothwell
2018-01-29 10:35 ` Paolo Bonzini
2017-08-25 4:34 Stephen Rothwell
2017-09-04 6:04 ` Stephen Rothwell
2016-07-27 4:50 Stephen Rothwell
2015-05-25 7:25 Stephen Rothwell
2015-05-25 14:11 ` Paolo Bonzini
2015-02-09 6:11 Stephen Rothwell
2015-02-02 5:05 Stephen Rothwell
2015-02-02 5:03 Stephen Rothwell
2013-03-01 2:51 Stephen Rothwell
2013-02-07 3:20 Stephen Rothwell
2013-02-02 5:52 Stephen Rothwell
2012-09-12 4:33 Stephen Rothwell
2012-07-06 5:12 Stephen Rothwell
2010-05-13 3:43 Stephen Rothwell
2010-01-27 1:57 Stephen Rothwell
2010-01-27 16:38 ` Marcelo Tosatti
2009-11-06 0:21 Stephen Rothwell
2009-07-01 4:57 Stephen Rothwell
2009-07-01 7:10 ` Davide Libenzi
[not found] ` <4A4B1106.8000506@redhat.com>
2009-07-01 12:30 ` Gregory Haskins
2009-07-01 15:11 ` Davide Libenzi
2009-07-01 12:31 ` Gregory Haskins
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=20180201104707.GA21802@cbox \
--to=christoffer.dall@linaro.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-next@vger.kernel.org \
--cc=marc.zyngier@arm.com \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
--cc=sfr@canb.auug.org.au \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).