diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index 37cb5aad71de..c5d30cab7d6f 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c @@ -2021,6 +2021,9 @@ static unsigned long __init xen_read_phys_ulong(phys_addr_t addr) return val; } +static char debug_buf[100]; +#define xen_debug_pr(...) sprintf(debug_buf, __VA_ARGS__); xen_raw_console_write(debug_buf) + /* * Translate a virtual address to a physical one without relying on mapped * page tables. @@ -2034,14 +2037,17 @@ static phys_addr_t __init xen_early_virt_to_phys(unsigned long vaddr) pte_t pte; pa = read_cr3(); +xen_debug_pr("%s: vaddr=%lx, cr3=%lx\n", __func__, vaddr, (unsigned long)pa); pgd = native_make_pgd(xen_read_phys_ulong(pa + pgd_index(vaddr) * sizeof(pgd))); +xen_debug_pr("%s: pgd=%lx\n", __func__, pgd.pgd); if (!pgd_present(pgd)) return 0; pa = pgd_val(pgd) & PTE_PFN_MASK; pud = native_make_pud(xen_read_phys_ulong(pa + pud_index(vaddr) * sizeof(pud))); +xen_debug_pr("%s: pa=%lx, pud=%lx\n", __func__, (unsigned long)pa, pud.pud); if (!pud_present(pud)) return 0; pa = pud_pfn(pud) << PAGE_SHIFT; @@ -2050,6 +2056,7 @@ static phys_addr_t __init xen_early_virt_to_phys(unsigned long vaddr) pmd = native_make_pmd(xen_read_phys_ulong(pa + pmd_index(vaddr) * sizeof(pmd))); +xen_debug_pr("%s: pa=%lx, pmd=%lx\n", __func__, (unsigned long)pa, pmd.pmd); if (!pmd_present(pmd)) return 0; pa = pmd_pfn(pmd) << PAGE_SHIFT; @@ -2058,9 +2065,11 @@ static phys_addr_t __init xen_early_virt_to_phys(unsigned long vaddr) pte = native_make_pte(xen_read_phys_ulong(pa + pte_index(vaddr) * sizeof(pte))); +xen_debug_pr("%s: pa=%lx, pte=%lx\n", __func__, (unsigned long)pa, pte.pte); if (!pte_present(pte)) return 0; pa = pte_pfn(pte) << PAGE_SHIFT; +xen_debug_pr("%s: pa=%lx\n", __func__, (unsigned long)pa); return pa | (vaddr & ~PAGE_MASK); }