From: John Hubbard <jhubbard@nvidia.com>
To: Peter Xu <peterx@redhat.com>
Cc: <linux-mm@kvack.org>, <linux-kernel@vger.kernel.org>,
Jann Horn <jannh@google.com>,
Andrea Arcangeli <aarcange@redhat.com>,
James Houghton <jthoughton@google.com>,
Rik van Riel <riel@surriel.com>,
Miaohe Lin <linmiaohe@huawei.com>,
Nadav Amit <nadav.amit@gmail.com>,
Mike Kravetz <mike.kravetz@oracle.com>,
David Hildenbrand <david@redhat.com>,
"Andrew Morton" <akpm@linux-foundation.org>,
Muchun Song <songmuchun@bytedance.com>
Subject: Re: [PATCH v2 09/10] mm/hugetlb: Introduce hugetlb_walk()
Date: Thu, 8 Dec 2022 13:50:17 -0800 [thread overview]
Message-ID: <a3e05607-f165-04d1-29e0-f25bbaa1667e@nvidia.com> (raw)
In-Reply-To: <Y5JQvElUNz6yGsrT@x1n>
On 12/8/22 13:01, Peter Xu wrote:
>> At this point, it is very clear that huge_pte_offset() should be renamed.
>> I'd suggest something like one of these:
>>
>> __hugetlb_walk()
>> hugetlb_walk_raw()
>
> We can.
>
> Not only because that's an arch api for years (didn't want to touch more
> arch code unless necessary), but also since we have hugetlb_walk() that'll
> be the future interface not huge_pte_offset().
>
> Actually it's good when that's the only thing people can find from its name
> when they want to have a huge pgtable walk. :)
>
> So totally makes sense to do so, but I don't strongly feel like doing it in
> this patchset if you're okay with it.
>
Sounds good.
>>
>>> +static inline pte_t *
>>> +hugetlb_walk(struct vm_area_struct *vma, unsigned long addr, unsigned long sz)
>>> +{
>>> +#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;
>>> +
>>> + /*
>>> + * 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
>>> + return huge_pte_offset(vma->vm_mm, addr, sz);
>>> +}
>>
>> Let's please not slice up C functions with ifdefs. Instead, stick to the
>> standard approach of
>>
>> #ifdef X
>> functionC()
>> {
>> ...implementation
>> }
>> #else
>> functionC()
>> {
>> ...simpler or shorter or stub implementation
>> }
>
> Personally I like the slicing because it clearly tells what's the
> difference with/without the macros defined.
>
Ha, I think you have a higher tolerance for complexity on the screen.
The fact that you can see more of that complexity at once, is what
slows down human readers.
So when someone is working through the code, if they can look at one
config at a time, that's shorter and cleaner. This is why folks (I'm
very much not the only one) have this common pattern.
However, of course I won't insist here, as there are clearly preferences
in both directions. And the code is still small in either form in this
case so really a non-issue.
thanks,
--
John Hubbard
NVIDIA
next prev parent reply other threads:[~2022-12-08 21:50 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-07 20:30 [PATCH v2 00/10] mm/hugetlb: Make huge_pte_offset() thread-safe for pmd unshare Peter Xu
2022-12-07 20:30 ` [PATCH v2 01/10] mm/hugetlb: Let vma_offset_start() to return start Peter Xu
2022-12-07 21:21 ` John Hubbard
2022-12-07 20:30 ` [PATCH v2 02/10] mm/hugetlb: Don't wait for migration entry during follow page Peter Xu
2022-12-07 22:03 ` John Hubbard
2022-12-07 20:30 ` [PATCH v2 03/10] mm/hugetlb: Document huge_pte_offset usage Peter Xu
2022-12-07 20:49 ` John Hubbard
2022-12-08 13:05 ` David Hildenbrand
2022-12-07 20:30 ` [PATCH v2 04/10] mm/hugetlb: Move swap entry handling into vma lock when faulted Peter Xu
2022-12-07 22:36 ` John Hubbard
2022-12-07 22:43 ` Peter Xu
2022-12-07 23:05 ` John Hubbard
2022-12-08 20:28 ` Peter Xu
2022-12-08 20:31 ` John Hubbard
2022-12-07 20:30 ` [PATCH v2 05/10] mm/hugetlb: Make userfaultfd_huge_must_wait() safe to pmd unshare Peter Xu
2022-12-07 23:19 ` John Hubbard
2022-12-07 23:44 ` Peter Xu
2022-12-07 23:54 ` John Hubbard
2022-12-07 20:30 ` [PATCH v2 06/10] mm/hugetlb: Make hugetlb_follow_page_mask() " Peter Xu
2022-12-07 23:21 ` John Hubbard
2022-12-07 20:30 ` [PATCH v2 07/10] mm/hugetlb: Make follow_hugetlb_page() " Peter Xu
2022-12-07 23:25 ` John Hubbard
2022-12-07 20:30 ` [PATCH v2 08/10] mm/hugetlb: Make walk_hugetlb_range() " Peter Xu
2022-12-07 20:34 ` John Hubbard
2022-12-08 13:14 ` David Hildenbrand
2022-12-08 20:47 ` Peter Xu
2022-12-08 21:20 ` Peter Xu
2022-12-09 10:24 ` David Hildenbrand
2022-12-09 14:39 ` Peter Xu
2022-12-09 15:18 ` David Hildenbrand
2022-12-07 20:31 ` [PATCH v2 09/10] mm/hugetlb: Introduce hugetlb_walk() Peter Xu
2022-12-07 22:27 ` Mike Kravetz
2022-12-08 0:12 ` John Hubbard
2022-12-08 21:01 ` Peter Xu
2022-12-08 21:50 ` John Hubbard [this message]
2022-12-08 23:21 ` Peter Xu
2022-12-07 20:31 ` [PATCH v2 10/10] mm/hugetlb: Document why page_vma_mapped_walk() is safe to walk Peter Xu
2022-12-08 0:16 ` John Hubbard
2022-12-08 21:05 ` Peter Xu
2022-12-08 21:54 ` John Hubbard
2022-12-08 22:21 ` Peter Xu
2022-12-09 0:24 ` John Hubbard
2022-12-09 0:43 ` Peter Xu
2022-12-08 13:16 ` David Hildenbrand
2022-12-08 21:05 ` 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=a3e05607-f165-04d1-29e0-f25bbaa1667e@nvidia.com \
--to=jhubbard@nvidia.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=jannh@google.com \
--cc=jthoughton@google.com \
--cc=linmiaohe@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mike.kravetz@oracle.com \
--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