The VMCS read  will be needed by the kvm-trace probes. Put them in
static inline functions in system-side headers instead of in the C file.

Signed-off-by: Mathieu Desnoyers <[EMAIL PROTECTED]>
CC: 'Peter Zijlstra' <[EMAIL PROTECTED]>
CC: 'Feng(Eric) Liu' <[EMAIL PROTECTED]>
CC: Avi Kivity <[EMAIL PROTECTED]>
CC: kvm@vger.kernel.org
---
 arch/x86/kvm/vmx.c         |   28 ----------------------------
 include/asm-x86/kvm_host.h |   30 ++++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 28 deletions(-)

Index: linux-2.6-lttng/arch/x86/kvm/vmx.c
===================================================================
--- linux-2.6-lttng.orig/arch/x86/kvm/vmx.c     2008-07-17 11:41:54.000000000 
-0400
+++ linux-2.6-lttng/arch/x86/kvm/vmx.c  2008-07-17 11:41:58.000000000 -0400
@@ -388,34 +388,6 @@ static inline void ept_sync_individual_a
        }
 }
 
-static unsigned long vmcs_readl(unsigned long field)
-{
-       unsigned long value;
-
-       asm volatile (__ex(ASM_VMX_VMREAD_RDX_RAX)
-                     : "=a"(value) : "d"(field) : "cc");
-       return value;
-}
-
-static u16 vmcs_read16(unsigned long field)
-{
-       return vmcs_readl(field);
-}
-
-static u32 vmcs_read32(unsigned long field)
-{
-       return vmcs_readl(field);
-}
-
-static u64 vmcs_read64(unsigned long field)
-{
-#ifdef CONFIG_X86_64
-       return vmcs_readl(field);
-#else
-       return vmcs_readl(field) | ((u64)vmcs_readl(field+1) << 32);
-#endif
-}
-
 static noinline void vmwrite_error(unsigned long field, unsigned long value)
 {
        printk(KERN_ERR "vmwrite error: reg %lx value %lx (err %d)\n",
Index: linux-2.6-lttng/include/asm-x86/kvm_host.h
===================================================================
--- linux-2.6-lttng.orig/include/asm-x86/kvm_host.h     2008-07-17 
11:41:57.000000000 -0400
+++ linux-2.6-lttng/include/asm-x86/kvm_host.h  2008-07-17 11:42:17.000000000 
-0400
@@ -719,6 +719,8 @@ asmlinkage void kvm_handle_fault_on_rebo
        KVM_EX_ENTRY " 666b, 667b \n\t" \
        ".popsection"
 
+#define __ex(x) __kvm_handle_fault_on_reboot(x)
+
 /* VMCS Encodings */
 enum vmcs_field {
        VIRTUAL_PROCESSOR_ID            = 0x00000000,
@@ -861,4 +863,32 @@ enum vmcs_field {
        HOST_RIP                        = 0x00006c16,
 };
 
+static inline unsigned long vmcs_readl(unsigned long field)
+{
+       unsigned long value;
+
+       asm volatile (__ex(ASM_VMX_VMREAD_RDX_RAX)
+                     : "=a"(value) : "d"(field) : "cc");
+       return value;
+}
+
+static inline u16 vmcs_read16(unsigned long field)
+{
+       return vmcs_readl(field);
+}
+
+static inline u32 vmcs_read32(unsigned long field)
+{
+       return vmcs_readl(field);
+}
+
+static inline u64 vmcs_read64(unsigned long field)
+{
+#ifdef CONFIG_X86_64
+       return vmcs_readl(field);
+#else
+       return vmcs_readl(field) | ((u64)vmcs_readl(field+1) << 32);
+#endif
+}
+
 #endif

-- 
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to