From: Christoffer Dall <cdall@kernel.org>
To: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: "Marc Zyngier" <marc.zyngier@arm.com>,
"Linux-Next Mailing List" <linux-next@vger.kernel.org>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Radim Krčmář" <rkrcmar@redhat.com>
Subject: Re: linux-next: manual merge of the kvm-arm tree with Linus' tree
Date: Wed, 3 Jan 2018 10:50:57 +0100 [thread overview]
Message-ID: <CAEDV+gJDjHNtHSoefFpcTLt0H+B2na5hFTWyvdAkq8b3D_c=oQ@mail.gmail.com> (raw)
In-Reply-To: <20180103133804.441cd1e1@canb.auug.org.au>
Thanks Stephen,
On Wed, Jan 3, 2018 at 3:38 AM, Stephen Rothwell <sfr@canb.auug.org.au> wrote:
> Hi all,
>
> Today's linux-next merge of the kvm-arm 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 commit:
>
> 70450a9fbe06 ("KVM: arm/arm64: Don't cache the timer IRQ level")
>
> from the kvm-arm 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.
The resolution looks correct to me.
cc'ing the KVM maintainers in case they want to merge kvm/master into
kvm/next to avoid the conflict going up to Linus.
Thanks,
-Christoffer
>
> diff --cc virt/kvm/arm/arch_timer.c
> index cc29a8148328,cfcd0323deab..000000000000
> --- a/virt/kvm/arm/arch_timer.c
> +++ b/virt/kvm/arm/arch_timer.c
> @@@ -92,27 -92,19 +92,26 @@@ 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;
> - }
> - vtimer = vcpu_vtimer(vcpu);
> + /*
> + * 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->cnt_ctl = read_sysreg_el0(cntv_ctl);
> - if (kvm_timer_irq_can_fire(vtimer))
> + 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 (unlikely(!irqchip_in_kernel(vcpu->kvm)))
> ++ 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 (static_branch_unlikely(&userspace_irqchip_in_use) &&
> + unlikely(!irqchip_in_kernel(vcpu->kvm)))
> kvm_vtimer_update_mask_user(vcpu);
>
> return IRQ_HANDLED;
next prev parent reply other threads:[~2018-01-03 9:50 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-03 2:38 linux-next: manual merge of the kvm-arm tree with Linus' tree Stephen Rothwell
2018-01-03 9:50 ` Christoffer Dall [this message]
-- strict thread matches above, loose matches on Subject: below --
2017-11-06 2:56 Stephen Rothwell
2017-11-06 2:52 Stephen Rothwell
2017-04-10 4:02 Stephen Rothwell
2017-04-10 8:02 ` Christoffer Dall
2015-03-18 3:41 Stephen Rothwell
2015-03-18 7:55 ` Christoffer Dall
2015-04-07 16:20 ` Paolo Bonzini
2015-04-08 8:15 ` Marc Zyngier
2015-04-08 10:57 ` Christoffer Dall
2015-04-16 19:10 ` Christoffer Dall
2015-04-16 19:39 ` Paolo Bonzini
2015-04-16 20:16 ` Christoffer Dall
2014-10-17 1:47 Stephen Rothwell
2014-07-31 6:30 Stephen Rothwell
2014-07-31 12:10 ` Marc Zyngier
[not found] ` <CAEDV+gJ1oSPzgZMO=kdFDNPnzy-EOHGuLxHqTB8KO6d_8yPrxQ@mail.gmail.com>
2014-07-31 12:15 ` Marc Zyngier
2014-07-31 14:23 ` Christoffer Dall
2014-07-31 14:30 ` Marc Zyngier
2014-08-01 5:21 ` Stephen Rothwell
2014-07-31 12:17 ` Stephen Rothwell
2014-07-31 12:41 ` Stephen Rothwell
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='CAEDV+gJDjHNtHSoefFpcTLt0H+B2na5hFTWyvdAkq8b3D_c=oQ@mail.gmail.com' \
--to=cdall@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).