Patch series "hugetlbfs: convert macros to static inline, fix sparse
warning".
The definition for huge_pte_offset() in <linux/hugetlb.h> causes a
sparse warning in the !CONFIG_HUGETLB_PAGE. Fix this as well as
converting all macros in this block of definitions to static inlines for
better type checking.
When making the above changes, build errors were found in powerpc due to
duplicate definitions. A separate powerpc specific patch is included as
a requisite to remove the definitions and get them from
<linux/hugetlb.h>.
This patch (of 2):
This removes the power specific stubs created by commit aad71e3928
("powerpc/mm: Fix build break with RADIX=y & HUGETLBFS=n") used when
!CONFIG_HUGETLB_PAGE. Instead, it addresses the build break by getting
the definitions from <linux/hugetlb.h>. This allows the macros in
<linux/hugetlb.h> to be replaced with static inlines.
Link: http://lkml.kernel.org/r/20191112194558.139389-2-mike.kravetz@oracle.com
Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
Acked-by: Michael Ellerman <mpe@ellerman.id.au>
Cc: Ben Dooks <ben.dooks@codethink.co.uk>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
72 lines
1.6 KiB
C
72 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _ASM_POWERPC_BOOK3S_64_PGTABLE_64K_H
|
|
#define _ASM_POWERPC_BOOK3S_64_PGTABLE_64K_H
|
|
|
|
#ifndef __ASSEMBLY__
|
|
#ifdef CONFIG_HUGETLB_PAGE
|
|
/*
|
|
* We have PGD_INDEX_SIZ = 12 and PTE_INDEX_SIZE = 8, so that we can have
|
|
* 16GB hugepage pte in PGD and 16MB hugepage pte at PMD;
|
|
*
|
|
* Defined in such a way that we can optimize away code block at build time
|
|
* if CONFIG_HUGETLB_PAGE=n.
|
|
*
|
|
* returns true for pmd migration entries, THP, devmap, hugetlb
|
|
* But compile time dependent on CONFIG_HUGETLB_PAGE
|
|
*/
|
|
static inline int pmd_huge(pmd_t pmd)
|
|
{
|
|
/*
|
|
* leaf pte for huge page
|
|
*/
|
|
return !!(pmd_raw(pmd) & cpu_to_be64(_PAGE_PTE));
|
|
}
|
|
|
|
static inline int pud_huge(pud_t pud)
|
|
{
|
|
/*
|
|
* leaf pte for huge page
|
|
*/
|
|
return !!(pud_raw(pud) & cpu_to_be64(_PAGE_PTE));
|
|
}
|
|
|
|
static inline int pgd_huge(pgd_t pgd)
|
|
{
|
|
/*
|
|
* leaf pte for huge page
|
|
*/
|
|
return !!(pgd_raw(pgd) & cpu_to_be64(_PAGE_PTE));
|
|
}
|
|
#define pgd_huge pgd_huge
|
|
|
|
/*
|
|
* With 64k page size, we have hugepage ptes in the pgd and pmd entries. We don't
|
|
* need to setup hugepage directory for them. Our pte and page directory format
|
|
* enable us to have this enabled.
|
|
*/
|
|
static inline int hugepd_ok(hugepd_t hpd)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
#define is_hugepd(pdep) 0
|
|
|
|
/*
|
|
* This should never get called
|
|
*/
|
|
static inline int get_hugepd_cache_index(int index)
|
|
{
|
|
BUG();
|
|
}
|
|
|
|
#endif /* CONFIG_HUGETLB_PAGE */
|
|
|
|
static inline int remap_4k_pfn(struct vm_area_struct *vma, unsigned long addr,
|
|
unsigned long pfn, pgprot_t prot)
|
|
{
|
|
if (radix_enabled())
|
|
BUG();
|
|
return hash__remap_4k_pfn(vma, addr, pfn, prot);
|
|
}
|
|
#endif /* __ASSEMBLY__ */
|
|
#endif /*_ASM_POWERPC_BOOK3S_64_PGTABLE_64K_H */
|