Xiaoyao Li <xiaoyao.li@xxxxxxxxx> writes: > On 3/26/2020 10:55 PM, Thomas Gleixner wrote: >> Xiaoyao Li <xiaoyao.li@xxxxxxxxx> writes: >>> On 3/26/2020 7:10 PM, Thomas Gleixner wrote: >>> If the host has it disabled, !split_lock_detect_on() is true, it skips >>> following check due to || >>> >>> if (!boot_cpu_has(X86_FEATURE_SPLIT_LOCK)) { >>> inject #AC back to guest > and return 1; > >> >> That'd be a regular #AC, right? > > Yes. > >>> } else { >>> if (guest_alignment_check_enabled() || guest_sld_on()) >>> inject #AC back to guest > and return 1; > >> Here is clearly an else path missing. > > the else path is fall through. > > i.e. calling handle_user_split_lock(). > > If cannot handle, it falls through to report #AC to user space (QEMU) > >>> } >> > > If there is no problem with the above. So what's the problem of the > original? Probably my inability to decipher the convoluted condition. Thanks, tglx