[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen master] xen/arm: p2m: Enable support for 32bit IPA for ARM_32



commit 7a25a1501ca941c3e01b0c4e624ace05417f1587
Author:     Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>
AuthorDate: Fri Jun 2 13:07:54 2023 +0100
Commit:     Julien Grall <jgrall@xxxxxxxxxx>
CommitDate: Fri Jun 16 21:36:35 2023 +0100

    xen/arm: p2m: Enable support for 32bit IPA for ARM_32
    
    Refer ARM DDI 0406C.d ID040418, B3-1345,
    
    "A stage 2 translation with an input address range of 31-34 bits can
    start the translation either:
    
    - With a first-level lookup, accessing a first-level translation
      table with 2-16 entries.
    
    - With a second-level lookup, accessing a set of concatenated
      second-level translation tables"
    
    Thus, for 32 bit IPA, there will be no concatenated root level tables.
    So, the root-order is 0.
    
    Also, Refer ARM DDI 0406C.d ID040418, B3-1348
    "Determining the required first lookup level for stage 2 translations
    
    For a stage 2 translation, the output address range from the stage 1
    translations determines the required input address range for the stage 2
    translation. The permitted values of VTCR.SL0 are:
    0b00 Stage 2 translation lookup must start at the second level.
    0b01 Stage 2 translation lookup must start at the first level.
    
    VTCR.T0SZ must indicate the required input address range. The size of
    the input address region is 2^(32-T0SZ) bytes."
    
    Thus VTCR.SL0 = 1 (maximum value) and VTCR.T0SZ = 0 when the size of
    input address region is 2^32 bytes.
    
    Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>
    Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx>
    Acked-by: Julien Grall <jgrall@xxxxxxxxxx>
---
 xen/arch/arm/p2m.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index d671a39457..de32a2d638 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -2265,6 +2265,7 @@ void __init setup_virt_paging(void)
         [6] = { 52,      12/*12*/,  4,          2 },
         [7] = { 0 }  /* Invalid */
 #else
+        { 32,      0/*0*/,    0,          1 },
         { 40,      24/*24*/,  1,          1 }
 #endif
     };
--
generated by git-patchbot for /home/xen/git/xen.git#master



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.