Message ID | 20211216064131.457656-1-aurelien@aurel32.net |
---|---|
State | New |
Headers | show |
Series | elf: Fix tst-cpu-features-cpuinfo for KVM guests on some AMD systems [BZ #28704] | expand |
On Wed, Dec 15, 2021 at 10:41 PM Aurelien Jarno <aurelien@aurel32.net> wrote: > > On KVM guests running on some AMD systems, the IBRS feature is reported > as a synthetic feature using the Intel feature, while the cpuinfo entry > keeps the same. Handle that by first checking the presence of the Intel > feature on AMD systems. > > Fixes bug 28704. > --- > sysdeps/x86/tst-cpu-features-cpuinfo.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > (H.J. Lu: resending because I wrongly send it to you instead of sending > it to the list and Cc:ing you. Sorry) > > diff --git a/sysdeps/x86/tst-cpu-features-cpuinfo.c b/sysdeps/x86/tst-cpu-features-cpuinfo.c > index 2d4927f5e5..830aaca2ec 100644 > --- a/sysdeps/x86/tst-cpu-features-cpuinfo.c > +++ b/sysdeps/x86/tst-cpu-features-cpuinfo.c > @@ -169,7 +169,14 @@ do_test (int argc, char **argv) > else if (cpu_features->basic.kind == arch_kind_amd) > { > fails += CHECK_PROC (ibpb, AMD_IBPB); > - fails += CHECK_PROC (ibrs, AMD_IBRS); > + > + /* The IBRS feature on AMD processors is reported using the Intel feature > + * on KVM guests (synthetic bit). In both cases the cpuinfo entry is the > + * same. */ > + if (HAS_CPU_FEATURE (IBRS_IBPB)) > + fails += CHECK_PROC (ibrs, IBRS_IBPB); > + else > + fails += CHECK_PROC (ibrs, AMD_IBRS); > fails += CHECK_PROC (stibp, AMD_STIBP); > } > fails += CHECK_PROC (ibt, IBT); > -- > 2.33.0 > LGTM. Thanks.
diff --git a/sysdeps/x86/tst-cpu-features-cpuinfo.c b/sysdeps/x86/tst-cpu-features-cpuinfo.c index 2d4927f5e5..830aaca2ec 100644 --- a/sysdeps/x86/tst-cpu-features-cpuinfo.c +++ b/sysdeps/x86/tst-cpu-features-cpuinfo.c @@ -169,7 +169,14 @@ do_test (int argc, char **argv) else if (cpu_features->basic.kind == arch_kind_amd) { fails += CHECK_PROC (ibpb, AMD_IBPB); - fails += CHECK_PROC (ibrs, AMD_IBRS); + + /* The IBRS feature on AMD processors is reported using the Intel feature + * on KVM guests (synthetic bit). In both cases the cpuinfo entry is the + * same. */ + if (HAS_CPU_FEATURE (IBRS_IBPB)) + fails += CHECK_PROC (ibrs, IBRS_IBPB); + else + fails += CHECK_PROC (ibrs, AMD_IBRS); fails += CHECK_PROC (stibp, AMD_STIBP); } fails += CHECK_PROC (ibt, IBT);