On 8/29/24 01:42, Lorenzo Stoakes wrote:
These applications work on x86 because x86 does an implicit 47-bit restriction of mmap() address that contain a hint address that is less than 48 bits.
You mean x86 _has_ to limit to physically available bits in a canonical format 🙂 this will not be the case for 5-page table levels though...
By "physically available bits" are you referring to the bits that can be used as a part of the virtual address? "Physically" may not have been the best choice of words. ;)
There's a canonical hole in 4-level paging and 5-level paging on x86. The 5-level canonical hole is just smaller.
Also, I should probably say that the >47-bit mmap() access hint was more of a crutch than something that we wanted to make ABI forever. We knew that high addresses might break some apps and we hoped that the list of things it would break would go down over time so that we could eventually just let mmap() access the whole address space by default.
That optimism may have been misplaced.