On 09/14/22 15:18, Mike Kravetz wrote: > Allocate a new hugetlb_vma_lock structure and hang off vm_private_data > for synchronization use by vmas that could be involved in pmd sharing. > This data structure contains a rw semaphore that is the primary tool > used for synchronization. > > This new structure is ref counted, so that it can exist when NOT attached > to a vma. This is only helpful in resolving lock ordering issues where > code may need to obtain the vma_lock while there are no guarantees the > vma may go away. By obtaining a ref on the structure, it can be > guaranteed that at least the rw semaphore will not go away. > > Only add infrastructure for the new lock here. Actual use will be added > in subsequent patches. > > Signed-off-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> > --- > include/linux/hugetlb.h | 43 ++++++++- > kernel/fork.c | 6 +- > mm/hugetlb.c | 202 ++++++++++++++++++++++++++++++++++++---- > mm/rmap.c | 8 +- > 4 files changed, 235 insertions(+), 24 deletions(-) Reviewers - FYI, the following was added to address a build issue caused by this patch. >From 8b3031350154e8e401ccfbc5e71cb95ef654d017 Mon Sep 17 00:00:00 2001 From: Mike Kravetz <mike.kravetz@xxxxxxxxxx> Date: Thu, 15 Sep 2022 09:33:44 -0700 Subject: [PATCH] hugetlb: fix build issue for missing hugetlb_vma_lock_release Add a stub for hugetlb_vma_lock_release to build in the case CONFIG_HUGETLB_PAGE && !CONFIG_ARCH_WANT_HUGE_PMD_SHARE. Signed-off-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> --- mm/hugetlb.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 2207300791e5..cc7877da18d7 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -7008,6 +7008,10 @@ void hugetlb_vma_assert_locked(struct vm_area_struct *vma) { } +void hugetlb_vma_lock_release(struct kref *kref) +{ +} + static void hugetlb_vma_lock_free(struct vm_area_struct *vma) { } -- 2.37.2