This will be used by AMX insns. Note that CR0.TS behavior is only assumed to be similar to AVX* insns, as the ISA extensions document (as of rev 041) doesn't specify this either way. But since XFD is not supposed to be used for lazy context restore, it's unlikely to work any other way.
Signed-off-by: Jan Beulich <jbeul...@suse.com> --- v2: New. --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -1420,6 +1420,12 @@ static int _get_fpu( return X86EMUL_UNHANDLEABLE; break; + case X86EMUL_FPU_tile: + ASSERT(mode_64bit()); + if ( !(xcr0 & X86_XCR0_TILECFG) || !(xcr0 & X86_XCR0_TILEDATA) ) + return X86EMUL_UNHANDLEABLE; + break; + default: break; } --- a/xen/arch/x86/x86_emulate/x86_emulate.h +++ b/xen/arch/x86/x86_emulate/x86_emulate.h @@ -172,6 +172,7 @@ enum x86_emulate_fpu_type { X86EMUL_FPU_ymm, /* AVX/XOP instruction set (%ymm0-%ymm7/15) */ X86EMUL_FPU_opmask, /* AVX512 opmask instruction set (%k0-%k7) */ X86EMUL_FPU_zmm, /* AVX512 instruction set (%zmm0-%zmm7/31) */ + X86EMUL_FPU_tile, /* AMX instruction set (%tmm0-%tmmN, tilecfg) */ /* This sentinel will never be passed to ->get_fpu(). */ X86EMUL_FPU_none };