From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: Nitesh Narayan Lal <nitesh@redhat.com>
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
seanjc@google.com, w90p710@gmail.com, pbonzini@redhat.com,
nitesh@redhat.com, Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH] Revert "KVM: x86: Unconditionally enable irqs in guest context"
Date: Wed, 06 Jan 2021 11:09:26 +0100 [thread overview]
Message-ID: <874kjuidgp.fsf@vitty.brq.redhat.com> (raw)
In-Reply-To: <20210105192844.296277-1-nitesh@redhat.com>
Nitesh Narayan Lal <nitesh@redhat.com> writes:
> This reverts commit d7a08882a0a4b4e176691331ee3f492996579534.
>
> After the introduction of the patch:
>
> 87fa7f3e9: x86/kvm: Move context tracking where it belongs
>
> since we have moved guest_exit_irqoff closer to the VM-Exit, explicit
> enabling of irqs to process pending interrupts should not be required
> within vcpu_enter_guest anymore.
>
> Conflicts:
> arch/x86/kvm/svm.c
>
> Signed-off-by: Nitesh Narayan Lal <nitesh@redhat.com>
> ---
> arch/x86/kvm/svm/svm.c | 9 +++++++++
> arch/x86/kvm/x86.c | 11 -----------
> 2 files changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
> index cce0143a6f80..c9b2fbb32484 100644
> --- a/arch/x86/kvm/svm/svm.c
> +++ b/arch/x86/kvm/svm/svm.c
> @@ -4187,6 +4187,15 @@ static int svm_check_intercept(struct kvm_vcpu *vcpu,
>
> static void svm_handle_exit_irqoff(struct kvm_vcpu *vcpu)
> {
> + kvm_before_interrupt(vcpu);
> + local_irq_enable();
> + /*
> + * We must have an instruction with interrupts enabled, so
> + * the timer interrupt isn't delayed by the interrupt shadow.
> + */
> + asm("nop");
> + local_irq_disable();
> + kvm_after_interrupt(vcpu);
> }
>
> static void svm_sched_in(struct kvm_vcpu *vcpu, int cpu)
> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> index 3f7c1fc7a3ce..3e17c9ffcad8 100644
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@ -9023,18 +9023,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
>
> kvm_x86_ops.handle_exit_irqoff(vcpu);
>
> - /*
> - * Consume any pending interrupts, including the possible source of
> - * VM-Exit on SVM
I kind of liked this part of the comment, the new (old) one in
svm_handle_exit_irqoff() doesn't actually explain what's going on.
> and any ticks that occur between VM-Exit and now.
Looking back, I don't quite understand why we wanted to account ticks
between vmexit and exiting guest context as 'guest' in the first place;
to my understanging 'guest time' is time spent within VMX non-root
operation, the rest is KVM overhead (system). It seems to match how the
accounting is done nowadays after Tglx's 87fa7f3e98a1 ("x86/kvm: Move
context tracking where it belongs").
> - * An instruction is required after local_irq_enable() to fully unblock
> - * interrupts on processors that implement an interrupt shadow, the
> - * stat.exits increment will do nicely.
> - */
> - kvm_before_interrupt(vcpu);
> - local_irq_enable();
> ++vcpu->stat.exits;
> - local_irq_disable();
> - kvm_after_interrupt(vcpu);
>
> if (lapic_in_kernel(vcpu)) {
> s64 delta = vcpu->arch.apic->lapic_timer.advance_expire_delta;
FWIW,
Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
--
Vitaly
next prev parent reply other threads:[~2021-01-06 10:11 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-05 19:28 [PATCH] Revert "KVM: x86: Unconditionally enable irqs in guest context" Nitesh Narayan Lal
2021-01-06 0:42 ` Wanpeng Li
2021-01-06 0:47 ` Sean Christopherson
2021-01-06 1:35 ` Nitesh Narayan Lal
2021-01-15 3:20 ` Wanpeng Li
2021-01-19 1:27 ` Wanpeng Li
2021-01-06 10:09 ` Vitaly Kuznetsov [this message]
2021-01-06 17:11 ` Sean Christopherson
2021-01-07 9:33 ` Vitaly Kuznetsov
2021-01-07 9:41 ` Wanpeng Li
2021-01-12 21:43 ` Nitesh Narayan Lal
2021-01-12 22:04 ` Sean Christopherson
2021-01-07 10:55 ` Xinlong Lin
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=874kjuidgp.fsf@vitty.brq.redhat.com \
--to=vkuznets@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nitesh@redhat.com \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=w90p710@gmail.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.