From: "Xinlong Lin" <linxl3@wangsu.com>
To: "Sean Christopherson" <seanjc@google.com>,
vkuznets <vkuznets@redhat.com>
Cc: "Nitesh Narayan Lal" <nitesh@redhat.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
kvm <kvm@vger.kernel.org>, w90p710 <w90p710@gmail.com>,
pbonzini <pbonzini@redhat.com>,
"tglx@linutronix.de" <tglx@linutronix.de>
Subject: Re: Re: [PATCH] Revert "KVM: x86: Unconditionally enable irqs in guest context"
Date: Thu, 7 Jan 2021 18:55:49 +0800 [thread overview]
Message-ID: <2021010718554863665911@wangsu.com> (raw)
In-Reply-To: X/XvWG18aBWocvvf@google.com
On 2021-01-07 at 01:11, Sean Christopherson wrote:
>On Wed, Jan 06, 2021, Vitaly Kuznetsov wrote:
>> Nitesh Narayan Lal <nitesh@redhat.com> writes:
>> > 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).
>
>With tick-based accounting, if the tick IRQ is received after PF_VCPU is cleared
>then that tick will be accounted to the host/system. The motivation for opening
>an IRQ window after VM-Exit is to handle the case where the guest is constantly
>exiting for a different reason _just_ before the tick arrives, e.g. if the guest
>has its tick configured such that the guest and host ticks get synchronized
>in a bad way.
>
>This is a non-issue when using CONFIG_VIRT_CPU_ACCOUNTING_GEN=y, at least with a
>stable TSC, as the accounting happens during guest_exit_irqoff() itself.
>Accounting might be less-than-stellar if TSC is unstable, but I don't think it
>would be as binary of a failure as tick-based accounting.
If I don't specify "nohz_full" in boot command line when using
CONFIG_VIRT_CPU_ACCOUNTING_GEN=y, Will the problem still exist?
>
>> 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
>>
prev parent reply other threads:[~2021-01-07 11:15 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
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 [this message]
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=2021010718554863665911@wangsu.com \
--to=linxl3@wangsu.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=vkuznets@redhat.com \
--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.