From: Thomas Gleixner <tglx@linutronix.de>
To: Xiaoyao Li <xiaoyao.li@intel.com>, 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: Wed, 25 Mar 2020 02:41:51 +0100 [thread overview]
Message-ID: <87369xyzvk.fsf@nanos.tec.linutronix.de> (raw)
In-Reply-To: <6d3e7e03-d304-8ec0-b00d-050b1c12140d@intel.com>
Xiaoyao Li <xiaoyao.li@intel.com> writes:
> On 3/25/2020 8:40 AM, Thomas Gleixner wrote:
>>> 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?
>
> So we need to reach an agreement on whether we need a state that host
> turns it off but feature is available to be exposed to guest.
There is a very simple agreement:
If the host turns it off, then it is not available at all
If the host sets 'warn' then this applies to everything
If the host sets 'fatal' then this applies to everything
Make it simple and consistent.
>>> + if (static_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT) &&
>>> + guest_cpu_split_lock_detect_on(vmx)) {
>>> + if (test_thread_flag(TIF_SLD))
>>> + sld_turn_back_on();
>>
>> This is completely inconsistent behaviour. The only way that TIF_SLD is
>> set is when the host has sld_state == sld_warn and the guest triggered
>> a split lock #AC.
>
> Can you image the case that both host and guest set sld_state == sld_warn.
>
> 1. There is guest userspace thread causing split lock.
> 2. It sets TIF_SLD for the thread in guest, and clears SLD bit to re-
> execute the instruction in guest.
> 3. Then it still causes #AC since hardware SLD is not cleared. In host
> kvm, we call handle_user_split_lock() that sets TIF_SLD for this VMM
> thread, and clears hardware SLD bit. Then it enters guest and re-execute
> the instruction.
> 4. In guest, it schedules to another thread without TIF_SLD being set.
> it sets the SLD bit to detect the split lock for this thread. So for
> this purpose, we need to turn sld back on for the VMM thread, otherwise
> this guest vcpu cannot catch split lock any more.
If you really want to address that scenario, then why are you needing
any of those completely backwards interfaces at all?
Just because your KVM exception trap uses the host handling function
which sets TIF_SLD?
Please sit down, go back to the drawing board and figure it out how to
solve that without creating inconsistent state and duct tape functions
to deal with that.
I'm not rewriting the patches for you this time.
> Do you need me to spin a new version of patch 1 to clear SLD bit on APs
> if SLD_OFF?
I assume you can answer that question yourself.
Thanks,
tglx
next prev parent reply other threads:[~2020-03-25 1:42 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 " 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 [this message]
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
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=87369xyzvk.fsf@nanos.tec.linutronix.de \
--to=tglx@linutronix.de \
--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=tony.luck@intel.com \
--cc=x86@kernel.org \
--cc=xiaoyao.li@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome