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 <[email protected]> > Reviewed-by: Tony Luck <[email protected]>
Sane enough I suppose, Acked-by: Peter Zijlstra (Intel) <[email protected]> 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.

