From: Xiaoyao Li <xiaoyao.li@intel.com>
To: Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
hpa@zytor.com, Paolo Bonzini <pbonzini@redhat.com>,
Sean Christopherson <sean.j.christopherson@intel.com>
Cc: x86@kernel.org, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org, Andy Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Arvind Sankar <nivedita@alum.mit.edu>,
Fenghua Yu <fenghua.yu@intel.com>,
Tony Luck <tony.luck@intel.com>
Subject: Re: [PATCH v6 8/8] kvm: vmx: virtualize split lock detection
Date: Thu, 26 Mar 2020 20:43:46 +0800 [thread overview]
Message-ID: <1d98bddd-a6a4-2fcc-476b-c9b19f65c6b6@intel.com> (raw)
In-Reply-To: <87d08zxtgl.fsf@nanos.tec.linutronix.de>
On 3/26/2020 7:10 PM, Thomas Gleixner wrote:
> Xiaoyao Li <xiaoyao.li@intel.com> writes:
>> On 3/25/2020 8:40 AM, Thomas Gleixner wrote:
>>> Xiaoyao Li <xiaoyao.li@intel.com> writes:
>>>> static int handle_exception_nmi(struct kvm_vcpu *vcpu)
>>>> {
>>>> struct vcpu_vmx *vmx = to_vmx(vcpu);
>>>> @@ -4725,12 +4746,13 @@ static int handle_exception_nmi(struct kvm_vcpu *vcpu)
>>>> case AC_VECTOR:
>>>> /*
>>>> * Reflect #AC to the guest if it's expecting the #AC, i.e. has
>>>> - * legacy alignment check enabled. Pre-check host split lock
>>>> - * support to avoid the VMREADs needed to check legacy #AC,
>>>> - * i.e. reflect the #AC if the only possible source is legacy
>>>> - * alignment checks.
>>>> + * legacy alignment check enabled or split lock detect enabled.
>>>> + * Pre-check host split lock support to avoid further check of
>>>> + * guest, i.e. reflect the #AC if host doesn't enable split lock
>>>> + * detection.
>>>> */
>>>> if (!split_lock_detect_on() ||
>>>> + guest_cpu_split_lock_detect_on(vmx) ||
>>>> guest_cpu_alignment_check_enabled(vcpu)) {
>>>
>>> If the host has split lock detection disabled then how is the guest
>>> supposed to have it enabled in the first place?
>>>
>> It is ||
>
> Again. If the host has it disabled, then the feature flag is OFF. So
> how is the hypervisor exposing it in the first place?
>
So what's wrong with above code?
If the host has it disabled, !split_lock_detect_on() is true, it skips
following check due to ||
I guess you want something like below?
if (!boot_cpu_has(X86_FEATURE_SPLIT_LOCK)) {
inject #AC back to guest
} else {
if (guest_alignment_check_enabled() || guest_sld_on())
inject #AC back to guest
}
BTW, there is an issue in my original patch that guest_sld_on() should
be checked at last.
next prev parent reply other threads:[~2020-03-26 12:43 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-24 15:18 [PATCH v6 0/8] x86/split_lock: Fix and virtualization of split lock detection Xiaoyao Li
2020-03-24 15:18 ` [PATCH v6 1/8] x86/split_lock: Rework the initialization flow " Xiaoyao Li
2020-03-24 15:18 ` [PATCH v6 2/8] x86/split_lock: Avoid runtime reads of the TEST_CTRL MSR Xiaoyao Li
2020-03-24 15:18 ` [PATCH v6 3/8] x86/split_lock: Export handle_user_split_lock() Xiaoyao Li
2020-03-24 15:18 ` [PATCH v6 4/8] kvm: x86: Emulate split-lock access as a write in emulator Xiaoyao Li
2020-03-25 0:00 ` Thomas Gleixner
2020-03-25 0:31 ` Xiaoyao Li
2020-03-24 15:18 ` [PATCH v6 5/8] kvm: vmx: Extend VMX's #AC interceptor to handle split lock #AC happens in guest Xiaoyao Li
2020-03-24 15:18 ` [PATCH v6 6/8] kvm: x86: Emulate MSR IA32_CORE_CAPABILITIES Xiaoyao Li
2020-03-24 15:18 ` [PATCH v6 7/8] kvm: vmx: Enable MSR_TEST_CTRL for intel guest Xiaoyao Li
2020-03-25 0:07 ` Thomas Gleixner
2020-03-24 15:18 ` [PATCH v6 8/8] kvm: vmx: virtualize split lock detection Xiaoyao Li
2020-03-25 0:40 ` Thomas Gleixner
2020-03-25 1:11 ` Xiaoyao Li
2020-03-25 1:41 ` Thomas Gleixner
2020-03-26 1:38 ` Xiaoyao Li
2020-03-26 11:08 ` Thomas Gleixner
2020-03-26 12:31 ` Xiaoyao Li
2020-03-26 6:41 ` Xiaoyao Li
2020-03-26 11:10 ` Thomas Gleixner
2020-03-26 12:43 ` Xiaoyao Li [this message]
2020-03-26 14:55 ` Thomas Gleixner
2020-03-26 15:09 ` Xiaoyao Li
2020-03-26 18:51 ` Thomas Gleixner
2020-03-24 17:47 ` [PATCH v6 0/8] x86/split_lock: Fix and virtualization of " Sean Christopherson
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=1d98bddd-a6a4-2fcc-476b-c9b19f65c6b6@intel.com \
--to=xiaoyao.li@intel.com \
--cc=bp@alien8.de \
--cc=fenghua.yu@intel.com \
--cc=hpa@zytor.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=nivedita@alum.mit.edu \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=sean.j.christopherson@intel.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=x86@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).