Re: [PATCH v2 2/4] x86/bus_lock: Handle warn and fatal in #DB for bus lock

From: Peter Zijlstra
Date: Tue Nov 17 2020 - 07:25:10 EST


On Wed, Nov 11, 2020 at 07:20:46PM +0000, Fenghua Yu wrote:
> #DB for bus lock is enabled by bus lock detection bit 2 in DEBUGCTL MSR
> while #AC for split lock is enabled by split lock detection bit 29 in
> TEST_CTRL MSR.
>
> Delivery of #DB for bus lock in userspace clears DR6[11]. To avoid
> confusion in identifying #DB, #DB handler sets the bit to 1 before
> returning to the interrupted task.
>
> Use the existing kernel command line option "split_lock_detect=" to handle
> #DB for bus lock:
>
> split_lock_detect=
> #AC for split lock #DB for bus lock
>
> off Do nothing Do nothing
>
> warn Kernel OOPs Warn once per task and
> Warn once per task and and continues to run.
> disable future checking When both features are
> supported, warn in #DB
>
> fatal Kernel OOPs Send SIGBUS to user
> Send SIGBUS to user
> When both features are
> supported, fatal in #AC.
>
> Default option is "warn".
>
> Hardware only generates #DB for bus lock detect when CPL>0 to avoid
> nested #DB from multiple bus locks while the first #DB is being handled.
> So no need to handle #DB for bus lock detected in the kernel.
>
> Signed-off-by: Fenghua Yu <fenghua.yu@xxxxxxxxx>
> Reviewed-by: Tony Luck <tony.luck@xxxxxxxxx>

Sane enough I suppose,

Acked-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>

The one thing I found still missing is a better description of the
things tickling SLD vs BLD. IIRC BLD detects a wider range of issues.
Therefore it _might_ make sense to allow SLD && BLD when fatal, instead
of only SLD.

Still, that's nitpicking.