基于linux-5.15分析。
根据arch/arm64/Kconfig,ARM64的可配置的页面大小和虚拟地址位数只有几种组合可以选择,相应的页表级数也可由此得出。
config PGTABLE_LEVELS
int
default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36
default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42
default 3 if ARM64_64K_PAGES && (ARM64_VA_BITS_48 || ARM64_VA_BITS_52)
default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39
default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47
default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48
PAGE_SIZE | VA_BITS | PGTABLE_LEVELS |
---|---|---|
4K | 39/48 | 3/4 |
16K | 36/47/48 | 2/3/4 |
64K | 42/48/52 | 2/3/3 |