Message ID | 20210524070220.793082-1-sunnanyong@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [-next] riscv: mm: fix build errors caused by mk_pmd() | expand |
On Mon, 24 May 2021 00:02:20 PDT (-0700), sunnanyong@huawei.com wrote: > With "riscv: mm: add THP support on 64-bit", mk_pmd() function > introduce build errors, > 1.build with CONFIG_ARCH_RV32I=y: > arch/riscv/include/asm/pgtable.h: In function 'mk_pmd': > arch/riscv/include/asm/pgtable.h:513:9: error: implicit declaration of function 'pfn_pmd'; > did you mean 'pfn_pgd'? [-Werror=implicit-function-declaration] > > 2.build with CONFIG_SPARSEMEM=y && CONFIG_SPARSEMEM_VMEMMAP=n > arch/riscv/include/asm/pgtable.h: In function 'mk_pmd': > include/asm-generic/memory_model.h:64:14: error: implicit declaration of function 'page_to_section'; > did you mean 'present_section'? [-Werror=implicit-function-declaration] > > Use macro definition instead of inline function for mk_pmd > to fix the above problems.It is similar to the mk_pte macro. > > Reported-by: kernel test robot <lkp@intel.com> > Signed-off-by: Nanyong Sun <sunnanyong@huawei.com> > --- > arch/riscv/include/asm/pgtable.h | 5 +---- > 1 file changed, 1 insertion(+), 4 deletions(-) > > diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h > index 4b708ae08910..f35d9c90d4cb 100644 > --- a/arch/riscv/include/asm/pgtable.h > +++ b/arch/riscv/include/asm/pgtable.h > @@ -508,10 +508,7 @@ static inline unsigned long pmd_pfn(pmd_t pmd) > return ((__pmd_to_phys(pmd) & PMD_MASK) >> PAGE_SHIFT); > } > > -static inline pmd_t mk_pmd(struct page *page, pgprot_t prot) > -{ > - return pfn_pmd(page_to_pfn(page), prot); > -} > +#define mk_pmd(page, prot) pfn_pmd(page_to_pfn(page), prot) > > static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot) > { Thanks, this is on for-next.
On Sat, 29 May 2021 15:45:04 PDT (-0700), Palmer Dabbelt wrote: > On Mon, 24 May 2021 00:02:20 PDT (-0700), sunnanyong@huawei.com wrote: >> With "riscv: mm: add THP support on 64-bit", mk_pmd() function >> introduce build errors, >> 1.build with CONFIG_ARCH_RV32I=y: >> arch/riscv/include/asm/pgtable.h: In function 'mk_pmd': >> arch/riscv/include/asm/pgtable.h:513:9: error: implicit declaration of function 'pfn_pmd'; >> did you mean 'pfn_pgd'? [-Werror=implicit-function-declaration] >> >> 2.build with CONFIG_SPARSEMEM=y && CONFIG_SPARSEMEM_VMEMMAP=n >> arch/riscv/include/asm/pgtable.h: In function 'mk_pmd': >> include/asm-generic/memory_model.h:64:14: error: implicit declaration of function 'page_to_section'; >> did you mean 'present_section'? [-Werror=implicit-function-declaration] >> >> Use macro definition instead of inline function for mk_pmd >> to fix the above problems.It is similar to the mk_pte macro. >> >> Reported-by: kernel test robot <lkp@intel.com> >> Signed-off-by: Nanyong Sun <sunnanyong@huawei.com> >> --- >> arch/riscv/include/asm/pgtable.h | 5 +---- >> 1 file changed, 1 insertion(+), 4 deletions(-) >> >> diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h >> index 4b708ae08910..f35d9c90d4cb 100644 >> --- a/arch/riscv/include/asm/pgtable.h >> +++ b/arch/riscv/include/asm/pgtable.h >> @@ -508,10 +508,7 @@ static inline unsigned long pmd_pfn(pmd_t pmd) >> return ((__pmd_to_phys(pmd) & PMD_MASK) >> PAGE_SHIFT); >> } >> >> -static inline pmd_t mk_pmd(struct page *page, pgprot_t prot) >> -{ >> - return pfn_pmd(page_to_pfn(page), prot); >> -} >> +#define mk_pmd(page, prot) pfn_pmd(page_to_pfn(page), prot) >> >> static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot) >> { > > Thanks, this is on for-next. Sorry, I wasn't looking closely enough. I think the actual problem here is that mk_pmd() should be in pgtable-64.h.
On 2021/5/30 9:21, Palmer Dabbelt wrote: > On Sat, 29 May 2021 15:45:04 PDT (-0700), Palmer Dabbelt wrote: >> On Mon, 24 May 2021 00:02:20 PDT (-0700), sunnanyong@huawei.com wrote: >>> With "riscv: mm: add THP support on 64-bit", mk_pmd() function >>> introduce build errors, >>> 1.build with CONFIG_ARCH_RV32I=y: >>> arch/riscv/include/asm/pgtable.h: In function 'mk_pmd': >>> arch/riscv/include/asm/pgtable.h:513:9: error: implicit declaration >>> of function 'pfn_pmd'; >>> did you mean 'pfn_pgd'? [-Werror=implicit-function-declaration] >>> >>> 2.build with CONFIG_SPARSEMEM=y && CONFIG_SPARSEMEM_VMEMMAP=n >>> arch/riscv/include/asm/pgtable.h: In function 'mk_pmd': >>> include/asm-generic/memory_model.h:64:14: error: implicit >>> declaration of function 'page_to_section'; >>> did you mean 'present_section'? >>> [-Werror=implicit-function-declaration] >>> >>> Use macro definition instead of inline function for mk_pmd >>> to fix the above problems.It is similar to the mk_pte macro. >>> >>> Reported-by: kernel test robot <lkp@intel.com> >>> Signed-off-by: Nanyong Sun <sunnanyong@huawei.com> >>> --- >>> arch/riscv/include/asm/pgtable.h | 5 +---- >>> 1 file changed, 1 insertion(+), 4 deletions(-) >>> >>> diff --git a/arch/riscv/include/asm/pgtable.h >>> b/arch/riscv/include/asm/pgtable.h >>> index 4b708ae08910..f35d9c90d4cb 100644 >>> --- a/arch/riscv/include/asm/pgtable.h >>> +++ b/arch/riscv/include/asm/pgtable.h >>> @@ -508,10 +508,7 @@ static inline unsigned long pmd_pfn(pmd_t pmd) >>> return ((__pmd_to_phys(pmd) & PMD_MASK) >> PAGE_SHIFT); >>> } >>> >>> -static inline pmd_t mk_pmd(struct page *page, pgprot_t prot) >>> -{ >>> - return pfn_pmd(page_to_pfn(page), prot); >>> -} >>> +#define mk_pmd(page, prot) pfn_pmd(page_to_pfn(page), prot) >>> >>> static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot) >>> { >> >> Thanks, this is on for-next. > > Sorry, I wasn't looking closely enough. I think the actual problem > here is that mk_pmd() should be in pgtable-64.h. > . Moving mk_pmd() to pgtable-64.h can only solve the first problem, but not the second. The second one need mk_pmd() defined as a macro, like this previous solution: https://patchwork.kernel.org/project/linux-riscv/patch/20191023032302.160388-1-wangkefeng.wang@huawei.com/ Or do i need to move the '#define mk_pmd(page, prot) ...' to pgtable-64.h ?
diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 4b708ae08910..f35d9c90d4cb 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -508,10 +508,7 @@ static inline unsigned long pmd_pfn(pmd_t pmd) return ((__pmd_to_phys(pmd) & PMD_MASK) >> PAGE_SHIFT); } -static inline pmd_t mk_pmd(struct page *page, pgprot_t prot) -{ - return pfn_pmd(page_to_pfn(page), prot); -} +#define mk_pmd(page, prot) pfn_pmd(page_to_pfn(page), prot) static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot) {
With "riscv: mm: add THP support on 64-bit", mk_pmd() function introduce build errors, 1.build with CONFIG_ARCH_RV32I=y: arch/riscv/include/asm/pgtable.h: In function 'mk_pmd': arch/riscv/include/asm/pgtable.h:513:9: error: implicit declaration of function 'pfn_pmd'; did you mean 'pfn_pgd'? [-Werror=implicit-function-declaration] 2.build with CONFIG_SPARSEMEM=y && CONFIG_SPARSEMEM_VMEMMAP=n arch/riscv/include/asm/pgtable.h: In function 'mk_pmd': include/asm-generic/memory_model.h:64:14: error: implicit declaration of function 'page_to_section'; did you mean 'present_section'? [-Werror=implicit-function-declaration] Use macro definition instead of inline function for mk_pmd to fix the above problems.It is similar to the mk_pte macro. Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Nanyong Sun <sunnanyong@huawei.com> --- arch/riscv/include/asm/pgtable.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)