Hi Palmer, I love your patch! Yet something to improve: [auto build test ERROR on arnd-asm-generic/master] [also build test ERROR on arm64/for-next/core geert-m68k/for-next powerpc/next powerpc/fixes linus/master v6.1-rc8 next-20221208] [cannot apply to geert-m68k/for-linus davem-sparc/master] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Palmer-Dabbelt/Remove-COMMAND_LINE_SIZE-from-uapi/20221211-142813 base: https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git master patch link: https://lore.kernel.org/r/20221211061358.28035-5-palmer%40rivosinc.com patch subject: [PATCH v2 04/24] ia64: Remove COMMAND_LINE_SIZE from uapi config: ia64-randconfig-r012-20221211 compiler: ia64-linux-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/0cbb73515d646791aca15e6d6a541c689aa0b43f git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Palmer-Dabbelt/Remove-COMMAND_LINE_SIZE-from-uapi/20221211-142813 git checkout 0cbb73515d646791aca15e6d6a541c689aa0b43f # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=ia64 SHELL=/bin/bash arch/ia64/kernel/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All error/warnings (new ones prefixed by >>): In file included from arch/ia64/include/asm/ptrace.h:46, from arch/ia64/include/asm/processor.h:20, from arch/ia64/include/asm/timex.h:15, from include/linux/timex.h:67, from include/linux/time32.h:13, from include/linux/time.h:60, from include/linux/stat.h:19, from include/linux/module.h:13, from arch/ia64/kernel/efi.c:25: arch/ia64/kernel/efi.c: In function 'efi_get_pal_addr': >> arch/ia64/kernel/efi.c:371:30: error: 'ia64_boot_param' undeclared (first use in this function) 371 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ^~~~~~~~~~~~~~~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/efi.c:371:30: note: each undeclared identifier is reported only once for each function it appears in 371 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ^~~~~~~~~~~~~~~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/efi.c: In function 'efi_init': arch/ia64/kernel/efi.c:521:27: error: 'ia64_boot_param' undeclared (first use in this function) 521 | efi_systab = __va(ia64_boot_param->efi_systab); | ^~~~~~~~~~~~~~~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/efi.c:490:13: warning: variable 'efi_desc_size' set but not used [-Wunused-but-set-variable] 490 | u64 efi_desc_size; | ^~~~~~~~~~~~~ arch/ia64/kernel/efi.c:489:31: warning: variable 'efi_map_end' set but not used [-Wunused-but-set-variable] 489 | void *efi_map_start, *efi_map_end; | ^~~~~~~~~~~ arch/ia64/kernel/efi.c: In function 'efi_enter_virtual_mode': arch/ia64/kernel/efi.c:610:30: error: 'ia64_boot_param' undeclared (first use in this function) 610 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ^~~~~~~~~~~~~~~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/efi.c: In function 'efi_get_iobase': arch/ia64/kernel/efi.c:694:30: error: 'ia64_boot_param' undeclared (first use in this function) 694 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ^~~~~~~~~~~~~~~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/efi.c: In function 'efi_memory_descriptor': arch/ia64/kernel/efi.c:727:30: error: 'ia64_boot_param' undeclared (first use in this function) 727 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ^~~~~~~~~~~~~~~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/efi.c: In function 'efi_memmap_intersects': arch/ia64/kernel/efi.c:748:30: error: 'ia64_boot_param' undeclared (first use in this function) 748 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ^~~~~~~~~~~~~~~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/efi.c: At top level: arch/ia64/kernel/efi.c:971:1: warning: no previous prototype for 'find_memmap_space' [-Wmissing-prototypes] 971 | find_memmap_space (void) | ^~~~~~~~~~~~~~~~~ arch/ia64/kernel/efi.c: In function 'find_memmap_space': arch/ia64/kernel/efi.c:980:30: error: 'ia64_boot_param' undeclared (first use in this function) 980 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ^~~~~~~~~~~~~~~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/efi.c: In function 'efi_memmap_init': arch/ia64/kernel/efi.c:1059:30: error: 'ia64_boot_param' undeclared (first use in this function) 1059 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ^~~~~~~~~~~~~~~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/efi.c: In function 'efi_initialize_iomem_resources': arch/ia64/kernel/efi.c:1182:30: error: 'ia64_boot_param' undeclared (first use in this function) 1182 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ^~~~~~~~~~~~~~~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ -- In file included from arch/ia64/kernel/process.c:43: >> arch/ia64/include/asm/kexec.h:27:24: warning: 'struct ia64_boot_param' declared inside parameter list will not be visible outside of this definition or declaration 27 | struct ia64_boot_param *, unsigned long); | ^~~~~~~~~~~~~~~ arch/ia64/kernel/process.c:156:1: warning: no previous prototype for 'console_print' [-Wmissing-prototypes] 156 | console_print(const char *s) | ^~~~~~~~~~~~~ arch/ia64/kernel/process.c:162:1: warning: no previous prototype for 'do_notify_resume_user' [-Wmissing-prototypes] 162 | do_notify_resume_user(sigset_t *unused, struct sigscratch *scr, long in_syscall) | ^~~~~~~~~~~~~~~~~~~~~ arch/ia64/kernel/process.c:404:17: warning: no previous prototype for 'ia64_clone' [-Wmissing-prototypes] 404 | asmlinkage long ia64_clone(unsigned long clone_flags, unsigned long stack_start, | ^~~~~~~~~~ arch/ia64/kernel/process.c:558:1: warning: no previous prototype for 'cpu_halt' [-Wmissing-prototypes] 558 | cpu_halt (void) | ^~~~~~~~ -- arch/ia64/kernel/setup.c: In function 'reserve_memory': >> arch/ia64/kernel/setup.c:367:61: error: invalid application of 'sizeof' to incomplete type 'struct ia64_boot_param' 367 | rsvd_region[n].end = rsvd_region[n].start + sizeof(*ia64_boot_param); | ^ In file included from arch/ia64/include/asm/ptrace.h:46, from arch/ia64/include/asm/processor.h:20, from arch/ia64/include/asm/timex.h:15, from include/linux/timex.h:67, from include/linux/time32.h:13, from include/linux/time.h:60, from include/linux/stat.h:19, from include/linux/module.h:13, from arch/ia64/kernel/setup.c:26: >> arch/ia64/kernel/setup.c:370:68: error: invalid use of undefined type 'struct ia64_boot_param' 370 | rsvd_region[n].start = (unsigned long) __va(ia64_boot_param->efi_memmap); | ^~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/setup.c:371:70: error: invalid use of undefined type 'struct ia64_boot_param' 371 | rsvd_region[n].end = rsvd_region[n].start + ia64_boot_param->efi_memmap_size; | ^~ arch/ia64/kernel/setup.c:374:68: error: invalid use of undefined type 'struct ia64_boot_param' 374 | rsvd_region[n].start = (unsigned long) __va(ia64_boot_param->command_line); | ^~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/setup.c:376:62: error: invalid use of undefined type 'struct ia64_boot_param' 376 | + strlen(__va(ia64_boot_param->command_line)) + 1); | ^~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/setup.c: In function 'screen_info_setup': arch/ia64/kernel/setup.c:504:29: error: invalid use of undefined type 'struct ia64_boot_param' 504 | if (!ia64_boot_param->console_info.num_rows || | ^~ arch/ia64/kernel/setup.c:505:29: error: invalid use of undefined type 'struct ia64_boot_param' 505 | !ia64_boot_param->console_info.num_cols) { | ^~ arch/ia64/kernel/setup.c:513:41: error: invalid use of undefined type 'struct ia64_boot_param' 513 | orig_x = ia64_boot_param->console_info.orig_x; | ^~ arch/ia64/kernel/setup.c:514:41: error: invalid use of undefined type 'struct ia64_boot_param' 514 | orig_y = ia64_boot_param->console_info.orig_y; | ^~ arch/ia64/kernel/setup.c:515:43: error: invalid use of undefined type 'struct ia64_boot_param' 515 | num_cols = ia64_boot_param->console_info.num_cols; | ^~ arch/ia64/kernel/setup.c:516:43: error: invalid use of undefined type 'struct ia64_boot_param' 516 | num_rows = ia64_boot_param->console_info.num_rows; | ^~ arch/ia64/kernel/setup.c: In function 'setup_arch': arch/ia64/kernel/setup.c:554:42: error: invalid use of undefined type 'struct ia64_boot_param' 554 | *cmdline_p = __va(ia64_boot_param->command_line); | ^~ arch/ia64/include/asm/page.h:124:54: note: in definition of macro '__va' 124 | #define __va(x) ({ia64_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.p;}) | ^ arch/ia64/kernel/setup.c: At top level: arch/ia64/kernel/setup.c:1071:1: warning: no previous prototype for 'check_bugs' [-Wmissing-prototypes] 1071 | check_bugs (void) | ^~~~~~~~~~ -- arch/ia64/kernel/traps.c:35:1: warning: no previous prototype for 'trap_init' [-Wmissing-prototypes] 35 | trap_init (void) | ^~~~~~~~~ arch/ia64/kernel/traps.c: In function 'trap_init': >> arch/ia64/kernel/traps.c:37:13: error: 'ia64_boot_param' undeclared (first use in this function) 37 | if (ia64_boot_param->fpswa) | ^~~~~~~~~~~~~~~ arch/ia64/kernel/traps.c:37:13: note: each undeclared identifier is reported only once for each function it appears in arch/ia64/kernel/traps.c: At top level: arch/ia64/kernel/traps.c:43:1: warning: no previous prototype for 'die' [-Wmissing-prototypes] 43 | die (const char *str, struct pt_regs *regs, long err) | ^~~ arch/ia64/kernel/traps.c:93:1: warning: no previous prototype for 'die_if_kernel' [-Wmissing-prototypes] 93 | die_if_kernel (char *str, struct pt_regs *regs, long err) | ^~~~~~~~~~~~~ arch/ia64/kernel/traps.c:101:11: warning: no previous prototype for 'ia64_bad_break' [-Wmissing-prototypes] 101 | __kprobes ia64_bad_break (unsigned long break_num, struct pt_regs *regs) | ^~~~~~~~~~~~~~ arch/ia64/kernel/traps.c:387:1: warning: no previous prototype for 'ia64_illegal_op_fault' [-Wmissing-prototypes] 387 | ia64_illegal_op_fault (unsigned long ec, long arg1, long arg2, long arg3, | ^~~~~~~~~~~~~~~~~~~~~ arch/ia64/kernel/traps.c:416:1: warning: no previous prototype for 'ia64_fault' [-Wmissing-prototypes] 416 | ia64_fault (unsigned long vector, unsigned long isr, unsigned long ifa, | ^~~~~~~~~~ -- In file included from arch/ia64/kernel/mca.c:101: >> arch/ia64/include/asm/kexec.h:27:24: warning: 'struct ia64_boot_param' declared inside parameter list will not be visible outside of this definition or declaration 27 | struct ia64_boot_param *, unsigned long); | ^~~~~~~~~~~~~~~ arch/ia64/kernel/mca.c: In function 'ia64_mca_printk': arch/ia64/kernel/mca.c:212:13: warning: variable 'printed_len' set but not used [-Wunused-but-set-variable] 212 | int printed_len; | ^~~~~~~~~~~ arch/ia64/kernel/mca.c: At top level: arch/ia64/kernel/mca.c:504:1: warning: no previous prototype for 'search_mca_table' [-Wmissing-prototypes] 504 | search_mca_table (const struct mca_table_entry *first, | ^~~~~~~~~~~~~~~~ arch/ia64/kernel/mca.c:607:1: warning: no previous prototype for 'ia64_mca_register_cpev' [-Wmissing-prototypes] 607 | ia64_mca_register_cpev (int cpev) | ^~~~~~~~~~~~~~~~~~~~~~ arch/ia64/kernel/mca.c:1284:1: warning: no previous prototype for 'ia64_mca_handler' [-Wmissing-prototypes] 1284 | ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw, | ^~~~~~~~~~~~~~~~ vim +/ia64_boot_param +371 arch/ia64/kernel/efi.c f14f75b81187cd Jes Sorensen 2005-06-21 356 ^1da177e4c3f41 Linus Torvalds 2005-04-16 357 /* 965e7c8affeca2 Aron Griffis 2008-01-08 358 * Look for the PAL_CODE region reported by EFI and map it using an ^1da177e4c3f41 Linus Torvalds 2005-04-16 359 * ITR to enable safe PAL calls in virtual mode. See IA-64 Processor ^1da177e4c3f41 Linus Torvalds 2005-04-16 360 * Abstraction Layer chapter 11 in ADAG ^1da177e4c3f41 Linus Torvalds 2005-04-16 361 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 362 void * ^1da177e4c3f41 Linus Torvalds 2005-04-16 363 efi_get_pal_addr (void) ^1da177e4c3f41 Linus Torvalds 2005-04-16 364 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 365 void *efi_map_start, *efi_map_end, *p; ^1da177e4c3f41 Linus Torvalds 2005-04-16 366 efi_memory_desc_t *md; ^1da177e4c3f41 Linus Torvalds 2005-04-16 367 u64 efi_desc_size; ^1da177e4c3f41 Linus Torvalds 2005-04-16 368 int pal_code_count = 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 369 u64 vaddr, mask; ^1da177e4c3f41 Linus Torvalds 2005-04-16 370 ^1da177e4c3f41 Linus Torvalds 2005-04-16 @371 efi_map_start = __va(ia64_boot_param->efi_memmap); ^1da177e4c3f41 Linus Torvalds 2005-04-16 372 efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size; ^1da177e4c3f41 Linus Torvalds 2005-04-16 373 efi_desc_size = ia64_boot_param->efi_memdesc_size; ^1da177e4c3f41 Linus Torvalds 2005-04-16 374 ^1da177e4c3f41 Linus Torvalds 2005-04-16 375 for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 376 md = p; ^1da177e4c3f41 Linus Torvalds 2005-04-16 377 if (md->type != EFI_PAL_CODE) ^1da177e4c3f41 Linus Torvalds 2005-04-16 378 continue; ^1da177e4c3f41 Linus Torvalds 2005-04-16 379 ^1da177e4c3f41 Linus Torvalds 2005-04-16 380 if (++pal_code_count > 1) { 7d9aed26ed11d7 Aron Griffis 2008-02-04 381 printk(KERN_ERR "Too many EFI Pal Code memory ranges, " e088a4ad7fa53c Matthew Wilcox 2009-05-22 382 "dropped @ %llx\n", md->phys_addr); ^1da177e4c3f41 Linus Torvalds 2005-04-16 383 continue; ^1da177e4c3f41 Linus Torvalds 2005-04-16 384 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 385 /* 7d9aed26ed11d7 Aron Griffis 2008-02-04 386 * The only ITLB entry in region 7 that is used is the one 7d9aed26ed11d7 Aron Griffis 2008-02-04 387 * installed by __start(). That entry covers a 64MB range. ^1da177e4c3f41 Linus Torvalds 2005-04-16 388 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 389 mask = ~((1 << KERNEL_TR_PAGE_SHIFT) - 1); ^1da177e4c3f41 Linus Torvalds 2005-04-16 390 vaddr = PAGE_OFFSET + md->phys_addr; ^1da177e4c3f41 Linus Torvalds 2005-04-16 391 ^1da177e4c3f41 Linus Torvalds 2005-04-16 392 /* 7d9aed26ed11d7 Aron Griffis 2008-02-04 393 * We must check that the PAL mapping won't overlap with the 7d9aed26ed11d7 Aron Griffis 2008-02-04 394 * kernel mapping. ^1da177e4c3f41 Linus Torvalds 2005-04-16 395 * 7d9aed26ed11d7 Aron Griffis 2008-02-04 396 * PAL code is guaranteed to be aligned on a power of 2 between 7d9aed26ed11d7 Aron Griffis 2008-02-04 397 * 4k and 256KB and that only one ITR is needed to map it. This 7d9aed26ed11d7 Aron Griffis 2008-02-04 398 * implies that the PAL code is always aligned on its size, 7d9aed26ed11d7 Aron Griffis 2008-02-04 399 * i.e., the closest matching page size supported by the TLB. 7d9aed26ed11d7 Aron Griffis 2008-02-04 400 * Therefore PAL code is guaranteed never to cross a 64MB unless 7d9aed26ed11d7 Aron Griffis 2008-02-04 401 * it is bigger than 64MB (very unlikely!). So for now the 7d9aed26ed11d7 Aron Griffis 2008-02-04 402 * following test is enough to determine whether or not we need 7d9aed26ed11d7 Aron Griffis 2008-02-04 403 * a dedicated ITR for the PAL code. ^1da177e4c3f41 Linus Torvalds 2005-04-16 404 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 405 if ((vaddr & mask) == (KERNEL_START & mask)) { d4ed80841ad4a1 Harvey Harrison 2008-03-04 406 printk(KERN_INFO "%s: no need to install ITR for PAL code\n", d4ed80841ad4a1 Harvey Harrison 2008-03-04 407 __func__); ^1da177e4c3f41 Linus Torvalds 2005-04-16 408 continue; ^1da177e4c3f41 Linus Torvalds 2005-04-16 409 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 410 685c7f5d3629d5 Li Zefan 2007-11-21 411 if (efi_md_size(md) > IA64_GRANULE_SIZE) 965e7c8affeca2 Aron Griffis 2008-01-08 412 panic("Whoa! PAL code size bigger than a granule!"); ^1da177e4c3f41 Linus Torvalds 2005-04-16 413 -- 0-DAY CI Kernel Test Service https://01.org/lkp