From: Mike Kravetz <mike.kravetz@oracle.com>
To: Peter Xu <peterx@redhat.com>
Cc: Eric Biggers <ebiggers@kernel.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
James Houghton <jthoughton@google.com>,
Jann Horn <jannh@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Andrea Arcangeli <aarcange@redhat.com>,
Rik van Riel <riel@surriel.com>,
Nadav Amit <nadav.amit@gmail.com>,
Miaohe Lin <linmiaohe@huawei.com>,
Muchun Song <songmuchun@bytedance.com>,
David Hildenbrand <david@redhat.com>
Subject: Re: [PATCH 10/10] mm/hugetlb: Introduce hugetlb_walk()
Date: Mon, 5 Dec 2022 16:21:21 -0800 [thread overview]
Message-ID: <Y46LAQ2c/ixCTEsX@monkey> (raw)
In-Reply-To: <Y4d4qh0ACmo455Nj@x1n>
On 11/30/22 10:37, Peter Xu wrote:
> On Tue, Nov 29, 2022 at 09:18:08PM -0800, Eric Biggers wrote:
> > On Tue, Nov 29, 2022 at 02:35:26PM -0500, Peter Xu wrote:
> > > +static inline pte_t *
> > > +hugetlb_walk(struct vm_area_struct *vma, unsigned long addr, unsigned long sz)
> > > +{
> > > +#if defined(CONFIG_ARCH_WANT_HUGE_PMD_SHARE) && defined(CONFIG_LOCKDEP)
> > > + struct hugetlb_vma_lock *vma_lock = vma->vm_private_data;
> > > +
> > > + /*
> > > + * If pmd sharing possible, locking needed to safely walk the
> > > + * hugetlb pgtables. More information can be found at the comment
> > > + * above huge_pte_offset() in the same file.
> > > + *
> > > + * NOTE: lockdep_is_held() is only defined with CONFIG_LOCKDEP.
> > > + */
> > > + if (__vma_shareable_flags_pmd(vma))
> > > + WARN_ON_ONCE(!lockdep_is_held(&vma_lock->rw_sema) &&
> > > + !lockdep_is_held(
> > > + &vma->vm_file->f_mapping->i_mmap_rwsem));
> > > +#endif
> >
> > FYI, in next-20221130 there is a compile error here due to this commit:
> >
> > In file included from security/commoncap.c:19:
> > ./include/linux/hugetlb.h:1262:42: error: incomplete definition of type 'struct hugetlb_vma_lock'
> > WARN_ON_ONCE(!lockdep_is_held(&vma_lock->rw_sema) &&
> > ~~~~~~~~^
> > ./include/linux/lockdep.h:286:47: note: expanded from macro 'lockdep_is_held'
> > #define lockdep_is_held(lock) lock_is_held(&(lock)->dep_map)
> > ^~~~
>
> This probably means the config has:
>
> CONFIG_HUGETLB_PAGE=n
> CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
>
> And I'm surprised we didn't have a dependency that ARCH_WANT_HUGE_PMD_SHARE
> should depend on HUGETLB_PAGE already. Mike, what do you think?
Yes, ARCH_WANT_HUGE_PMD_SHARE should probably depend on HUGETLB_PAGE as it
makes no sense without it. There is also ARCH_WANT_GENERAL_HUGETLB that
seems to fall into the same category.
>
> I've also attached a quick fix for this patch to be squashed in. Hope it
> works.
Let's go with this quick fix for now since the only issue is in the new code
and spend more time on config dependencies later.
For the original patch and the quick fix,
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
--
Mike Kravetz
>
> Thanks,
>
> --
> Peter Xu
> From 9787a7f5492ca251fcce5c09bd7e4a80ac157726 Mon Sep 17 00:00:00 2001
> From: Peter Xu <peterx@redhat.com>
> Date: Wed, 30 Nov 2022 10:33:44 -0500
> Subject: [PATCH] fixup! mm/hugetlb: Introduce hugetlb_walk()
> Content-type: text/plain
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
> include/linux/hugetlb.h | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
> index 1a51c45fdf2e..ec2a1f93b12d 100644
> --- a/include/linux/hugetlb.h
> +++ b/include/linux/hugetlb.h
> @@ -1248,7 +1248,8 @@ __vma_shareable_flags_pmd(struct vm_area_struct *vma)
> static inline pte_t *
> hugetlb_walk(struct vm_area_struct *vma, unsigned long addr, unsigned long sz)
> {
> -#if defined(CONFIG_ARCH_WANT_HUGE_PMD_SHARE) && defined(CONFIG_LOCKDEP)
> +#if defined(CONFIG_HUGETLB_PAGE) && \
> + defined(CONFIG_ARCH_WANT_HUGE_PMD_SHARE) && defined(CONFIG_LOCKDEP)
> struct hugetlb_vma_lock *vma_lock = vma->vm_private_data;
>
> /*
> --
> 2.37.3
>
next prev parent reply other threads:[~2022-12-06 0:21 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-29 19:35 [PATCH 00/10] mm/hugetlb: Make huge_pte_offset() thread-safe for pmd unshare Peter Xu
2022-11-29 19:35 ` [PATCH 01/10] mm/hugetlb: Let vma_offset_start() to return start Peter Xu
2022-11-30 10:11 ` David Hildenbrand
2022-11-29 19:35 ` [PATCH 02/10] mm/hugetlb: Don't wait for migration entry during follow page Peter Xu
2022-11-30 4:37 ` Mike Kravetz
2022-11-30 10:15 ` David Hildenbrand
2022-11-29 19:35 ` [PATCH 03/10] mm/hugetlb: Document huge_pte_offset usage Peter Xu
2022-11-30 4:55 ` Mike Kravetz
2022-11-30 15:58 ` Peter Xu
2022-12-05 21:47 ` Mike Kravetz
2022-11-30 10:21 ` David Hildenbrand
2022-11-30 10:24 ` David Hildenbrand
2022-11-30 16:09 ` Peter Xu
2022-11-30 16:11 ` David Hildenbrand
2022-11-30 16:25 ` Peter Xu
2022-11-30 16:31 ` David Hildenbrand
2022-11-29 19:35 ` [PATCH 04/10] mm/hugetlb: Move swap entry handling into vma lock when faulted Peter Xu
2022-12-05 22:14 ` Mike Kravetz
2022-12-05 23:36 ` Peter Xu
2022-11-29 19:35 ` [PATCH 05/10] mm/hugetlb: Make userfaultfd_huge_must_wait() safe to pmd unshare Peter Xu
2022-11-30 16:08 ` David Hildenbrand
2022-12-05 22:23 ` Mike Kravetz
2022-11-29 19:35 ` [PATCH 06/10] mm/hugetlb: Make hugetlb_follow_page_mask() " Peter Xu
2022-11-30 16:09 ` David Hildenbrand
2022-12-05 22:29 ` Mike Kravetz
2022-11-29 19:35 ` [PATCH 07/10] mm/hugetlb: Make follow_hugetlb_page() " Peter Xu
2022-11-30 16:09 ` David Hildenbrand
2022-12-05 22:45 ` Mike Kravetz
2022-11-29 19:35 ` [PATCH 08/10] mm/hugetlb: Make walk_hugetlb_range() " Peter Xu
2022-11-30 16:11 ` David Hildenbrand
2022-12-05 23:33 ` Mike Kravetz
2022-12-05 23:52 ` John Hubbard
2022-12-06 16:45 ` Peter Xu
2022-12-06 18:50 ` Mike Kravetz
2022-12-06 21:03 ` John Hubbard
2022-12-06 21:51 ` Peter Xu
2022-12-06 22:31 ` John Hubbard
2022-12-07 0:07 ` Peter Xu
2022-12-07 2:38 ` John Hubbard
2022-12-07 14:58 ` Peter Xu
2022-11-29 19:35 ` [PATCH 09/10] mm/hugetlb: Make page_vma_mapped_walk() " Peter Xu
2022-11-30 16:18 ` David Hildenbrand
2022-11-30 16:32 ` Peter Xu
2022-11-30 16:39 ` David Hildenbrand
2022-12-05 23:52 ` Mike Kravetz
2022-12-06 17:10 ` Mike Kravetz
2022-12-06 17:39 ` Peter Xu
2022-12-06 17:43 ` Peter Xu
2022-12-06 19:58 ` Mike Kravetz
2022-11-29 19:35 ` [PATCH 10/10] mm/hugetlb: Introduce hugetlb_walk() Peter Xu
2022-11-30 5:18 ` Eric Biggers
2022-11-30 15:37 ` Peter Xu
2022-12-06 0:21 ` Mike Kravetz [this message]
2022-11-29 20:49 ` [PATCH 00/10] mm/hugetlb: Make huge_pte_offset() thread-safe for pmd unshare Andrew Morton
2022-11-29 21:19 ` Peter Xu
2022-11-29 21:26 ` Andrew Morton
2022-11-29 20:51 ` Andrew Morton
2022-11-29 21:36 ` Peter Xu
2022-11-30 9:46 ` David Hildenbrand
2022-11-30 16:23 ` Peter Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y46LAQ2c/ixCTEsX@monkey \
--to=mike.kravetz@oracle.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=ebiggers@kernel.org \
--cc=jannh@google.com \
--cc=jthoughton@google.com \
--cc=linmiaohe@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nadav.amit@gmail.com \
--cc=peterx@redhat.com \
--cc=riel@surriel.com \
--cc=songmuchun@bytedance.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).