On 2020-11-17 17:29, Muchun Song wrote:
Now for the 2MB HugrTLB page, we only free 6 vmemmap pages. But your words woke me up. Maybe we really can free 7 vmemmap pages. In this case, we can see 8 of the 512 struct page structures has beed set PG_head flag. If we can adjust compound_head() slightly and make compound_head() return the real head struct page when the parameter is the tail struct page but with PG_head flag set. I will start an investigation and a test.
I would not overcomplicate things at this stage, but rather keep it simple as the code is already tricky enough(without counting the LOC thatvit adds).
We can always build on top later on in order to improve things. -- Oscar Salvador SUSE L3