aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvi Kivity <avi@qumranet.com>2008-03-26 14:49:35 +0200
committerAvi Kivity <avi@qumranet.com>2008-03-26 14:49:35 +0200
commit1f09f4eb9e0cc02bbf5f7e03ad9b7bda5c52f6f6 (patch)
tree261acf1dc50c93be8d8bbf59de64efb7c1abf744
parent91004adc7ee305fc4fb4aba8be23aa4ce3274091 (diff)
Revert "kvm: external module: kvm no longer depends on mm_count and mmdrop()"kvm-64rc2kvm-64
This reverts commit 14795bc960af5ef7286dd7207023abf28fbc118f. Needed again as 202761268a29d4cd3a3fec35e6d6f2f239374635 was reverted in kvm.git. Signed-off-by: Avi Kivity <avi@qumranet.com>
-rw-r--r--kvm/kernel/external-module-compat.h14
-rw-r--r--kvm/kernel/hack-module.awk2
2 files changed, 16 insertions, 0 deletions
diff --git a/kvm/kernel/external-module-compat.h b/kvm/kernel/external-module-compat.h
index e164eec75..98ed13f26 100644
--- a/kvm/kernel/external-module-compat.h
+++ b/kvm/kernel/external-module-compat.h
@@ -534,6 +534,20 @@ static inline void blahblah(void)
(void)empty_zero_page[0];
}
+/* __mmdrop() is not exported before 2.6.25 */
+#include <linux/sched.h>
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
+
+#define mmdrop(x) do { (void)(x); } while (0)
+#define mmget(x) do { (void)(x); } while (0)
+
+#else
+
+#define mmget(x) do { atomic_inc(x); } while (0)
+
+#endif
+
/* X86_FEATURE_NX is missing in some x86_64 kernels */
#include <asm/cpufeature.h>
diff --git a/kvm/kernel/hack-module.awk b/kvm/kernel/hack-module.awk
index dd9a2f403..455e662cf 100644
--- a/kvm/kernel/hack-module.awk
+++ b/kvm/kernel/hack-module.awk
@@ -33,6 +33,8 @@
vmx_load_host_state = 0
}
+/atomic_inc\(&kvm->mm->mm_count\);/ { $0 = "mmget(&kvm->mm->mm_count);" }
+
/^\t\.fault = / {
fcn = gensub(/,/, "", "g", $3)
$0 = "\t.VMA_OPS_FAULT(fault) = VMA_OPS_FAULT_FUNC(" fcn "),"