diff mbox series

[v2,4/4] x86/cpuid: Advertise SERIALIZE by default to guests

Message ID 20211215222115.6829-5-andrew.cooper3@citrix.com (mailing list archive)
State New, archived
Headers show
Series x86/cpuid: Introduce dom0-cpuid= | expand

Commit Message

Andrew Cooper Dec. 15, 2021, 10:21 p.m. UTC
I've played with SERIALIZE, TSXLDTRK, MOVDIRI and MOVDIR64 on real hardware,
and they all seem fine, including emulation support.

SERIALIZE exists specifically to have a userspace usable serialising operation
without other side effects.  (The only other two choices are CPUID which is a
VMExit under virt and clobbers 4 registers, and IRET-to-self which very slow
and consumes content from the stack.)

TSXLDTRK is a niche TSX feature, and TSX itself is niche outside of demos of
speculative sidechannels.  Leave the feature opt-in until a usecase is found,
in an effort to preempt the multiple person years of effort it has taken to
mop up TSX issues impacting every processor line.

MOVDIRI and MOVDIR64 are harder to judge.  They're architectural building
blocks towards ENQCMD{,S} without obvious usecases on their own.  They're of
no use to domains without PCI devices, so leave them opt-in for now.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>

v2:
 * New
---
 xen/include/public/arch-x86/cpufeatureset.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jan Beulich Dec. 16, 2021, 4:48 p.m. UTC | #1
On 15.12.2021 23:21, Andrew Cooper wrote:
> I've played with SERIALIZE, TSXLDTRK, MOVDIRI and MOVDIR64 on real hardware,
> and they all seem fine, including emulation support.
> 
> SERIALIZE exists specifically to have a userspace usable serialising operation
> without other side effects.  (The only other two choices are CPUID which is a
> VMExit under virt and clobbers 4 registers, and IRET-to-self which very slow
> and consumes content from the stack.)
> 
> TSXLDTRK is a niche TSX feature, and TSX itself is niche outside of demos of
> speculative sidechannels.  Leave the feature opt-in until a usecase is found,
> in an effort to preempt the multiple person years of effort it has taken to
> mop up TSX issues impacting every processor line.
> 
> MOVDIRI and MOVDIR64 are harder to judge.  They're architectural building
> blocks towards ENQCMD{,S} without obvious usecases on their own.  They're of
> no use to domains without PCI devices, so leave them opt-in for now.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>
diff mbox series

Patch

diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index 647ee9e5e277..0b399375566f 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -278,7 +278,7 @@  XEN_CPUFEATURE(SRBDS_CTRL,    9*32+ 9) /*   MSR_MCU_OPT_CTRL and RNGDS_MITG_DIS.
 XEN_CPUFEATURE(MD_CLEAR,      9*32+10) /*A  VERW clears microarchitectural buffers */
 XEN_CPUFEATURE(RTM_ALWAYS_ABORT, 9*32+11) /*! June 2021 TSX defeaturing in microcode. */
 XEN_CPUFEATURE(TSX_FORCE_ABORT, 9*32+13) /* MSR_TSX_FORCE_ABORT.RTM_ABORT */
-XEN_CPUFEATURE(SERIALIZE,     9*32+14) /*a  SERIALIZE insn */
+XEN_CPUFEATURE(SERIALIZE,     9*32+14) /*A  SERIALIZE insn */
 XEN_CPUFEATURE(TSXLDTRK,      9*32+16) /*a  TSX load tracking suspend/resume insns */
 XEN_CPUFEATURE(CET_IBT,       9*32+20) /*   CET - Indirect Branch Tracking */
 XEN_CPUFEATURE(IBRSB,         9*32+26) /*A  IBRS and IBPB support (used by Intel) */