On Thu, Dec 22, 2022 at 9:30 AM Peter Xu <peterx@xxxxxxxxxx> wrote: > > On Wed, Dec 21, 2022 at 08:24:45PM -0500, James Houghton wrote: > > Not sure what the best name for this flag is either. MADV_ENABLE_HGM > > sounds ok. MADV_HUGETLB_HGM or MADV_HUGETLB_SMALL_PAGES could work > > too. No need to figure it out now. > > One more option to consider is MADV_SPLIT (hopefully to be more generic). > > We already decided to reuse thp MADV_COLLAPSE, we can also introduce > MADV_SPLIT and leave thp for later if it can be anything helpful (I > remember we used to discuss this for thp split). > > For hugetlb one SPLIT should enable hgm advise bit on the vma forever. MADV_SPLIT sounds okay to me -- we'll see how it turns out when I send v1. However, there's an interesting API question regarding what address userfaultfd provides. We previously required UFFD_FEATURE_EXACT_ADDRESS when you specified UFFD_FEATURE_MINOR_HUGETLBFS_HGM so that there was no ambiguity. Now, we can do: 1. When MADV_SPLIT is given, userfaultfd will now round addresses to PAGE_SIZE instead of huge_page_size(hstate), and UFFD_FEATURE_EXACT_ADDRESS is not needed. 2. Don't change anything. A user must know to provide UFFD_FEATURE_EXACT_ADDRESS to get the real address, otherwise they get an (unusable) hugepage-aligned address. I think #1 sounds fine; let me know if you disagree. Thanks! - James