This patch expose X86_FEATURE_PKU to guest, X86_FEATURE_PKU is referred to
as "PKU" in the hardware documentation: CPUID.7.0.ECX[3]:PKU.

Signed-off-by: Huaitong Han <huaitong....@intel.com>

diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index 156441b..29e6502 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -354,6 +354,9 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 
*entry, u32 function,
        const u32 kvm_supported_word10_x86_features =
                F(XSAVEOPT) | F(XSAVEC) | F(XGETBV1) | f_xsaves;
 
+       /* cpuid 7.0.ecx*/
+       const u32 kvm_supported_word11_x86_features = F(PKU) | 0 /*OSPKE*/;
+
        /* all calls to cpuid_count() should be made on the same cpu */
        get_cpu();
 
@@ -431,10 +434,13 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 
*entry, u32 function,
                        cpuid_mask(&entry->ebx, 9);
                        // TSC_ADJUST is emulated
                        entry->ebx |= F(TSC_ADJUST);
-               } else
+                       entry->ecx &= kvm_supported_word11_x86_features;
+                       cpuid_mask(&entry->ecx, 13);
+               } else {
                        entry->ebx = 0;
+                       entry->ecx = 0;
+               }
                entry->eax = 0;
-               entry->ecx = 0;
                entry->edx = 0;
                break;
        }
-- 
2.4.3

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to