mirror of
https://github.com/crash-utility/crash
synced 2025-03-04 21:37:33 +00:00
Fix for the 32-bit ARM virtual-to-physical address translation of
unity-mapped kernel virtual addresses in kernels configured with CONFIG_ARM_LPAE if the system's phys_base exceeds 4GB. (sdu.liu@huawei.com)
This commit is contained in:
parent
1cab03a298
commit
da66825399
20
arm.c
20
arm.c
@ -1095,6 +1095,18 @@ arm_lpae_vtop(ulong vaddr, ulong *pgd, physaddr_t *paddr, int verbose)
|
||||
pmd_t pmd_pte;
|
||||
pte_t pte;
|
||||
|
||||
if (!vt->vmalloc_start) {
|
||||
*paddr = LPAE_VTOP(vaddr);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!IS_VMALLOC_ADDR(vaddr)) {
|
||||
*paddr = LPAE_VTOP(vaddr);
|
||||
if (!verbose)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
if (verbose)
|
||||
fprintf(fp, "PAGE DIRECTORY: %lx\n", (ulong)pgd);
|
||||
|
||||
@ -1231,6 +1243,11 @@ arm_kvtop(struct task_context *tc, ulong kvaddr, physaddr_t *paddr, int verbose)
|
||||
if (!IS_KVADDR(kvaddr))
|
||||
return FALSE;
|
||||
|
||||
if (machdep->flags & PAE)
|
||||
return arm_lpae_vtop(kvaddr, (ulong *)vt->kernel_pgd[0],
|
||||
paddr, verbose);
|
||||
|
||||
|
||||
if (!vt->vmalloc_start) {
|
||||
*paddr = VTOP(kvaddr);
|
||||
return TRUE;
|
||||
@ -1242,9 +1259,6 @@ arm_kvtop(struct task_context *tc, ulong kvaddr, physaddr_t *paddr, int verbose)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (machdep->flags & PAE)
|
||||
return arm_lpae_vtop(kvaddr, (ulong *)vt->kernel_pgd[0],
|
||||
paddr, verbose);
|
||||
|
||||
return arm_vtop(kvaddr, (ulong *)vt->kernel_pgd[0], paddr, verbose);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user