diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86_64.c | 16 |
1 files changed, 11 insertions, 5 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"); |