Re: [PATCH 6.0.y / 6.1.y] x86/split_lock: Add sysctl to control the misery mode

From: Greg KH
Date: Mon Dec 19 2022 - 05:18:19 EST


On Sun, Dec 18, 2022 at 08:44:00PM -0300, Guilherme G. Piccoli wrote:
> commit 727209376f4998bc84db1d5d8af15afea846a92b upstream.
>
> Commit b041b525dab9 ("x86/split_lock: Make life miserable for split lockers")
> changed the way the split lock detector works when in "warn" mode;
> basically, it not only shows the warn message, but also intentionally
> introduces a slowdown through sleeping plus serialization mechanism
> on such task. Based on discussions in [0], seems the warning alone
> wasn't enough motivation for userspace developers to fix their
> applications.
>
> This slowdown is enough to totally break some proprietary (aka.
> unfixable) userspace[1].
>
> Happens that originally the proposal in [0] was to add a new mode
> which would warns + slowdown the "split locking" task, keeping the
> old warn mode untouched. In the end, that idea was discarded and
> the regular/default "warn" mode now slows down the applications. This
> is quite aggressive with regards proprietary/legacy programs that
> basically are unable to properly run in kernel with this change.
> While it is understandable that a malicious application could DoS
> by split locking, it seems unacceptable to regress old/proprietary
> userspace programs through a default configuration that previously
> worked. An example of such breakage was reported in [1].
>
> Add a sysctl to allow controlling the "misery mode" behavior, as per
> Thomas suggestion on [2]. This way, users running legacy and/or
> proprietary software are allowed to still execute them with a decent
> performance while still observing the warning messages on kernel log.
>
> [0] https://lore.kernel.org/lkml/20220217012721.9694-1-tony.luck@xxxxxxxxx/
> [1] https://github.com/doitsujin/dxvk/issues/2938
> [2] https://lore.kernel.org/lkml/87pmf4bter.ffs@tglx/
>
> [ dhansen: minor changelog tweaks, including clarifying the actual
> problem ]
>
> Fixes: b041b525dab9 ("x86/split_lock: Make life miserable for split lockers")
> Suggested-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Signed-off-by: Guilherme G. Piccoli <gpiccoli@xxxxxxxxxx>
> Signed-off-by: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
> Reviewed-by: Tony Luck <tony.luck@xxxxxxxxx>
> Tested-by: Andre Almeida <andrealmeid@xxxxxxxxxx>
> Link: https://lore.kernel.org/all/20221024200254.635256-1-gpiccoli%40igalia.com
> ---
>
>
> Hi folks, I've build tested this on both 6.0.13 and 6.1, worked fine. The
> split lock detector code changed almost nothing since 6.0, so that makes
> sense...
>
> I think this is important to have in stable, some gaming community members
> seems excited with that, it'll help with general proprietary software
> (that is basically unfixable), making them run smoothly on 6.0.y and 6.1.y.

What specific programs have this problem and what are the exact results
of it?

Also, this is really a new feature and not really a "fix", but one could
argue a lot that this is a "resolve a performance problem" if you want
to and have the numbers to back it up {hint}

thanks,

greg k-h