Message ID | 20230221163655.920289-12-mizhang@google.com |
---|---|
State | New |
Headers | show |
Series | Overhauling amx_test | expand |
On Tue, Feb 21, 2023, Mingwei Zhang wrote: > From: Aaron Lewis <aaronlewis@google.com> > > In amx_test, userspace requires that XSAVE is supported before running > the test, then the guest checks that it is supported after enabling > AMX. Remove the redundant check in the guest that XSAVE is supported. It's a bit paranoid, but I actually don't mind the extra check. It's not redundant per se, just useless in its current location. If the check is moved _before_ CR4 is set, then it actually provides value, e.g. if something does go sideways, will fire an assert instead of getting a #GP on set_cr4().
diff --git a/tools/testing/selftests/kvm/x86_64/amx_test.c b/tools/testing/selftests/kvm/x86_64/amx_test.c index 1a1565126255..deacd21cf744 100644 --- a/tools/testing/selftests/kvm/x86_64/amx_test.c +++ b/tools/testing/selftests/kvm/x86_64/amx_test.c @@ -109,12 +109,6 @@ static inline void __xsavec(struct xstate *xstate, uint64_t rfbm) : "memory"); } -static inline void check_cpuid_xsave(void) -{ - GUEST_ASSERT(this_cpu_has(X86_FEATURE_XSAVE)); - GUEST_ASSERT(this_cpu_has(X86_FEATURE_OSXSAVE)); -} - static void check_xtile_info(void) { GUEST_ASSERT(this_cpu_has_p(X86_PROPERTY_XSTATE_MAX_SIZE_XCR0)); @@ -157,6 +151,7 @@ static void init_regs(void) cr4 = get_cr4(); cr4 |= X86_CR4_OSXSAVE; set_cr4(cr4); + GUEST_ASSERT(this_cpu_has(X86_FEATURE_OSXSAVE)); xcr0 = __xgetbv(0); xcr0 |= XFEATURE_MASK_XTILE; @@ -169,7 +164,6 @@ static void __attribute__((__flatten__)) guest_code(struct tile_config *amx_cfg, struct xstate *xstate) { init_regs(); - check_cpuid_xsave(); check_xtile_info(); GUEST_SYNC(1);