Re: [PATCH v6 1/4] x86: kdump: move reserve_crashkernel_low() into crash_core.c

From: kbuild test robot
Date: Sat Aug 31 2019 - 19:16:35 EST


Hi Chen,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[cannot apply to v5.3-rc6 next-20190830]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Chen-Zhou/support-reserving-crashkernel-above-4G-on-arm64-kdump/20190901-053351
config: x86_64-randconfig-s0-09010004 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-11) 7.4.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

ld: kernel/crash_core.o: in function `reserve_crashkernel_low':
>> kernel/crash_core.c:354: undefined reference to `crashk_low_res'
>> ld: kernel/crash_core.c:355: undefined reference to `crashk_low_res'

vim +354 kernel/crash_core.c

296
297 int __init reserve_crashkernel_low(void)
298 {
299 #if defined(CONFIG_X86_64) || defined(CONFIG_ARM64)
300 unsigned long long base, low_base = 0, low_size = 0;
301 unsigned long total_low_mem;
302 int ret;
303
304 total_low_mem = memblock_mem_size(1UL << (32 - PAGE_SHIFT));
305
306 /* crashkernel=Y,low */
307 ret = parse_crashkernel_low(boot_command_line, total_low_mem, &low_size,
308 &base);
309 if (ret) {
310 #ifdef CONFIG_X86_64
311 /*
312 * two parts from lib/swiotlb.c:
313 * -swiotlb size: user-specified with swiotlb= or default.
314 *
315 * -swiotlb overflow buffer: now hardcoded to 32k. We round it
316 * to 8M for other buffers that may need to stay low too. Also
317 * make sure we allocate enough extra low memory so that we
318 * don't run out of DMA buffers for 32-bit devices.
319 */
320 low_size = max(swiotlb_size_or_default() + (8UL << 20),
321 256UL << 20);
322 #else
323 /*
324 * in arm64, reserve low memory if and only if crashkernel=X,low
325 * specified.
326 */
327 return -EINVAL;
328 #endif
329 } else {
330 /* passed with crashkernel=0,low ? */
331 if (!low_size)
332 return 0;
333 }
334
335 low_base = memblock_find_in_range(0, 1ULL << 32, low_size, CRASH_ALIGN);
336 if (!low_base) {
337 pr_err("Cannot reserve %ldMB crashkernel low memory, please try smaller size.\n",
338 (unsigned long)(low_size >> 20));
339 return -ENOMEM;
340 }
341
342 ret = memblock_reserve(low_base, low_size);
343 if (ret) {
344 pr_err("%s: Error reserving crashkernel low memblock.\n",
345 __func__);
346 return ret;
347 }
348
349 pr_info("Reserving %ldMB of low memory at %ldMB for crashkernel (System low RAM: %ldMB)\n",
350 (unsigned long)(low_size >> 20),
351 (unsigned long)(low_base >> 20),
352 (unsigned long)(total_low_mem >> 20));
353
> 354 crashk_low_res.start = low_base;
> 355 crashk_low_res.end = low_base + low_size - 1;
356 #endif
357 return 0;
358 }
359

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip