I have a requirement of forcing the PTE
and PMD
levels of the page-table to be updated or in other words, to make the process frequently hold the PMD
and PTE
locks. This is for research purposes.
I know this could be done in one of two ways:
Allocate a
MAP_ANONYMOUS
memory usingmmap
, touch the allocated memory (to allocate a physical memory), and thenmunmap
it; bothmmap
andmunmap
update the page-table. But I don't know how to make this allocation/deallocation touch both tables.Allocate a memory using
mmap
like above, and frequently relocate the memory in such a way that modifies bothPMD
andPTE
levels. For this, I couldn't find a way to move pages to a new location that causes both tables to be updated.
So my question is, how to allocate or relocate a mapped memory in such a way that both the PTE
and PMD
tables are updated? I presume any solution based on the above is a matter of finding a proper virtual address to map to or relocate to.
My processor is an Intel Xeon Gold 6142 with 4 levels page table.