From: Marc Zyngier <maz@kernel.org>
To: Mark Rutland <mark.rutland@arm.com>
Cc: linux-kernel@vger.kernel.org, aleksandar.qemu.devel@gmail.com,
alexandru.elisei@arm.com, anup.patel@wdc.com,
aou@eecs.berkeley.edu, atish.patra@wdc.com,
benh@kernel.crashing.org, borntraeger@linux.ibm.com,
bp@alien8.de, catalin.marinas@arm.com, chenhuacai@kernel.org,
dave.hansen@linux.intel.com, david@redhat.com,
frankja@linux.ibm.com, frederic@kernel.org, gor@linux.ibm.com,
hca@linux.ibm.com, imbrenda@linux.ibm.com, james.morse@arm.com,
jmattson@google.com, joro@8bytes.org, kvm@vger.kernel.org,
mingo@redhat.com, mpe@ellerman.id.au, nsaenzju@redhat.com,
palmer@dabbelt.com, paulmck@kernel.org, paulus@samba.org,
paul.walmsley@sifive.com, pbonzini@redhat.com, seanjc@google.com,
suzuki.poulose@arm.com, tglx@linutronix.de,
tsbogend@alpha.franken.de, vkuznets@redhat.com,
wanpengli@tencent.com, will@kernel.org
Subject: Re: [PATCH 2/5] kvm/arm64: rework guest entry logic
Date: Thu, 13 Jan 2022 11:43:30 +0000 [thread overview]
Message-ID: <87r19b97z1.wl-maz@kernel.org> (raw)
In-Reply-To: <YeAKYUQcHc0+LJ/P@FVFF77S0Q05N>
On Thu, 13 Jan 2022 11:17:53 +0000,
Mark Rutland <mark.rutland@arm.com> wrote:
>
> On Tue, Jan 11, 2022 at 05:55:20PM +0000, Marc Zyngier wrote:
> > On Tue, 11 Jan 2022 15:35:36 +0000,
> > Mark Rutland <mark.rutland@arm.com> wrote:
[...]
> > > @@ -891,26 +909,23 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
> > > kvm_arch_vcpu_ctxsync_fp(vcpu);
> > >
> > > /*
> > > - * We may have taken a host interrupt in HYP mode (ie
> > > - * while executing the guest). This interrupt is still
> > > - * pending, as we haven't serviced it yet!
> > > + * We must ensure that any pending interrupts are taken before
> > > + * we exit guest timing so that timer ticks are accounted as
> > > + * guest time. Transiently unmask interrupts so that any
> > > + * pending interrupts are taken.
> > > *
> > > - * We're now back in SVC mode, with interrupts
> > > - * disabled. Enabling the interrupts now will have
> > > - * the effect of taking the interrupt again, in SVC
> > > - * mode this time.
> > > + * Per ARM DDI 0487G.b section D1.13.4, an ISB (or other
> > > + * context synchronization event) is necessary to ensure that
> > > + * pending interrupts are taken.
> > > */
> > > local_irq_enable();
> > > + isb();
> > > + local_irq_disable();
> >
> > Small nit: we may be able to elide this enable/isb/disable dance if a
> > read of ISR_EL1 returns 0.
>
> Wouldn't that be broken when using GIC priority masking, since that
> can prevent IRQS being signalled ot the PE?
You're right. But this can be made even simpler. We already know if
we've exited the guest because of an IRQ (ret tells us that), and
that's true whether we're using priority masking or not. It could be
as simple as:
if (ARM_EXCEPTION_CODE(ret) == ARM_EXCEPTION_IRQ) {
// We exited because of an interrupt. Let's take
// it now to account timer ticks to the guest.
local_irq_enable();
isb();
local_irq_disable();
}
and that would avoid accounting the interrupt to the guest if it fired
after the exit took place.
> I'm happy to rework this, but I'll need to think a bit harder about
> it. Would you be happy if we did that as a follow-up?
Oh, absolutely. I want the flow to be correct before we make it
fast(-ish).
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
next prev parent reply other threads:[~2022-01-13 11:43 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-11 15:35 [PATCH 0/5] kvm: fix latent guest entry/exit bugs Mark Rutland
2022-01-11 15:35 ` [PATCH 1/5] kvm: add exit_to_guest_mode() and enter_from_guest_mode() Mark Rutland
2022-01-11 17:54 ` Marc Zyngier
2022-01-13 11:01 ` Mark Rutland
2022-01-13 11:55 ` Marc Zyngier
2022-01-13 13:01 ` Mark Rutland
2022-01-13 20:32 ` Sean Christopherson
2022-01-14 11:48 ` Mark Rutland
2022-01-14 16:11 ` Sean Christopherson
2022-01-18 13:01 ` Mark Rutland
2022-01-11 15:35 ` [PATCH 2/5] kvm/arm64: rework guest entry logic Mark Rutland
2022-01-11 17:55 ` Marc Zyngier
2022-01-13 11:17 ` Mark Rutland
2022-01-13 11:43 ` Marc Zyngier [this message]
2022-01-13 12:58 ` Mark Rutland
2022-01-11 15:35 ` [PATCH 3/5] kvm/mips: " Mark Rutland
2022-01-11 15:35 ` [PATCH 4/5] kvm/riscv: " Mark Rutland
2022-01-11 15:35 ` [PATCH 5/5] kvm/x86: " Mark Rutland
2022-01-13 20:50 ` Sean Christopherson
2022-01-14 12:05 ` Mark Rutland
2022-01-14 16:49 ` Sean Christopherson
2022-01-11 18:47 ` [PATCH 0/5] kvm: fix latent guest entry/exit bugs Palmer Dabbelt
2022-01-13 15:20 ` Christian Borntraeger
2022-01-14 12:19 ` Mark Rutland
2022-01-14 12:29 ` Christian Borntraeger
2022-01-14 13:32 ` Mark Rutland
2022-01-14 13:51 ` Christian Borntraeger
2022-01-14 15:19 ` Mark Rutland
2022-01-17 17:45 ` Paolo Bonzini
2022-01-18 12:02 ` Mark Rutland
2022-01-18 12:08 ` Christian Borntraeger
2022-01-18 12:42 ` Christian Borntraeger
2022-01-18 13:12 ` Mark Rutland
2022-01-18 14:15 ` Christian Borntraeger
2022-01-18 15:43 ` Mark Rutland
2022-01-18 16:09 ` Sven Schnelle
2022-01-18 17:50 ` Mark Rutland
2022-01-18 18:12 ` Mark Rutland
2022-01-19 6:41 ` Sven Schnelle
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=87r19b97z1.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=aleksandar.qemu.devel@gmail.com \
--cc=alexandru.elisei@arm.com \
--cc=anup.patel@wdc.com \
--cc=aou@eecs.berkeley.edu \
--cc=atish.patra@wdc.com \
--cc=benh@kernel.crashing.org \
--cc=borntraeger@linux.ibm.com \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=dave.hansen@linux.intel.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=frederic@kernel.org \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=james.morse@arm.com \
--cc=jmattson@google.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--cc=nsaenzju@redhat.com \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=paulmck@kernel.org \
--cc=paulus@samba.org \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=suzuki.poulose@arm.com \
--cc=tglx@linutronix.de \
--cc=tsbogend@alpha.franken.de \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.com \
--cc=will@kernel.org \
/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).