> On May 5, 2019, at 6:06 AM, kbuild test robot <l...@intel.com> wrote:
> 
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/mm
> head:   ef5f22b4e5caf7e5ac12b28d4c9566c95d709ba5
> commit: ef5f22b4e5caf7e5ac12b28d4c9566c95d709ba5 [36/36] x86/mm: Initialize 
> PGD cache during mm initialization
> config: openrisc-or1ksim_defconfig (attached as .config)
> compiler: or1k-linux-gcc (GCC) 6.0.0 20160327 (experimental)
> reproduce:
>        wget 
> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
> ~/bin/make.cross
>        chmod +x ~/bin/make.cross
>        git checkout ef5f22b4e5caf7e5ac12b28d4c9566c95d709ba5
>        # save the attached .config to linux build tree
>        make.cross ARCH=openrisc 
> 
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <l...@intel.com>
> 
> All errors (new ones prefixed by >>):
> 
>   init/main.c: In function 'mm_init':
>>> init/main.c:540:2: error: implicit declaration of function 'pgd_cache_init' 
>>> [-Werror=implicit-function-declaration]
>     pgd_cache_init();
>     ^~~~~~~~~~~~~~
>   cc1: some warnings being treated as errors
> 
> vim +/pgd_cache_init +540 init/main.c
> 
>   519 
>   520 /*
>   521  * Set up kernel memory allocators
>   522  */
>   523 static void __init mm_init(void)
>   524 {
>   525         /*
>   526          * page_ext requires contiguous pages,
>   527          * bigger than MAX_ORDER unless SPARSEMEM.
>   528          */
>   529         page_ext_init_flatmem();
>   530         mem_init();
>   531         kmem_cache_init();
>   532         pgtable_init();
>   533         debug_objects_mem_init();
>   534         vmalloc_init();
>   535         ioremap_huge_init();
>   536         /* Should be run before the first non-init thread is created */
>   537         init_espfix_bsp();
>   538         /* Should be run after espfix64 is set up. */
>   539         pti_init();
>> 540          pgd_cache_init();
>   541 }
>   542 
> 
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
> <.config.gz>

Sorry for that - I got confused and forgot this is not arch-specific code. I
don’t see the latest commit in the x86/mm tree, so I assume you can squash
the following on top?

-- >8 --

Subject: [PATCH] x86/mm: Fix breakage due to missing pgd_cache_init()

Set pgd_cache_init() as a weak symbol.

Signed-off-by: Nadav Amit <na...@vmware.com>
---
 arch/x86/include/asm/pgtable.h | 1 -
 include/asm-generic/pgtable.h  | 2 ++
 init/main.c                    | 2 ++
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
index 9635662e1163..6b6bfdfe83aa 100644
--- a/arch/x86/include/asm/pgtable.h
+++ b/arch/x86/include/asm/pgtable.h
@@ -1027,7 +1027,6 @@ static inline int pgd_none(pgd_t pgd)
 
 extern int direct_gbpages;
 void init_mem_mapping(void);
-void pgd_cache_init(void);
 void early_alloc_pgt_buf(void);
 extern void memblock_find_dma_reserve(void);
 
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
index fa782fba51ee..75d9d68a6de7 100644
--- a/include/asm-generic/pgtable.h
+++ b/include/asm-generic/pgtable.h
@@ -1126,6 +1126,8 @@ int phys_mem_access_prot_allowed(struct file *file, 
unsigned long pfn,
 static inline void init_espfix_bsp(void) { }
 #endif
 
+extern void __init pgd_cache_init(void);
+
 #ifndef __HAVE_ARCH_PFN_MODIFY_ALLOWED
 static inline bool pfn_modify_allowed(unsigned long pfn, pgprot_t prot)
 {
diff --git a/init/main.c b/init/main.c
index 7fac4ac2fede..2f99b3f40aaa 100644
--- a/init/main.c
+++ b/init/main.c
@@ -506,6 +506,8 @@ void __init __weak mem_encrypt_init(void) { }
 
 void __init __weak poking_init(void) { }
 
+void __init __weak pgd_cache_init(void) { }
+
 bool initcall_debug;
 core_param(initcall_debug, initcall_debug, bool, 0644);
 
-- 
2.17.1

Reply via email to