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

From: kbuild test robot
Date: Wed Feb 05 2020 - 00:15:03 EST


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@xxxxxxxxx>

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@xxxxxxxxxxxx Intel Corporation

Attachment: .config.gz
Description: application/gzip