I recently took a look at the config file of my ARM64 linux kernel and noticed that the following options are set :-
CONFIG_ARM64_4K_PAGES=y
CONFIG_ARM64_VA_BITS_48=y
CONFIG_ARM64_VA_BITS=48
Looking at slide 8 here, I see that a 4KB page size and a 48 bit VA means that there are 4 levels of translation. So I look at the Aarch64 reference manual.
For convinience, I have uploaded a picture from page 1718 of the reference manual.
I can see that the index to the translation table at each level is 9 bits(except at the last level). As a result, the zero, first, and second translation table should be able to index 2^9 values.
My doubts are :-
- What is the size of each item inside the zero, first, second and third translation table?
- How did you obtain this information / arrive at this conclusion?
[EDIT] Correct the number of bits from 8 to 9.