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

[Xen-devel] [PATCH 1/7] xen: Improve calculation of beginning of virtual address space



Xen commit 4b28bf6ae90bd83fd1113d8bdc53c3266ffeb328 (x86: re-introduce
map_domain_page() et al) once again altered virtual address space.
Current algorithm calculating its start could not cope with that change.
New version establishes this value on the base of domain_list placement
and is more generic.

Similar patch was applied to crash tool.

Signed-off-by: Daniel Kiper <daniel.kiper@xxxxxxxxxx>
---
 arch/x86_64.c  |   16 +++++++++++-----
 makedumpfile.h |    2 --
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/arch/x86_64.c b/arch/x86_64.c
index 8e61b20..d864a06 100644
--- a/arch/x86_64.c
+++ b/arch/x86_64.c
@@ -372,14 +372,20 @@ int get_xen_basic_info_x86_64(void)
                info->xen_phys_start = info->xen_crash_info.v2->xen_phys_start;
        }
 
+       info->xen_virt_start = SYMBOL(domain_list);
+
+       /*
+        * Xen virtual mapping is aligned to 1 GiB boundary.
+        * domain_list lives in bss which sits no more than
+        * 1 GiB below beginning of virtual address space.
+        */
+       info->xen_virt_start &= 0xffffffffc0000000;
+
        if (info->xen_crash_info.com &&
-           info->xen_crash_info.com->xen_major_version >= 4) {
-               info->xen_virt_start = XEN_VIRT_START_V4;
+           info->xen_crash_info.com->xen_major_version >= 4)
                info->directmap_virt_end = DIRECTMAP_VIRT_END_V4;
-       } else {
-               info->xen_virt_start = XEN_VIRT_START_V3;
+       else
                info->directmap_virt_end = DIRECTMAP_VIRT_END_V3;
-       }
 
        if (SYMBOL(pgd_l4) == NOT_FOUND_SYMBOL) {
                ERRMSG("Can't get pml4.\n");
diff --git a/makedumpfile.h b/makedumpfile.h
index a5826e0..1a87500 100644
--- a/makedumpfile.h
+++ b/makedumpfile.h
@@ -1473,8 +1473,6 @@ int get_xen_info_x86(void);
 #define DIRECTMAP_VIRT_END_V3 (0xffff840000000000)
 #define DIRECTMAP_VIRT_END_V4 (0xffff880000000000)
 #define DIRECTMAP_VIRT_END    (info->directmap_virt_end)
-#define XEN_VIRT_START_V3     (0xffff828c80000000)
-#define XEN_VIRT_START_V4     (0xffff82c480000000)
 #define XEN_VIRT_START        (info->xen_virt_start)
 #define XEN_VIRT_END          (XEN_VIRT_START + (1UL << 30))
 #define FRAMETABLE_VIRT_START 0xffff82f600000000
-- 
1.7.10.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.