On Fri, 2 Oct 2015, Ard Biesheuvel wrote:
> diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Mmu.c
> b/ArmPkg/Library/ArmLib/AArch64/AArch64Mmu.c
> index d98769b06b75..c84c872dbe60 100644
> --- a/ArmPkg/Library/ArmLib/AArch64/AArch64Mmu.c
> +++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Mmu.c
> @@ -303,8 +303,9 @@ GetBlockEntryListFromAddress (
>      }
>    }
> 
> -  // Identify the Page Level the RegionStart must belongs to
> -  PageLevel = 3 - ((BaseAddressAlignment - 12) / 9);
> +  // Identify the Page Level the RegionStart must belong to. Note
> that PageLevel
> +  // should be at least 1 since block translations are not supported at 
> level 0
> +  PageLevel = MAX (3 - ((BaseAddressAlignment - 12) / 9), 1);
> 
>    // If the required size is smaller than the current block size then
> we need to go to the page below.
>    // The PageLevel was calculated on the Base Address alignment but
> did not take in account the alignment

It works.

Tested-by: Stefano Stabellini <stefano.stabell...@eu.citrix.com>

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

Reply via email to