Re: [PATCH v10 6/6] x86/split_lock: Enable split lock detection by kernel parameter

From: Xiaoyao Li
Date: Thu Nov 21 2019 - 21:39:45 EST


On 11/22/2019 10:21 AM, Andy Lutomirski wrote:

On Nov 21, 2019, at 5:52 PM, Sean Christopherson <sean.j.christopherson@xxxxxxxxx> wrote:

ïOn Thu, Nov 21, 2019 at 03:53:29PM -0800, Fenghua Yu wrote:
On Thu, Nov 21, 2019 at 03:18:46PM -0800, Andy Lutomirski wrote:

On Nov 21, 2019, at 2:29 PM, Luck, Tony <tony.luck@xxxxxxxxx> wrote:

It would be really, really nice if we could pass this feature through to a VM. Can we?

It's hard because the MSR is core scoped rather than thread scoped. So on an HT
enabled system a pair of logical processors gets enabled/disabled together.


Well that sucks.

Could we pass it through if the host has no HT? Debugging is *so* much
easier in a VM. And HT is a bit dubious these days anyway.

I think it's doable to pass it through to KVM. The difficulty is to disable
split lock detection in KVM because that will disable split lock on the whole
core including threads for the host. Without disabling split lock in KVM,
it's doable to debug split lock in KVM.

Sean and Xiaoyao are working on split lock for KVM (in separate patch set).
They may have insight on how to do this.

Yes, with SMT off KVM could allow the guest to enable split lock #AC, but
for the initial implementation we'd want to allow it if and only if split
lock #AC is disabled in the host kernel. Otherwise we have to pull in the
logic to control whether or not a guest can disable split lock #AC, what
to do if a split lock #AC happens when it's enabled by the host but
disabled by the guest, etc...

Whatâs the actual issue? Thereâs a window around entry and exit when a split lock in the host might not give #AC, but as long as no user code is run, this doesnât seem like a big problem.

The problem is that guest can trigger split locked memory access just by disabling split lock #AC even when host has it enabled. In this situation, there is bus lock held on the hardware without #AC triggered, which is conflict with the purpose that host enables split lock #AC