From: Prakash Sangappa <prakash.sangappa@oracle.com>
To: "David Hildenbrand (Red Hat)" <david@kernel.org>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
"Uschakow, Stanislav" <suschako@amazon.de>,
Jann Horn <jannh@google.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"trix@redhat.com" <trix@redhat.com>,
"nathan@kernel.org" <nathan@kernel.org>,
"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
"muchun.song@linux.dev" <muchun.song@linux.dev>,
"mike.kravetz@oracle.com" <mike.kravetz@oracle.com>,
Liam Howlett <liam.howlett@oracle.com>,
"osalvador@suse.de" <osalvador@suse.de>,
"vbabka@suse.cz" <vbabka@suse.cz>,
"stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: Re: Bug: Performance regression in 1013af4f585f: mm/hugetlb: fix huge_pmd_unshare() vs GUP-fast race
Date: Wed, 3 Dec 2025 17:22:14 +0000 [thread overview]
Message-ID: <A8EA24F8-7A13-472A-9AB0-C7125205C3D3@oracle.com> (raw)
In-Reply-To: <8cab934d-4a56-44aa-b641-bfd7e23bd673@kernel.org>
> On Nov 20, 2025, at 7:47 AM, David Hildenbrand (Red Hat) <david@kernel.org> wrote:
>
> On 11/19/25 17:31, David Hildenbrand (Red Hat) wrote:
>> On 19.11.25 17:29, David Hildenbrand (Red Hat) wrote:
>>>>>
>>>>> So what I am currently looking into is simply reducing (batching) the number
>>>>> of IPIs.
>>>>
>>>> As in the IPIs we are now generating in tlb_remove_table_sync_one()?
>>>>
>>>> Or something else?
>>>
>>> Yes, for now. I'm essentially reducing the number of
>>> tlb_remove_table_sync_one() calls.
>>>
>>>>
>>>> As this bug is only an issue when we don't use IPIs for pgtable freeing right
>>>> (e.g. CONFIG_MMU_GATHER_RCU_TABLE_FREE is set), as otherwise
>>>> tlb_remove_table_sync_one() is a no-op?
>>>
>>> Right. But it's still confusing: I think for page table unsharing we
>>> always need an IPI one way or the other to make sure GUP-fast was called.
>>>
>>> At least for preventing that anybody would be able to reuse the page
>>> table in the meantime.
>>>
>>> That is either:
>>>
>>> (a) The TLB shootdown implied an IPI
>>>
>>> (b) We manually send one
>>>
>>> But that's where it gets confusing: nowadays x86 also selects
>>> MMU_GATHER_RCU_TABLE_FREE, meaning we would get a double IPI?
>>>
>>> This is so complicated, so I might be missing something.
>>>
>>> But it's the same behavior we have in collapse_huge_page() where we first
>> ... flush and then call tlb_remove_table_sync_one().
>
> Okay, I pushed something to
>
> https://github.com/davidhildenbrand/linux.git hugetlb_unshare
For testing had to backport the fix to v5.15. Used top 8 commits from the above tree.
v5.15 kernel does not have ptdesc and hugetlb vma locking.
With that change, our DB team has verified that it fixes the regression.
Will you push this fix to LTS trees after it is reviewed and merged?
Thanks,
-Prakash
>
> I did a quick test and my house did not burn down. But I don't have a beefy machine to really stress+benchmark PMD table unsharing.
>
> Could one of the original reporters (Stanislav? Prakash?) try it out to see if that would help fix the regression or if it would be a dead end?
>
> --
> Cheers
>
> David
next prev parent reply other threads:[~2025-12-03 17:22 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-29 14:30 Uschakow, Stanislav
2025-09-01 10:58 ` Jann Horn
2025-09-01 11:26 ` David Hildenbrand
2025-09-04 12:39 ` Uschakow, Stanislav
2025-10-08 22:54 ` Prakash Sangappa
2025-10-09 7:23 ` David Hildenbrand
2025-10-09 15:06 ` Prakash Sangappa
2025-10-09 7:40 ` David Hildenbrand
2025-10-09 8:19 ` David Hildenbrand
2025-10-16 9:21 ` Lorenzo Stoakes
2025-10-16 19:13 ` David Hildenbrand
2025-10-16 18:44 ` Jann Horn
2025-10-16 19:10 ` David Hildenbrand
2025-10-16 19:26 ` Jann Horn
2025-10-16 19:44 ` David Hildenbrand
2025-10-16 20:25 ` Jann Horn
2025-10-20 15:00 ` Lorenzo Stoakes
2025-10-20 15:33 ` Jann Horn
2025-10-24 12:24 ` Lorenzo Stoakes
2025-10-24 18:22 ` Jann Horn
2025-10-24 19:02 ` Lorenzo Stoakes
2025-10-24 19:43 ` Jann Horn
2025-10-24 19:58 ` Lorenzo Stoakes
2025-10-24 21:41 ` Jann Horn
2025-10-29 16:19 ` David Hildenbrand
2025-10-29 18:02 ` Lorenzo Stoakes
2025-11-18 10:03 ` David Hildenbrand (Red Hat)
2025-11-19 16:08 ` Lorenzo Stoakes
2025-11-19 16:29 ` David Hildenbrand (Red Hat)
2025-11-19 16:31 ` David Hildenbrand (Red Hat)
2025-11-20 15:47 ` David Hildenbrand (Red Hat)
2025-12-03 17:22 ` Prakash Sangappa [this message]
2025-12-03 19:45 ` David Hildenbrand (Red Hat)
2025-10-20 17:18 ` David Hildenbrand
2025-10-24 9:59 ` Lorenzo Stoakes
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=A8EA24F8-7A13-472A-9AB0-C7125205C3D3@oracle.com \
--to=prakash.sangappa@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=david@kernel.org \
--cc=jannh@google.com \
--cc=liam.howlett@oracle.com \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mike.kravetz@oracle.com \
--cc=muchun.song@linux.dev \
--cc=nathan@kernel.org \
--cc=osalvador@suse.de \
--cc=stable@vger.kernel.org \
--cc=suschako@amazon.de \
--cc=trix@redhat.com \
--cc=vbabka@suse.cz \
/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