Refactor the kvm_cpu_cap_init() macro magic to collect supported features
in a local variable instead of passing them to the macro as a "mask".  As
pointed out by Maxim, relying on macros to "return" a value and set local
variables is surprising, as the bitwise-OR logic suggests the macros are
pure, i.e. have no side effects.

Ideally, the feature initializers would have zero side effects, e.g. would
take local variables as params, but there isn't a sane way to do so
without either sacrificing the various compile-time assertions (basically
a non-starter), or passing at least one variable, e.g. a struct, to each
macro usage (adds a lot of noise and boilerplate code).

Opportunistically force callers to emit a trailing comma by intentionally
omitting a semicolon after invoking the feature initializers.  Forcing a
trailing comma isotales futures changes to a single line, i.e. doesn't
cause churn for unrelated features/lines when adding/removing/modifying a
feature.

No functional change intended.

Suggested-by: Maxim Levitsky <mlevi...@redhat.com>
Signed-off-by: Sean Christopherson <sea...@google.com>
---
 arch/x86/kvm/cpuid.c | 541 ++++++++++++++++++++++---------------------
 1 file changed, 273 insertions(+), 268 deletions(-)

diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index e03154b9833f..572dfa7e206e 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -661,7 +661,7 @@ static __always_inline u32 raw_cpuid_get(struct cpuid_reg 
cpuid)
  * capabilities as well as raw CPUID.  For KVM-defined leafs, consult only raw
  * CPUID, as KVM is the one and only authority (in the kernel).
  */
-#define kvm_cpu_cap_init(leaf, mask)                                   \
+#define kvm_cpu_cap_init(leaf, feature_initializers...)                        
\
 do {                                                                   \
        const struct cpuid_reg cpuid = x86_feature_cpuid(leaf * 32);    \
        const u32 __maybe_unused kvm_cpu_cap_init_in_progress = leaf;   \
@@ -669,8 +669,11 @@ do {                                                       
                \
        u32 kvm_cpu_cap_passthrough = 0;                                \
        u32 kvm_cpu_cap_synthesized = 0;                                \
        u32 kvm_cpu_cap_emulated = 0;                                   \
+       u32 kvm_cpu_cap_features = 0;                                   \
                                                                        \
-       kvm_cpu_caps[leaf] = (mask);                                    \
+       feature_initializers                                            \
+                                                                       \
+       kvm_cpu_caps[leaf] = kvm_cpu_cap_features;                      \
                                                                        \
        if (leaf < NCAPINTS)                                            \
                kvm_cpu_caps[leaf] &= kernel_cpu_caps[leaf];            \
@@ -696,7 +699,7 @@ do {                                                        
                \
 #define F(name)                                                        \
 ({                                                             \
        KVM_VALIDATE_CPU_CAP_USAGE(name);                       \
-       feature_bit(name);                                      \
+       kvm_cpu_cap_features |= feature_bit(name);              \
 })
 
 /* Scattered Flag - For features that are scattered by cpufeatures.h. */
@@ -704,14 +707,16 @@ do {                                                      
                \
 ({                                                             \
        BUILD_BUG_ON(X86_FEATURE_##name >= MAX_CPU_FEATURES);   \
        KVM_VALIDATE_CPU_CAP_USAGE(name);                       \
-       (boot_cpu_has(X86_FEATURE_##name) ? F(name) : 0);       \
+       if (boot_cpu_has(X86_FEATURE_##name))                   \
+               F(name);                                        \
 })
 
 /* Features that KVM supports only on 64-bit kernels. */
 #define X86_64_F(name)                                         \
 ({                                                             \
        KVM_VALIDATE_CPU_CAP_USAGE(name);                       \
-       (IS_ENABLED(CONFIG_X86_64) ? F(name) : 0);              \
+       if (IS_ENABLED(CONFIG_X86_64))                          \
+               F(name);                                        \
 })
 
 /*
@@ -720,7 +725,7 @@ do {                                                        
                \
  */
 #define EMULATED_F(name)                                       \
 ({                                                             \
-       kvm_cpu_cap_emulated |= F(name);                        \
+       kvm_cpu_cap_emulated |= feature_bit(name);              \
        F(name);                                                \
 })
 
@@ -731,7 +736,7 @@ do {                                                        
                \
  */
 #define SYNTHESIZED_F(name)                                    \
 ({                                                             \
-       kvm_cpu_cap_synthesized |= F(name);                     \
+       kvm_cpu_cap_synthesized |= feature_bit(name);           \
        F(name);                                                \
 })
 
@@ -743,7 +748,7 @@ do {                                                        
                \
  */
 #define PASSTHROUGH_F(name)                                    \
 ({                                                             \
-       kvm_cpu_cap_passthrough |= F(name);                     \
+       kvm_cpu_cap_passthrough |= feature_bit(name);           \
        F(name);                                                \
 })
 
@@ -755,7 +760,7 @@ do {                                                        
                \
 ({                                                                             
\
        BUILD_BUG_ON(__feature_leaf(X86_FEATURE_##name) != CPUID_1_EDX);        
\
        BUILD_BUG_ON(kvm_cpu_cap_init_in_progress != CPUID_8000_0001_EDX);      
\
-       feature_bit(name);                                                      
\
+       kvm_cpu_cap_features |= feature_bit(name);                              
\
 })
 
 /*
@@ -765,7 +770,6 @@ do {                                                        
                \
 #define VENDOR_F(name)                                         \
 ({                                                             \
        KVM_VALIDATE_CPU_CAP_USAGE(name);                       \
-       0;                                                      \
 })
 
 /*
@@ -775,7 +779,6 @@ do {                                                        
                \
 #define RUNTIME_F(name)                                                \
 ({                                                             \
        KVM_VALIDATE_CPU_CAP_USAGE(name);                       \
-       0;                                                      \
 })
 
 /*
@@ -795,126 +798,128 @@ void kvm_set_cpu_caps(void)
                     sizeof(boot_cpu_data.x86_capability));
 
        kvm_cpu_cap_init(CPUID_1_ECX,
-               F(XMM3) |
-               F(PCLMULQDQ) |
-               VENDOR_F(DTES64) |
+               F(XMM3),
+               F(PCLMULQDQ),
+               VENDOR_F(DTES64),
                /*
                 * NOTE: MONITOR (and MWAIT) are emulated as NOP, but *not*
                 * advertised to guests via CPUID!  MWAIT is also technically a
                 * runtime flag thanks to IA32_MISC_ENABLES; mark it as such so
                 * that KVM is aware that it's a known, unadvertised flag.
                 */
-               RUNTIME_F(MWAIT) |
-               VENDOR_F(VMX) |
-               0 /* DS-CPL, SMX, EST */ |
-               0 /* TM2 */ |
-               F(SSSE3) |
-               0 /* CNXT-ID */ |
-               0 /* Reserved */ |
-               F(FMA) |
-               F(CX16) |
-               0 /* xTPR Update */ |
-               F(PDCM) |
-               F(PCID) |
-               0 /* Reserved, DCA */ |
-               F(XMM4_1) |
-               F(XMM4_2) |
-               EMULATED_F(X2APIC) |
-               F(MOVBE) |
-               F(POPCNT) |
-               EMULATED_F(TSC_DEADLINE_TIMER) |
-               F(AES) |
-               F(XSAVE) |
-               RUNTIME_F(OSXSAVE) |
-               F(AVX) |
-               F(F16C) |
-               F(RDRAND) |
-               EMULATED_F(HYPERVISOR)
+               RUNTIME_F(MWAIT),
+               /* DS-CPL */
+               VENDOR_F(VMX),
+               /* SMX, EST */
+               /* TM2 */
+               F(SSSE3),
+               /* CNXT-ID */
+               /* Reserved */
+               F(FMA),
+               F(CX16),
+               /* xTPR Update */
+               F(PDCM),
+               F(PCID),
+               /* Reserved, DCA */
+               F(XMM4_1),
+               F(XMM4_2),
+               EMULATED_F(X2APIC),
+               F(MOVBE),
+               F(POPCNT),
+               EMULATED_F(TSC_DEADLINE_TIMER),
+               F(AES),
+               F(XSAVE),
+               RUNTIME_F(OSXSAVE),
+               F(AVX),
+               F(F16C),
+               F(RDRAND),
+               EMULATED_F(HYPERVISOR),
        );
 
        kvm_cpu_cap_init(CPUID_1_EDX,
-               F(FPU) |
-               F(VME) |
-               F(DE) |
-               F(PSE) |
-               F(TSC) |
-               F(MSR) |
-               F(PAE) |
-               F(MCE) |
-               F(CX8) |
-               F(APIC) |
-               0 /* Reserved */ |
-               F(SEP) |
-               F(MTRR) |
-               F(PGE) |
-               F(MCA) |
-               F(CMOV) |
-               F(PAT) |
-               F(PSE36) |
-               0 /* PSN */ |
-               F(CLFLUSH) |
-               0 /* Reserved */ |
-               VENDOR_F(DS) |
-               0 /* ACPI */ |
-               F(MMX) |
-               F(FXSR) |
-               F(XMM) |
-               F(XMM2) |
-               F(SELFSNOOP) |
-               0 /* HTT, TM, Reserved, PBE */
+               F(FPU),
+               F(VME),
+               F(DE),
+               F(PSE),
+               F(TSC),
+               F(MSR),
+               F(PAE),
+               F(MCE),
+               F(CX8),
+               F(APIC),
+               /* Reserved */
+               F(SEP),
+               F(MTRR),
+               F(PGE),
+               F(MCA),
+               F(CMOV),
+               F(PAT),
+               F(PSE36),
+               /* PSN */
+               F(CLFLUSH),
+               /* Reserved */
+               VENDOR_F(DS),
+               /* ACPI */
+               F(MMX),
+               F(FXSR),
+               F(XMM),
+               F(XMM2),
+               F(SELFSNOOP),
+               /* HTT, TM, Reserved, PBE */
        );
 
        kvm_cpu_cap_init(CPUID_7_0_EBX,
-               F(FSGSBASE) |
-               EMULATED_F(TSC_ADJUST) |
-               F(SGX) |
-               F(BMI1) |
-               F(HLE) |
-               F(AVX2) |
-               F(FDP_EXCPTN_ONLY) |
-               F(SMEP) |
-               F(BMI2) |
-               F(ERMS) |
-               F(INVPCID) |
-               F(RTM) |
-               F(ZERO_FCS_FDS) |
-               VENDOR_F(MPX) |
-               F(AVX512F) |
-               F(AVX512DQ) |
-               F(RDSEED) |
-               F(ADX) |
-               F(SMAP) |
-               F(AVX512IFMA) |
-               F(CLFLUSHOPT) |
-               F(CLWB) |
-               VENDOR_F(INTEL_PT) |
-               F(AVX512PF) |
-               F(AVX512ER) |
-               F(AVX512CD) |
-               F(SHA_NI) |
-               F(AVX512BW) |
-               F(AVX512VL));
+               F(FSGSBASE),
+               EMULATED_F(TSC_ADJUST),
+               F(SGX),
+               F(BMI1),
+               F(HLE),
+               F(AVX2),
+               F(FDP_EXCPTN_ONLY),
+               F(SMEP),
+               F(BMI2),
+               F(ERMS),
+               F(INVPCID),
+               F(RTM),
+               F(ZERO_FCS_FDS),
+               VENDOR_F(MPX),
+               F(AVX512F),
+               F(AVX512DQ),
+               F(RDSEED),
+               F(ADX),
+               F(SMAP),
+               F(AVX512IFMA),
+               F(CLFLUSHOPT),
+               F(CLWB),
+               VENDOR_F(INTEL_PT),
+               F(AVX512PF),
+               F(AVX512ER),
+               F(AVX512CD),
+               F(SHA_NI),
+               F(AVX512BW),
+               F(AVX512VL),
+       );
 
        kvm_cpu_cap_init(CPUID_7_ECX,
-               F(AVX512VBMI) |
-               PASSTHROUGH_F(LA57) |
-               F(PKU) |
-               RUNTIME_F(OSPKE) |
-               F(RDPID) |
-               F(AVX512_VPOPCNTDQ) |
-               F(UMIP) |
-               F(AVX512_VBMI2) |
-               F(GFNI) |
-               F(VAES) |
-               F(VPCLMULQDQ) |
-               F(AVX512_VNNI) |
-               F(AVX512_BITALG) |
-               F(CLDEMOTE) |
-               F(MOVDIRI) |
-               F(MOVDIR64B) |
-               VENDOR_F(WAITPKG) |
-               F(SGX_LC) |
-               F(BUS_LOCK_DETECT)
+               F(AVX512VBMI),
+               PASSTHROUGH_F(LA57),
+               F(PKU),
+               RUNTIME_F(OSPKE),
+               F(RDPID),
+               F(AVX512_VPOPCNTDQ),
+               F(UMIP),
+               F(AVX512_VBMI2),
+               F(GFNI),
+               F(VAES),
+               F(VPCLMULQDQ),
+               F(AVX512_VNNI),
+               F(AVX512_BITALG),
+               F(CLDEMOTE),
+               F(MOVDIRI),
+               F(MOVDIR64B),
+               VENDOR_F(WAITPKG),
+               F(SGX_LC),
+               F(BUS_LOCK_DETECT),
        );
 
        /*
@@ -925,22 +930,22 @@ void kvm_set_cpu_caps(void)
                kvm_cpu_cap_clear(X86_FEATURE_PKU);
 
        kvm_cpu_cap_init(CPUID_7_EDX,
-               F(AVX512_4VNNIW) |
-               F(AVX512_4FMAPS) |
-               F(SPEC_CTRL) |
-               F(SPEC_CTRL_SSBD) |
-               EMULATED_F(ARCH_CAPABILITIES) |
-               F(INTEL_STIBP) |
-               F(MD_CLEAR) |
-               F(AVX512_VP2INTERSECT) |
-               F(FSRM) |
-               F(SERIALIZE) |
-               F(TSXLDTRK) |
-               F(AVX512_FP16) |
-               F(AMX_TILE) |
-               F(AMX_INT8) |
-               F(AMX_BF16) |
-               F(FLUSH_L1D)
+               F(AVX512_4VNNIW),
+               F(AVX512_4FMAPS),
+               F(SPEC_CTRL),
+               F(SPEC_CTRL_SSBD),
+               EMULATED_F(ARCH_CAPABILITIES),
+               F(INTEL_STIBP),
+               F(MD_CLEAR),
+               F(AVX512_VP2INTERSECT),
+               F(FSRM),
+               F(SERIALIZE),
+               F(TSXLDTRK),
+               F(AVX512_FP16),
+               F(AMX_TILE),
+               F(AMX_INT8),
+               F(AMX_BF16),
+               F(FLUSH_L1D),
        );
 
        if (boot_cpu_has(X86_FEATURE_AMD_IBPB_RET) &&
@@ -953,132 +958,132 @@ void kvm_set_cpu_caps(void)
                kvm_cpu_cap_set(X86_FEATURE_SPEC_CTRL_SSBD);
 
        kvm_cpu_cap_init(CPUID_7_1_EAX,
-               F(SHA512) |
-               F(SM3) |
-               F(SM4) |
-               F(AVX_VNNI) |
-               F(AVX512_BF16) |
-               F(CMPCCXADD) |
-               F(FZRM) |
-               F(FSRS) |
-               F(FSRC) |
-               F(AMX_FP16) |
-               F(AVX_IFMA) |
-               F(LAM)
+               F(SHA512),
+               F(SM3),
+               F(SM4),
+               F(AVX_VNNI),
+               F(AVX512_BF16),
+               F(CMPCCXADD),
+               F(FZRM),
+               F(FSRS),
+               F(FSRC),
+               F(AMX_FP16),
+               F(AVX_IFMA),
+               F(LAM),
        );
 
        kvm_cpu_cap_init(CPUID_7_1_EDX,
-               F(AVX_VNNI_INT8) |
-               F(AVX_NE_CONVERT) |
-               F(AMX_COMPLEX) |
-               F(AVX_VNNI_INT16) |
-               F(PREFETCHITI) |
-               F(AVX10)
+               F(AVX_VNNI_INT8),
+               F(AVX_NE_CONVERT),
+               F(AMX_COMPLEX),
+               F(AVX_VNNI_INT16),
+               F(PREFETCHITI),
+               F(AVX10),
        );
 
        kvm_cpu_cap_init(CPUID_7_2_EDX,
-               F(INTEL_PSFD) |
-               F(IPRED_CTRL) |
-               F(RRSBA_CTRL) |
-               F(DDPD_U) |
-               F(BHI_CTRL) |
-               F(MCDT_NO)
+               F(INTEL_PSFD),
+               F(IPRED_CTRL),
+               F(RRSBA_CTRL),
+               F(DDPD_U),
+               F(BHI_CTRL),
+               F(MCDT_NO),
        );
 
        kvm_cpu_cap_init(CPUID_D_1_EAX,
-               F(XSAVEOPT) |
-               F(XSAVEC) |
-               F(XGETBV1) |
-               F(XSAVES) |
-               X86_64_F(XFD)
+               F(XSAVEOPT),
+               F(XSAVEC),
+               F(XGETBV1),
+               F(XSAVES),
+               X86_64_F(XFD),
        );
 
        kvm_cpu_cap_init(CPUID_12_EAX,
-               SCATTERED_F(SGX1) |
-               SCATTERED_F(SGX2) |
-               SCATTERED_F(SGX_EDECCSSA)
+               SCATTERED_F(SGX1),
+               SCATTERED_F(SGX2),
+               SCATTERED_F(SGX_EDECCSSA),
        );
 
        kvm_cpu_cap_init(CPUID_24_0_EBX,
-               F(AVX10_128) |
-               F(AVX10_256) |
-               F(AVX10_512)
+               F(AVX10_128),
+               F(AVX10_256),
+               F(AVX10_512),
        );
 
        kvm_cpu_cap_init(CPUID_8000_0001_ECX,
-               F(LAHF_LM) |
-               F(CMP_LEGACY) |
-               VENDOR_F(SVM) |
-               0 /* ExtApicSpace */ |
-               F(CR8_LEGACY) |
-               F(ABM) |
-               F(SSE4A) |
-               F(MISALIGNSSE) |
-               F(3DNOWPREFETCH) |
-               F(OSVW) |
-               0 /* IBS */ |
-               F(XOP) |
-               0 /* SKINIT, WDT, LWP */ |
-               F(FMA4) |
-               F(TBM) |
-               F(TOPOEXT) |
-               VENDOR_F(PERFCTR_CORE)
+               F(LAHF_LM),
+               F(CMP_LEGACY),
+               VENDOR_F(SVM),
+               /* ExtApicSpace */
+               F(CR8_LEGACY),
+               F(ABM),
+               F(SSE4A),
+               F(MISALIGNSSE),
+               F(3DNOWPREFETCH),
+               F(OSVW),
+               /* IBS */
+               F(XOP),
+               /* SKINIT, WDT, LWP */
+               F(FMA4),
+               F(TBM),
+               F(TOPOEXT),
+               VENDOR_F(PERFCTR_CORE),
        );
 
        kvm_cpu_cap_init(CPUID_8000_0001_EDX,
-               ALIASED_1_EDX_F(FPU) |
-               ALIASED_1_EDX_F(VME) |
-               ALIASED_1_EDX_F(DE) |
-               ALIASED_1_EDX_F(PSE) |
-               ALIASED_1_EDX_F(TSC) |
-               ALIASED_1_EDX_F(MSR) |
-               ALIASED_1_EDX_F(PAE) |
-               ALIASED_1_EDX_F(MCE) |
-               ALIASED_1_EDX_F(CX8) |
-               ALIASED_1_EDX_F(APIC) |
-               0 /* Reserved */ |
-               F(SYSCALL) |
-               ALIASED_1_EDX_F(MTRR) |
-               ALIASED_1_EDX_F(PGE) |
-               ALIASED_1_EDX_F(MCA) |
-               ALIASED_1_EDX_F(CMOV) |
-               ALIASED_1_EDX_F(PAT) |
-               ALIASED_1_EDX_F(PSE36) |
-               0 /* Reserved */ |
-               F(NX) |
-               0 /* Reserved */ |
-               F(MMXEXT) |
-               ALIASED_1_EDX_F(MMX) |
-               ALIASED_1_EDX_F(FXSR) |
-               F(FXSR_OPT) |
-               X86_64_F(GBPAGES) |
-               F(RDTSCP) |
-               0 /* Reserved */ |
-               X86_64_F(LM) |
-               F(3DNOWEXT) |
-               F(3DNOW)
+               ALIASED_1_EDX_F(FPU),
+               ALIASED_1_EDX_F(VME),
+               ALIASED_1_EDX_F(DE),
+               ALIASED_1_EDX_F(PSE),
+               ALIASED_1_EDX_F(TSC),
+               ALIASED_1_EDX_F(MSR),
+               ALIASED_1_EDX_F(PAE),
+               ALIASED_1_EDX_F(MCE),
+               ALIASED_1_EDX_F(CX8),
+               ALIASED_1_EDX_F(APIC),
+               /* Reserved */
+               F(SYSCALL),
+               ALIASED_1_EDX_F(MTRR),
+               ALIASED_1_EDX_F(PGE),
+               ALIASED_1_EDX_F(MCA),
+               ALIASED_1_EDX_F(CMOV),
+               ALIASED_1_EDX_F(PAT),
+               ALIASED_1_EDX_F(PSE36),
+               /* Reserved */
+               F(NX),
+               /* Reserved */
+               F(MMXEXT),
+               ALIASED_1_EDX_F(MMX),
+               ALIASED_1_EDX_F(FXSR),
+               F(FXSR_OPT),
+               X86_64_F(GBPAGES),
+               F(RDTSCP),
+               /* Reserved */
+               X86_64_F(LM),
+               F(3DNOWEXT),
+               F(3DNOW),
        );
 
        if (!tdp_enabled && IS_ENABLED(CONFIG_X86_64))
                kvm_cpu_cap_set(X86_FEATURE_GBPAGES);
 
        kvm_cpu_cap_init(CPUID_8000_0007_EDX,
-               SCATTERED_F(CONSTANT_TSC)
+               SCATTERED_F(CONSTANT_TSC),
        );
 
        kvm_cpu_cap_init(CPUID_8000_0008_EBX,
-               F(CLZERO) |
-               F(XSAVEERPTR) |
-               F(WBNOINVD) |
-               F(AMD_IBPB) |
-               F(AMD_IBRS) |
-               F(AMD_SSBD) |
-               F(VIRT_SSBD) |
-               F(AMD_SSB_NO) |
-               F(AMD_STIBP) |
-               F(AMD_STIBP_ALWAYS_ON) |
-               F(AMD_PSFD) |
-               F(AMD_IBPB_RET)
+               F(CLZERO),
+               F(XSAVEERPTR),
+               F(WBNOINVD),
+               F(AMD_IBPB),
+               F(AMD_IBRS),
+               F(AMD_SSBD),
+               F(VIRT_SSBD),
+               F(AMD_SSB_NO),
+               F(AMD_STIBP),
+               F(AMD_STIBP_ALWAYS_ON),
+               F(AMD_PSFD),
+               F(AMD_IBPB_RET),
        );
 
        /*
@@ -1110,30 +1115,30 @@ void kvm_set_cpu_caps(void)
 
        /* All SVM features required additional vendor module enabling. */
        kvm_cpu_cap_init(CPUID_8000_000A_EDX,
-               VENDOR_F(NPT) |
-               VENDOR_F(VMCBCLEAN) |
-               VENDOR_F(FLUSHBYASID) |
-               VENDOR_F(NRIPS) |
-               VENDOR_F(TSCRATEMSR) |
-               VENDOR_F(V_VMSAVE_VMLOAD) |
-               VENDOR_F(LBRV) |
-               VENDOR_F(PAUSEFILTER) |
-               VENDOR_F(PFTHRESHOLD) |
-               VENDOR_F(VGIF) |
-               VENDOR_F(VNMI) |
-               VENDOR_F(SVME_ADDR_CHK)
+               VENDOR_F(NPT),
+               VENDOR_F(VMCBCLEAN),
+               VENDOR_F(FLUSHBYASID),
+               VENDOR_F(NRIPS),
+               VENDOR_F(TSCRATEMSR),
+               VENDOR_F(V_VMSAVE_VMLOAD),
+               VENDOR_F(LBRV),
+               VENDOR_F(PAUSEFILTER),
+               VENDOR_F(PFTHRESHOLD),
+               VENDOR_F(VGIF),
+               VENDOR_F(VNMI),
+               VENDOR_F(SVME_ADDR_CHK),
        );
 
        kvm_cpu_cap_init(CPUID_8000_001F_EAX,
-               VENDOR_F(SME) |
-               VENDOR_F(SEV) |
-               0 /* VM_PAGE_FLUSH */ |
-               VENDOR_F(SEV_ES) |
-               F(SME_COHERENT)
+               VENDOR_F(SME),
+               VENDOR_F(SEV),
+               /* VM_PAGE_FLUSH */
+               VENDOR_F(SEV_ES),
+               F(SME_COHERENT),
        );
 
        kvm_cpu_cap_init(CPUID_8000_0021_EAX,
-               F(NO_NESTED_DATA_BP) |
+               F(NO_NESTED_DATA_BP),
                /*
                 * Synthesize "LFENCE is serializing" into the AMD-defined entry
                 * in KVM's supported CPUID, i.e. if the feature is reported as
@@ -1144,36 +1149,36 @@ void kvm_set_cpu_caps(void)
                 * CPUID will drop the flags, and reporting support in AMD's
                 * leaf can make it easier for userspace to detect the feature.
                 */
-               SYNTHESIZED_F(LFENCE_RDTSC) |
-               0 /* SmmPgCfgLock */ |
-               F(NULL_SEL_CLR_BASE) |
-               F(AUTOIBRS) |
-               EMULATED_F(NO_SMM_CTL_MSR) |
-               0 /* PrefetchCtlMsr */ |
-               F(WRMSR_XX_BASE_NS) |
-               SYNTHESIZED_F(SBPB) |
-               SYNTHESIZED_F(IBPB_BRTYPE) |
-               SYNTHESIZED_F(SRSO_NO)
+               SYNTHESIZED_F(LFENCE_RDTSC),
+               /* SmmPgCfgLock */
+               F(NULL_SEL_CLR_BASE),
+               F(AUTOIBRS),
+               EMULATED_F(NO_SMM_CTL_MSR),
+               /* PrefetchCtlMsr */
+               F(WRMSR_XX_BASE_NS),
+               SYNTHESIZED_F(SBPB),
+               SYNTHESIZED_F(IBPB_BRTYPE),
+               SYNTHESIZED_F(SRSO_NO),
        );
 
        kvm_cpu_cap_init(CPUID_8000_0022_EAX,
-               F(PERFMON_V2)
+               F(PERFMON_V2),
        );
 
        if (!static_cpu_has_bug(X86_BUG_NULL_SEG))
                kvm_cpu_cap_set(X86_FEATURE_NULL_SEL_CLR_BASE);
 
        kvm_cpu_cap_init(CPUID_C000_0001_EDX,
-               F(XSTORE) |
-               F(XSTORE_EN) |
-               F(XCRYPT) |
-               F(XCRYPT_EN) |
-               F(ACE2) |
-               F(ACE2_EN) |
-               F(PHE) |
-               F(PHE_EN) |
-               F(PMM) |
-               F(PMM_EN)
+               F(XSTORE),
+               F(XSTORE_EN),
+               F(XCRYPT),
+               F(XCRYPT_EN),
+               F(ACE2),
+               F(ACE2_EN),
+               F(PHE),
+               F(PHE_EN),
+               F(PMM),
+               F(PMM_EN),
        );
 
        /*
-- 
2.47.0.338.g60cca15819-goog


Reply via email to