[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH 06/11] x86/kvm: Add support for Hygon's Dhyana Family 18h processor



This patch enables the x86 KVM support to Hygon Family 18h CPU:
- Add Hygon CPU VENDOR ID macro for KVM.
- Add SVM support in cpu_has_svm().
- Add support in em_syscall_is_enabled().

Signed-off-by: Pu Wen <puwen@xxxxxxxx>
---
 arch/x86/include/asm/kvm_emulate.h | 4 ++++
 arch/x86/include/asm/virtext.h     | 5 +++--
 arch/x86/kvm/emulate.c             | 8 +++++++-
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/arch/x86/include/asm/kvm_emulate.h 
b/arch/x86/include/asm/kvm_emulate.h
index b24b1c8..a4907e5 100644
--- a/arch/x86/include/asm/kvm_emulate.h
+++ b/arch/x86/include/asm/kvm_emulate.h
@@ -362,6 +362,10 @@ struct x86_emulate_ctxt {
 #define X86EMUL_CPUID_VENDOR_AMDisbetterI_ecx 0x21726574
 #define X86EMUL_CPUID_VENDOR_AMDisbetterI_edx 0x74656273
 
+#define X86EMUL_CPUID_VENDOR_HygonGenuine_ebx 0x6f677948
+#define X86EMUL_CPUID_VENDOR_HygonGenuine_ecx 0x656e6975
+#define X86EMUL_CPUID_VENDOR_HygonGenuine_edx 0x6e65476e
+
 #define X86EMUL_CPUID_VENDOR_GenuineIntel_ebx 0x756e6547
 #define X86EMUL_CPUID_VENDOR_GenuineIntel_ecx 0x6c65746e
 #define X86EMUL_CPUID_VENDOR_GenuineIntel_edx 0x49656e69
diff --git a/arch/x86/include/asm/virtext.h b/arch/x86/include/asm/virtext.h
index 0116b2e..e05e0d3 100644
--- a/arch/x86/include/asm/virtext.h
+++ b/arch/x86/include/asm/virtext.h
@@ -83,9 +83,10 @@ static inline void cpu_emergency_vmxoff(void)
  */
 static inline int cpu_has_svm(const char **msg)
 {
-       if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) {
+       if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD &&
+           boot_cpu_data.x86_vendor != X86_VENDOR_HYGON) {
                if (msg)
-                       *msg = "not amd";
+                       *msg = "not amd or hygon";
                return 0;
        }
 
diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index b3705ae..fbba814 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2702,7 +2702,13 @@ static bool em_syscall_is_enabled(struct 
x86_emulate_ctxt *ctxt)
            edx == X86EMUL_CPUID_VENDOR_AMDisbetterI_edx)
                return true;
 
-       /* default: (not Intel, not AMD), apply Intel's stricter rules... */
+       /* Hygon ("HygonGenuine") */
+       if (ebx == X86EMUL_CPUID_VENDOR_HygonGenuine_ebx &&
+           ecx == X86EMUL_CPUID_VENDOR_HygonGenuine_ecx &&
+           edx == X86EMUL_CPUID_VENDOR_HygonGenuine_edx)
+               return true;
+
+       /* default: (not Intel, not AMD or Hygon), apply Intel's stricter 
rules... */
        return false;
 }
 
-- 
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.