RE: [PATCH] mm: fix hugetlb page unmap count balance issue

From: Chang, Junxiao
Date: Sun May 14 2023 - 20:44:27 EST


With James' patch, udmabuf driver might meet VM BUG? Since its compound is false and folio_test_hugetlb(folio) is true:
if (likely(!compound)) {
+ if (unlikely(folio_test_hugetlb(folio)))
+ VM_BUG_ON_PAGE(HPageVmemmapOptimized(&folio->page),
+ page);

It is better to notice udmabuf driver owner before merging James's https://lore.kernel.org/linux-mm/20230306230004.1387007-2-jthoughton@xxxxxxxxxx/?

Thanks,
Junxiao

-----Original Message-----
From: Mike Kravetz <mike.kravetz@xxxxxxxxxx>
Sent: Saturday, May 13, 2023 7:30 AM
To: James Houghton <jthoughton@xxxxxxxxxx>
Cc: Chang, Junxiao <junxiao.chang@xxxxxxxxx>; akpm@xxxxxxxxxxxxxxxxxxxx; kirill.shutemov@xxxxxxxxxxxxxxx; Hocko, Michal <mhocko@xxxxxxxx>; jmarchan@xxxxxxxxxx; linux-mm@xxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; muchun.song@xxxxxxxxx
Subject: Re: [PATCH] mm: fix hugetlb page unmap count balance issue

On 05/12/23 14:26, James Houghton wrote:
> On Fri, May 12, 2023 at 12:20 AM Junxiao Chang <junxiao.chang@xxxxxxxxx> wrote:
>
> This alone doesn't fix mapcounting for PTE-mapped HugeTLB pages. You
> need something like [1]. I can resend it if that's what we should be
> doing, but this mapcounting scheme doesn't work when the page structs
> have been freed.
>
> It seems like it was a mistake to include support for hugetlb memfds in udmabuf.

IIUC, it was added with commit 16c243e99d33 udmabuf: Add support for mapping hugepages (v4). Looks like it was never sent to linux-mm? That is unfortunate as hugetlb vmemmap freeing went in at about the same time. And, as you have noted udmabuf will not work if hugetlb vmemmap freeing is enabled.

Sigh!

Trying to think of a way forward.
--
Mike Kravetz

>
> [1]:
> https://lore.kernel.org/linux-mm/20230306230004.1387007-2-jthoughton@g
> oogle.com/
>
> - James