Commit bfc5afc3 authored by Mingwei Zhang's avatar Mingwei Zhang Committed by Sean Christopherson
Browse files

KVM: selftests: Verify XTILE_DATA in XSTATE isn't affected by IA32_XFD



Add asserts to verify the XSTATE metadata for XTILE_DATA isn't affected
by disabling AMX tile data via IA32_XFD.  XFD doesn't intercept XSAVE,
it only prevents setting bits in XCR0, i.e. regardless of XFD, AMX state
is managed by XSAVE/XRSTOR as long as the corresponding bits are set XCR0.

Signed-off-by: default avatarMingwei Zhang <mizhang@google.com>
Link: https://lore.kernel.org/r/20230221163655.920289-9-mizhang@google.com


[sean: massage changelog]
Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent 9cbd9aaa
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -201,6 +201,16 @@ static void __attribute__((__flatten__)) guest_code(struct tile_config *amx_cfg,

	/* xfd=0x40000, disable amx tiledata */
	wrmsr(MSR_IA32_XFD, XFEATURE_MASK_XTILEDATA);

	/*
	 * XTILEDATA is cleared in xstate_bv but set in xcomp_bv, this property
	 * remains the same even when amx tiledata is disabled by IA32_XFD.
	 */
	xstate->header.xstate_bv = XFEATURE_MASK_XTILEDATA;
	__xsavec(xstate, XFEATURE_MASK_XTILEDATA);
	GUEST_ASSERT(!(xstate->header.xstate_bv & XFEATURE_MASK_XTILEDATA));
	GUEST_ASSERT((xstate->header.xcomp_bv & XFEATURE_MASK_XTILEDATA));

	GUEST_SYNC(6);
	GUEST_ASSERT(rdmsr(MSR_IA32_XFD) == XFEATURE_MASK_XTILEDATA);
	set_tilecfg(amx_cfg);