mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 13:14:02 +02:00
mm: introduce pud_is_huge() helper
Patch series "mm: mincore: misc cleanups", v3. This series cleans up and simplifies the mincore. Most importantly, it removes the historical special behavior that always reports VM_PFNMAP pages as non-resident. This patch (of 6): Introduce the pud_is_huge() helper function to check whether a PUD is a huge PUD or a software leaf entry. Note that, unlike PMD, PUD currently does not support transparent migration entries or device private entries. However, the function still includes `!pud_none()` branches to accommodate potential future implementations. Link: https://lore.kernel.org/20260717091347.1144789-1-wangkefeng.wang@huawei.com Link: https://lore.kernel.org/20260717091347.1144789-2-wangkefeng.wang@huawei.com Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> Acked-by: David Hildenbrand (Arm) <david@kernel.org> Cc: Jann Horn <jannh@google.com> Cc: Liam R. Howlett <liam@infradead.org> Cc: Lorenzo Stoakes <ljs@kernel.org> Cc: Pedro Falcato <pfalcato@suse.de> Cc: Vlastimil Babka <vbabka@kernel.org> Cc: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
1605ce99af
commit
8a2081d845
|
|
@ -472,6 +472,24 @@ void split_huge_pmd_address(struct vm_area_struct *vma, unsigned long address,
|
|||
void __split_huge_pud(struct vm_area_struct *vma, pud_t *pud,
|
||||
unsigned long address);
|
||||
|
||||
/**
|
||||
* pud_is_huge() - Is this PUD either a huge PUD entry or a software leaf entry?
|
||||
* @pud: The PUD to check.
|
||||
*
|
||||
* This is similar to pmd_is_huge(), but it checks at the PUD level.
|
||||
*
|
||||
* Returns: true if this PUD is huge, false otherwise.
|
||||
*/
|
||||
static inline bool pud_is_huge(pud_t pud)
|
||||
{
|
||||
if (pud_present(pud))
|
||||
return pud_trans_huge(pud);
|
||||
else if (!pud_none(pud))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
|
||||
int change_huge_pud(struct mmu_gather *tlb, struct vm_area_struct *vma,
|
||||
pud_t *pudp, unsigned long addr, pgprot_t newprot,
|
||||
|
|
@ -798,6 +816,11 @@ static inline bool pmd_is_huge(pmd_t pmd)
|
|||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool pud_is_huge(pud_t pud)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
|
||||
|
||||
static inline bool is_pmd_order(unsigned int order)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user