[Crash-utility] [Crash-utility PATCH] crash: arm: LPAE: fix bugs when translating address

Dave Anderson anderson at redhat.com
Thu Dec 18 14:41:15 UTC 2014



----- Original Message -----
> For virtual address with idmap, we just use VTOP to
> do the translate. So we should not use one way for
> arm and LPAE enabled arm.
> 
> This bugs occurs when the phys_base exceeds 4G. So
> we could not meet this bugs at most case. But for
> keystone platfrom, whose codes has been upstreamed
> recently. It boots on 2G-4G physical maps, then
> rebuilds its pagetables on 16G-18G. So, its phys_base
> is 16G.
> 
> Signed-off-by: Liu Hua <sdu.liu at huawei.com>

Queued for crash-7.1.0:

  https://github.com/crash-utility/crash/commit/da668253994d8230d3a77bc4f64dda05373a6c8c

Thanks,
  Dave


> ---
>  arm.c | 20 +++++++++++++++++---
>  1 file changed, 17 insertions(+), 3 deletions(-)
> 
> diff --git a/arm.c b/arm.c
> index 23d9b51..43e3aab 100644
> --- a/arm.c
> +++ b/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);
>  }
> --
> 1.9.0
> 
> 




More information about the Crash-utility mailing list