Back to home page

OSCL-LXR

 
 

    


0001 .. _hugetlbpage_index:
0002 
0003 ====================
0004 HugeTLBpage on ARM64
0005 ====================
0006 
0007 Hugepage relies on making efficient use of TLBs to improve performance of
0008 address translations. The benefit depends on both -
0009 
0010   - the size of hugepages
0011   - size of entries supported by the TLBs
0012 
0013 The ARM64 port supports two flavours of hugepages.
0014 
0015 1) Block mappings at the pud/pmd level
0016 --------------------------------------
0017 
0018 These are regular hugepages where a pmd or a pud page table entry points to a
0019 block of memory. Regardless of the supported size of entries in TLB, block
0020 mappings reduce the depth of page table walk needed to translate hugepage
0021 addresses.
0022 
0023 2) Using the Contiguous bit
0024 ---------------------------
0025 
0026 The architecture provides a contiguous bit in the translation table entries
0027 (D4.5.3, ARM DDI 0487C.a) that hints to the MMU to indicate that it is one of a
0028 contiguous set of entries that can be cached in a single TLB entry.
0029 
0030 The contiguous bit is used in Linux to increase the mapping size at the pmd and
0031 pte (last) level. The number of supported contiguous entries varies by page size
0032 and level of the page table.
0033 
0034 
0035 The following hugepage sizes are supported -
0036 
0037   ====== ========   ====    ========    ===
0038   -      CONT PTE    PMD    CONT PMD    PUD
0039   ====== ========   ====    ========    ===
0040   4K:         64K     2M         32M     1G
0041   16K:         2M    32M          1G
0042   64K:         2M   512M         16G
0043   ====== ========   ====    ========    ===