On Mon, Nov 23, 2020 at 3:48 PM Michal Hocko <mhocko@xxxxxxxx> wrote: > > On Fri 20-11-20 17:30:27, Muchun Song wrote: > > On Fri, Nov 20, 2020 at 4:16 PM Michal Hocko <mhocko@xxxxxxxx> wrote: > > > > > > On Fri 20-11-20 14:43:17, Muchun Song wrote: > > > > When we allocate hugetlb page from buddy, we may need split huge pmd > > > > to pte. When we free the hugetlb page, we can merge pte to pmd. So > > > > we need to distinguish whether the previous pmd has been split. The > > > > page table is not allocated from slab. So we can reuse the PG_slab > > > > to indicate that the pmd has been split. > > > > > > PageSlab is used outside of the slab allocator proper and that code > > > might get confused by this AFAICS. > > > > I got your concerns. Maybe we can use PG_private instead of the > > PG_slab. > > Reusing a page flag arbitrarily is not that easy. Hugetlb pages have a > lot of spare room in struct page so I would rather use something else. This page is the PMD page table of vmemmap, not the vmemmap page of HugeTLB. And the page table does not use PG_private. Maybe it is enough. Thanks. > -- > Michal Hocko > SUSE Labs -- Yours, Muchun