Skip to contentSkip to conversation

Work around xstate_size export for kvm-kmod

PATCH In review Zachary Amsden 2 participants 2 messages Aug 20, 2010 KVM

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Work around xstate_size export for kvm-kmod

Here's another fix I discovered porting work to upstream today.

Cheers,

Zach

Quoted 1 line

From 84b75d80718e4e4af2d153250a77a5f50cffc152 Mon Sep 17 00:00:00 2001

From: Zachary Amsden <[email protected]>
Date: Thu, 19 Aug 2010 21:20:50 -1000
Subject: [PATCH] Give KVM module xstate_size

This was just recently exported, but now KVM depends on it.

---
 sync                         |    1 +
 x86/external-module-compat.h |   14 ++++++++++++++
 2 files changed, 15 insertions(+), 0 deletions(-)
sync +1 -0
index c124fc7..b644f4d 100755
@@ -45,6 +45,7 @@ def hack_content(data):
         'set_desc_base set_desc_limit pvclock_vcpu_time_info tboot_enabled '
         'i387_fxsave_struct native_write_msr_safe xsave_struct '
         'fpu_alloc fpu_free fpu_restore_checking fpu_save_init fpu_finit '
+	'xstate_size '
         )
     kvm_init = kvm_exit = False
     mce = False
x86/external-module-compat.h +14 -0
index ead5b5a..464d6a8 100644
@@ -883,6 +883,18 @@ union kvm_thread_xstate {
 	struct kvm_xsave_struct xsave;
 };
 
+static inline unsigned int kvm_xstate_size_cache(void)
+{
+	static unsigned int xstate_size = 0;
+	if (!xstate_size) {
+		unsigned int eax, ebx, ecx, edx;
+		cpuid_count(0xd, 0, &eax, &ebx, &ecx, &edx);
+        	xstate_size = ebx;
+	}
+	return xstate_size;
+}
+#define kvm_xstate_size kvm_xstate_size_cache()
+
 #else /* >= 2.6.35 */
 
 #define kvm_i387_fxsave_struct	i387_fxsave_struct
@@ -956,6 +968,8 @@ static inline void kvm_fpu_save_init(struct kvm_compat_fpu *fpu)
 #define kvm_fpu_save_init		fpu_save_init
 #define kvm_fpu_finit			fpu_finit
 
+#define kvm_xstate_size			xstate_size
+
 #endif /* >= 2.6.36 */
 
 #ifndef XSTATE_FP
Signature · 1 line
1.7.1
#1 lore raw
Quoted 2 lines · Zachary Amsden

Here's another fix I discovered porting work to upstream today.

Thanks, Zach.

Actually, I already hacked up a similar fix but forgot to merge next into master (might be worth having an eye on that branch as well, I always forget something...). Please check that version, and if it works for you as well, I will make it official.

Jan

Signature · 2 lines
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux