Hi, this is your Linux kernel regression tracker. On 03.11.22 03:28, Greg KH wrote: > On Thu, Oct 20, 2022 at 09:20:24PM +0800, zhangxiaoxu (A) wrote: >> >> >> On 2022/10/20 13:04, Greg KH wrote: >>> On Thu, Oct 20, 2022 at 11:27:22AM +0800, Zhang Xiaoxu wrote: >>>> When set CONFIG_SERIAL_EARLYCON=y and CONFIG_SERIAL_CORE=m, there is >>>> a compile error as below: >>>> >>>> ld: vmlinux.o: in function `parse_options.constprop.0': >>>> earlycon.c:(.init.text+0xba5a3): undefined reference to `uart_parse_earlycon' Zhang Xiaoxu, was this ever addressed? Doesn't look like it, but maybe I misse dsomething. I'm asking because I noticed a regression report with a similar failure msg: https://bugzilla.kernel.org/show_bug.cgi?id=216847 To quote: ``` > Kernel: 6.1.1 > Observed: since 6.1.0 > Fail: "ld vmlinux" complaines on unresolved symbol" > Tested compilers: clang 16.0.0.0 and gcc 13.0.0.0 show same picture. > Tested link modes: standard as well as thin LTO. > > Interesting: the symbol is correctly marked as module export like many others. > But only this symbol fails at link stage. > > Mitigation: compiling option "8250/16550 and compatible serial support" into the kernel. > [...] > Linker: ld.lld > > Error messages: > > LD vmlinux.o > vmlinux.o: warning: objtool: early_init_dt_scan_memory+0x1ab: unreachable instruction > OBJCOPY modules.builtin.modinfo > GEN modules.builtin > GEN .vmlinux.objs > > LD vmlinux > ld.lld: error: undefined symbol: uart_parse_earlycon >>>> referenced by usercopy_64.c >>>> vmlinux.o:(parse_options) > > So the INTERESTING symbol is uart_parse_earlycon ``` Or is that a totally different issue? Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat) P.S.: As the Linux kernel's regression tracker I deal with a lot of reports and sometimes miss something important when writing mails like this. If that's the case here, don't hesitate to tell me in a public reply, it's in everyone's interest to set the public record straight. >>>> Since the SERIAL_EARLYCON use 'uart_parse_earlycon' which defined in >>>> SERIAL_CORE, so should select rather than depends on. >>> >>> No, please try to never use "select". >>> >>>> >>>> Fixes: 9aac5887595b ("tty/serial: add generic serial earlycon") >>> >>> So this has been a problem for a very very long time and never been >>> seen until now? That feels wrong, what changed to cause this to not >>> ever be hit before with all of the tens of thousands of random configs >>> that have been built since this very old kernel? >>> >> Yes, 0fb9342d06b0 ("tty: serial: earlycon dependency") already fix the >> same issue with add "depends on SERIAL_CORE". >> >> But there are some other scenarios can trigger the same issue. >> >> Use the config file in the bugzilla can reproduce the problem. >> https://bugzilla.kernel.org/show_bug.cgi?id=216611 >> >> Bisect with this config, find out the following commit introduce the issue: >> cdcc41a256efe8 ("tty: serial: Kconfig: Allow SERIAL_QCOM_GENI_CONSOLE to be enabled if SERIAL_QCOM_GENI is a module") >> >> config SERIAL_QCOM_GENI >> tristate "QCOM on-chip GENI based serial port support" >> depends on ARCH_QCOM || COMPILE_TEST >> depends on QCOM_GENI_SE >> select SERIAL_CORE >> >> config SERIAL_QCOM_GENI_CONSOLE >> bool "QCOM GENI Serial Console support" >> - depends on SERIAL_QCOM_GENI=y >> + depends on SERIAL_QCOM_GENI >> select SERIAL_CORE_CONSOLE >> select SERIAL_EARLYCON >> help >> Serial console driver for Qualcomm Technologies Inc's GENI based >> QUP hardware. > > Then this is an issue with that driver Kconfig options, not with the tty > core options. Please fix it up there. > > thanks, > > greg k-h