Thank you for review it! We only reproduced this hugetlb mapping issue with QEMU command which opens udmabuf driver(drivers/dma-buf/udmabuf.c). I agree with you, it is better to map huge page with a pmd instead of a pte. 😊 -----Original Message----- From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Sent: Saturday, May 13, 2023 5:04 AM To: Chang, Junxiao <junxiao.chang@xxxxxxxxx> Cc: kirill.shutemov@xxxxxxxxxxxxxxx; Hocko, Michal <mhocko@xxxxxxxx>; jmarchan@xxxxxxxxxx; linux-mm@xxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; mike.kravetz@xxxxxxxxxx; muchun.song@xxxxxxxxx Subject: Re: [PATCH] mm: fix hugetlb page unmap count balance issue On Fri, 12 May 2023 15:20:36 +0800 Junxiao Chang <junxiao.chang@xxxxxxxxx> wrote: > hugetlb page usually is mapped with pmd, but occasionally it might be > mapped with pte. QEMU can use udma-buf to create host dmabufs for > guest framebuffers. When QEMU is launched with parameter "hugetlb=on", > udmabuffer driver maps hugetlb page with pte in page fault handler. Are there any other situations in which a hugetlb page is mapped in this fashion? If not, can QEMU be changed to map with a pmd? So we get one less weird special case in MM.