mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
x86emul: support X{SUS,RES}LDTRK
There's nothing to be done by the emulator, as we unconditionally abort any XBEGIN. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
cca6bf0730
commit
a6d1b55847
5 files changed
+29
No files matched your search
@@ -208,6 +208,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str)
|
||||
{"avx512-vnni", 0x00000007, 0, CPUID_REG_ECX, 11, 1},
|
||||
{"avx512-bitalg",0x00000007, 0, CPUID_REG_ECX, 12, 1},
|
||||
{"avx512-vpopcntdq",0x00000007,0,CPUID_REG_ECX, 14, 1},
|
||||
{"tsxldtrk", 0x00000007, 0, CPUID_REG_ECX, 16, 1},
|
||||
{"rdpid", 0x00000007, 0, CPUID_REG_ECX, 22, 1},
|
||||
{"cldemote", 0x00000007, 0, CPUID_REG_ECX, 25, 1},
|
||||
|
||||
|
||||
@@ -128,6 +128,7 @@ static const char *const str_7c0[32] =
|
||||
[10] = "vpclmulqdq", [11] = "avx512_vnni",
|
||||
[12] = "avx512_bitalg",
|
||||
[14] = "avx512_vpopcntdq",
|
||||
[16] = "tsxldtrk",
|
||||
|
||||
[22] = "rdpid",
|
||||
/* 24 */ [25] = "cldemote",
|
||||
|
||||
@@ -1913,6 +1913,7 @@ amd_like(const struct x86_emulate_ctxt *ctxt)
|
||||
#define vcpu_has_avx512_vnni() (ctxt->cpuid->feat.avx512_vnni)
|
||||
#define vcpu_has_avx512_bitalg() (ctxt->cpuid->feat.avx512_bitalg)
|
||||
#define vcpu_has_avx512_vpopcntdq() (ctxt->cpuid->feat.avx512_vpopcntdq)
|
||||
#define vcpu_has_tsxldtrk() (ctxt->cpuid->feat.tsxldtrk)
|
||||
#define vcpu_has_rdpid() (ctxt->cpuid->feat.rdpid)
|
||||
#define vcpu_has_avx512_4vnniw() (ctxt->cpuid->feat.avx512_4vnniw)
|
||||
#define vcpu_has_avx512_4fmaps() (ctxt->cpuid->feat.avx512_4fmaps)
|
||||
@@ -5647,6 +5648,28 @@ x86_emulate(
|
||||
host_and_vcpu_must_have(serialize);
|
||||
asm volatile ( ".byte 0x0f, 0x01, 0xe8" );
|
||||
break;
|
||||
case vex_f2: /* xsusldtrk */
|
||||
vcpu_must_have(tsxldtrk);
|
||||
/*
|
||||
* We're never in a transactional region when coming here
|
||||
* - nothing else to do.
|
||||
*/
|
||||
break;
|
||||
default:
|
||||
goto unimplemented_insn;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xe9:
|
||||
switch ( vex.pfx )
|
||||
{
|
||||
case vex_f2: /* xresldtrk */
|
||||
vcpu_must_have(tsxldtrk);
|
||||
/*
|
||||
* We're never in a transactional region when coming here
|
||||
* - nothing else to do.
|
||||
*/
|
||||
break;
|
||||
default:
|
||||
goto unimplemented_insn;
|
||||
}
|
||||
|
||||
@@ -238,6 +238,7 @@ XEN_CPUFEATURE(VPCLMULQDQ, 6*32+10) /*A Vector Carry-less Multiplication Ins
|
||||
XEN_CPUFEATURE(AVX512_VNNI, 6*32+11) /*A Vector Neural Network Instrs */
|
||||
XEN_CPUFEATURE(AVX512_BITALG, 6*32+12) /*A Support for VPOPCNT[B,W] and VPSHUFBITQMB */
|
||||
XEN_CPUFEATURE(AVX512_VPOPCNTDQ, 6*32+14) /*A POPCNT for vectors of DW/QW */
|
||||
XEN_CPUFEATURE(TSXLDTRK, 6*32+16) /*a TSX load tracking suspend/resume insns */
|
||||
XEN_CPUFEATURE(RDPID, 6*32+22) /*A RDPID instruction */
|
||||
XEN_CPUFEATURE(CLDEMOTE, 6*32+25) /*A CLDEMOTE instruction */
|
||||
|
||||
|
||||
@@ -289,6 +289,9 @@ def crunch_numbers(state):
|
||||
# as dependent features simplifies Xen's logic, and prevents the guest
|
||||
# from seeing implausible configurations.
|
||||
IBRSB: [STIBP, SSBD],
|
||||
|
||||
# In principle the TSXLDTRK insns could also be considered independent.
|
||||
RTM: [TSXLDTRK],
|
||||
}
|
||||
|
||||
deep_features = tuple(sorted(deps.keys()))
|
||||
|
||||