From 9f052257dfdbd3e22338960c77ad057364435ae8 Mon Sep 17 00:00:00 2001
From: Zhang Xiantao <xiantao.zhang@intel.com>
Date: Wed, 12 Dec 2007 03:12:34 +0800
Subject: [PATCH] kvm/ia64. kernel patch

Since kernel is not fully friendly to support kvm,
need a kernel patch here.
Signed-off-by: Zhang Xiantao <xiantao.zhang@intel.com>
---
 arch/ia64/kvm/kernel.patch |   75 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 75 insertions(+), 0 deletions(-)
 create mode 100644 arch/ia64/kvm/kernel.patch

diff --git a/arch/ia64/kvm/kernel.patch b/arch/ia64/kvm/kernel.patch
new file mode 100644
index 0000000..b4c0fad
--- /dev/null
+++ b/arch/ia64/kvm/kernel.patch
@@ -0,0 +1,75 @@
+diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c
+index c3b4412..43d227f 100644
+--- a/arch/ia64/kernel/ia64_ksyms.c
++++ b/arch/ia64/kernel/ia64_ksyms.c
+@@ -12,6 +12,9 @@ EXPORT_SYMBOL(memset);
+ EXPORT_SYMBOL(memcpy);
+ EXPORT_SYMBOL(strlen);
+ 
++#include<asm/pgtable.h>
++EXPORT_SYMBOL(empty_zero_page);
++
+ #include <asm/checksum.h>
+ EXPORT_SYMBOL(ip_fast_csum);		/* hand-coded assembly */
+ EXPORT_SYMBOL(csum_ipv6_magic);
+diff --git a/arch/ia64/kernel/sal.c b/arch/ia64/kernel/sal.c
+index 27c2ef4..67c1d34 100644
+--- a/arch/ia64/kernel/sal.c
++++ b/arch/ia64/kernel/sal.c
+@@ -284,6 +284,7 @@ ia64_sal_cache_flush (u64 cache_type)
+ 	SAL_CALL(isrv, SAL_CACHE_FLUSH, cache_type, 0, 0, 0, 0, 0, 0);
+ 	return isrv.status;
+ }
++EXPORT_SYMBOL(ia64_sal_cache_flush);
+ 
+ void __init
+ ia64_sal_init (struct ia64_sal_systab *systab)
+@@ -372,3 +373,16 @@ ia64_sal_oemcall_reentrant(struct ia64_sal_retval *isrvp, u64 oemfunc,
+ 	return 0;
+ }
+ EXPORT_SYMBOL(ia64_sal_oemcall_reentrant);
++
++long
++ia64_sal_freq_base (unsigned long which, unsigned long *ticks_per_second,
++		    unsigned long *drift_info)
++{
++	struct ia64_sal_retval isrv;
++
++	SAL_CALL(isrv, SAL_FREQ_BASE, which, 0, 0, 0, 0, 0, 0);
++	*ticks_per_second = isrv.v0;
++	*drift_info = isrv.v1;
++	return isrv.status;
++}
++EXPORT_SYMBOL(ia64_sal_freq_base);
+diff --git a/include/asm-ia64/sal.h b/include/asm-ia64/sal.h
+index 1f5412d..2251118 100644
+--- a/include/asm-ia64/sal.h
++++ b/include/asm-ia64/sal.h
+@@ -649,17 +649,6 @@ typedef struct err_rec {
+  * Now define a couple of inline functions for improved type checking
+  * and convenience.
+  */
+-static inline long
+-ia64_sal_freq_base (unsigned long which, unsigned long *ticks_per_second,
+-		    unsigned long *drift_info)
+-{
+-	struct ia64_sal_retval isrv;
+-
+-	SAL_CALL(isrv, SAL_FREQ_BASE, which, 0, 0, 0, 0, 0, 0);
+-	*ticks_per_second = isrv.v0;
+-	*drift_info = isrv.v1;
+-	return isrv.status;
+-}
+ 
+ extern s64 ia64_sal_cache_flush (u64 cache_type);
+ extern void __init check_sal_cache_flush (void);
+@@ -841,6 +830,9 @@ extern int ia64_sal_oemcall_nolock(struct ia64_sal_retval *, u64, u64, u64,
+ 				   u64, u64, u64, u64, u64);
+ extern int ia64_sal_oemcall_reentrant(struct ia64_sal_retval *, u64, u64, u64,
+ 				      u64, u64, u64, u64, u64);
++extern long
++ia64_sal_freq_base (unsigned long which, unsigned long *ticks_per_second,
++		    unsigned long *drift_info);
+ #ifdef CONFIG_HOTPLUG_CPU
+ /*
+  * System Abstraction Layer Specification
-- 
1.5.1

