[PATCH v2 3/6] powerpc/fsl_booke/64: implement KASLR for fsl_booke64

kbuild test robot lkp at intel.com
Wed Feb 5 16:13:43 AEDT 2020


Hi Jason,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on powerpc/next]
[also build test ERROR on v5.5 next-20200204]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Jason-Yan/implement-KASLR-for-powerpc-fsl_booke-64/20200205-105837
base:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: powerpc-defconfig (attached as .config)
compiler: powerpc64-linux-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=powerpc 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp at intel.com>

All errors (new ones prefixed by >>):

   arch/powerpc/kernel/setup_64.c: In function 'early_setup':
>> arch/powerpc/kernel/setup_64.c:303:2: error: implicit declaration of function 'kaslr_early_init'; did you mean 'udbg_early_init'? [-Werror=implicit-function-declaration]
     kaslr_early_init(__va(dt_ptr), 0);
     ^~~~~~~~~~~~~~~~
     udbg_early_init
   cc1: all warnings being treated as errors

vim +303 arch/powerpc/kernel/setup_64.c

   262	
   263	/*
   264	 * Early initialization entry point. This is called by head.S
   265	 * with MMU translation disabled. We rely on the "feature" of
   266	 * the CPU that ignores the top 2 bits of the address in real
   267	 * mode so we can access kernel globals normally provided we
   268	 * only toy with things in the RMO region. From here, we do
   269	 * some early parsing of the device-tree to setup out MEMBLOCK
   270	 * data structures, and allocate & initialize the hash table
   271	 * and segment tables so we can start running with translation
   272	 * enabled.
   273	 *
   274	 * It is this function which will call the probe() callback of
   275	 * the various platform types and copy the matching one to the
   276	 * global ppc_md structure. Your platform can eventually do
   277	 * some very early initializations from the probe() routine, but
   278	 * this is not recommended, be very careful as, for example, the
   279	 * device-tree is not accessible via normal means at this point.
   280	 */
   281	
   282	void __init early_setup(unsigned long dt_ptr)
   283	{
   284		static __initdata struct paca_struct boot_paca;
   285	
   286		/* -------- printk is _NOT_ safe to use here ! ------- */
   287	
   288		/* Try new device tree based feature discovery ... */
   289		if (!dt_cpu_ftrs_init(__va(dt_ptr)))
   290			/* Otherwise use the old style CPU table */
   291			identify_cpu(0, mfspr(SPRN_PVR));
   292	
   293		/* Assume we're on cpu 0 for now. Don't write to the paca yet! */
   294		initialise_paca(&boot_paca, 0);
   295		setup_paca(&boot_paca);
   296		fixup_boot_paca();
   297	
   298		/* -------- printk is now safe to use ------- */
   299	
   300		/* Enable early debugging if any specified (see udbg.h) */
   301		udbg_early_init();
   302	
 > 303		kaslr_early_init(__va(dt_ptr), 0);
   304	
   305		udbg_printf(" -> %s(), dt_ptr: 0x%lx\n", __func__, dt_ptr);
   306	
   307		/*
   308		 * Do early initialization using the flattened device
   309		 * tree, such as retrieving the physical memory map or
   310		 * calculating/retrieving the hash table size.
   311		 */
   312		early_init_devtree(__va(dt_ptr));
   313	
   314		/* Now we know the logical id of our boot cpu, setup the paca. */
   315		if (boot_cpuid != 0) {
   316			/* Poison paca_ptrs[0] again if it's not the boot cpu */
   317			memset(&paca_ptrs[0], 0x88, sizeof(paca_ptrs[0]));
   318		}
   319		setup_paca(paca_ptrs[boot_cpuid]);
   320		fixup_boot_paca();
   321	
   322		/*
   323		 * Configure exception handlers. This include setting up trampolines
   324		 * if needed, setting exception endian mode, etc...
   325		 */
   326		configure_exceptions();
   327	
   328		/*
   329		 * Configure Kernel Userspace Protection. This needs to happen before
   330		 * feature fixups for platforms that implement this using features.
   331		 */
   332		setup_kup();
   333	
   334		/* Apply all the dynamic patching */
   335		apply_feature_fixups();
   336		setup_feature_keys();
   337	
   338		early_ioremap_setup();
   339	
   340		/* Initialize the hash table or TLB handling */
   341		early_init_mmu();
   342	
   343		/*
   344		 * After firmware and early platform setup code has set things up,
   345		 * we note the SPR values for configurable control/performance
   346		 * registers, and use those as initial defaults.
   347		 */
   348		record_spr_defaults();
   349	
   350		/*
   351		 * At this point, we can let interrupts switch to virtual mode
   352		 * (the MMU has been setup), so adjust the MSR in the PACA to
   353		 * have IR and DR set and enable AIL if it exists
   354		 */
   355		cpu_ready_for_interrupts();
   356	
   357		/*
   358		 * We enable ftrace here, but since we only support DYNAMIC_FTRACE, it
   359		 * will only actually get enabled on the boot cpu much later once
   360		 * ftrace itself has been initialized.
   361		 */
   362		this_cpu_enable_ftrace();
   363	
   364		udbg_printf(" <- %s()\n", __func__);
   365	

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 25667 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20200205/8498789d/attachment-0001.gz>


More information about the Linuxppc-dev mailing list