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

[Crash-utility] [PATCH 2/7] Make XEN_VIRT_START depend on Xen version



The XEN_VIRT_START constant was changed in Xen4, so it can no longer be a 
simple define. Initialize it to its correct value depending on the Xen major 
version.

Signed-off-by: Petr Tesarik <ptesarik suse cz>

---
 xen_hyper.c      |    7 +++++++
 xen_hyper_defs.h |    5 ++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

--- a/xen_hyper.c
+++ b/xen_hyper.c
@@ -42,6 +42,13 @@ xen_hyper_init(void)
 	long member_offset;
 #endif
 
+#ifdef X86_64
+	if (xen_major_version() >= 4)
+		xht->xen_virt_start = 0xffff82c480000000;
+	else
+		xht->xen_virt_start = 0xffff828c80000000;
+#endif
+
 	if (machine_type("X86_64") &&
 	    symbol_exists("xen_phys_start") && !xen_phys_start())
 		error(WARNING, 
--- a/xen_hyper_defs.h
+++ b/xen_hyper_defs.h
@@ -65,7 +65,7 @@
 #define DIRECTMAP_VIRT_START  (0xffff830000000000)
 #define DIRECTMAP_VIRT_END    (0xffff840000000000)
 #define PAGE_OFFSET_XEN_HYPER DIRECTMAP_VIRT_START
-#define XEN_VIRT_START        (0xffff828c80000000)
+#define XEN_VIRT_START        (xht->xen_virt_start)
 #define XEN_VIRT_ADDR(vaddr) \
     (((vaddr) >= XEN_VIRT_START) && ((vaddr) < DIRECTMAP_VIRT_START))
 #endif
@@ -408,6 +408,9 @@ struct xen_hyper_table {
 	int percpu_shift;
 	int idle_vcpu_size;
 	ulong *idle_vcpu_array;
+#ifdef X86_64
+	ulong xen_virt_start;
+#endif
 };
 
 struct xen_hyper_dumpinfo_context {


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