On 08/09/23 13:53, Mike Kravetz wrote: > On 08/09/23 20:37, Kefeng Wang wrote: > > > > > > Cc Mike to help us clarify the expected behavior of hugetlb. > > > > > > Hi Mike, what is the expected behavior, if a user tries to use move_pages() > > > to migrate a non head page of a hugetlb page? > > > > Could you give some advise, thanks > > > > Sorry, I was away for a while. > > It seems unfortunate that move_pages says the passed user addresses > should be aligned to page boundaries. However, IIUC this is not checked > or enforced. Otherwise, passing a hugetlb page should return the same > error. > > One thought would be that hugetlb mappings should behave the same > non-hugetlb mappings. If passed the address of a hugetlb tail page, align > the address to a hugetlb boundary and migrate the page. This changes the > existing behavior. However, it would be hard to imagine anyone depending > on this. > > After taking a closer look at the add_page_for_migration(), it seems to > just ignore passed tail pages and do nothing for such passed addresses. > Correct? Or, am I missing something? Perhaps that is behavior we want/ > need to preserve? My mistake, status -EACCES is returned when passing a tail page of a hugetlb page. Back to the question of 'What is the expected behavior if a tail page is passed?'. I do not think we have defined an expected behavior. If anything is 'expected' I would say it is -EACCES as returned today. BTW - hugetlb pages not migrated due to passing a tail page does not seem to contribute to a 'Positive return value' indicating the number of non-migrated pages. -- Mike Kravetz