[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <mhng-cc2b2d1a-227f-484a-a3ac-94927f8d336c@palmer-ri-x1c9>
Date: Thu, 19 Dec 2024 12:45:31 -0800 (PST)
From: Palmer Dabbelt <palmer@...belt.com>
To: rostedt@...dmis.org
CC: linux-kernel@...r.kernel.org, linux-staging@...ts.linux.dev, dpenkler@...il.com,
Greg KH <gregkh@...uxfoundation.org>, Linus Torvalds <torvalds@...ux-foundation.org>
Subject: Re: [PATCH] staging: gpib: Fix allyesconfig build failures
On Tue, 17 Dec 2024 07:19:04 PST (-0800), rostedt@...dmis.org wrote:
> From: Steven Rostedt <rostedt@...dmis.org>
>
> My tests run an allyesconfig build and it failed with the following errors:
>
> LD [M] samples/kfifo/dma-example.ko
> ld.lld: error: undefined symbol: nec7210_board_reset
>>>> referenced by fmh_gpib.c:1512 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:1512)
>>>> vmlinux.o:(fmh_gpib_detach)
>>>> referenced by fmh_gpib.c:1637 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:1637)
>>>> vmlinux.o:(fmh_gpib_pci_detach)
>>>> referenced by fmh_gpib.c:1342 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:1342)
>>>> vmlinux.o:(fmh_gpib_init)
>
> ld.lld: error: undefined symbol: nec7210_read
>>>> referenced by fmh_gpib.c:46 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:46)
>>>> vmlinux.o:(fmh_gpib_read)
>
> ld.lld: error: undefined symbol: nec7210_write
>>>> referenced by fmh_gpib.c:54 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:54)
>>>> vmlinux.o:(fmh_gpib_write)
>
> It appears that some modules call the function nec7210_board_reset() that
> is defined in nec7210.c. In an allyesconfig build, these other modules are
> built in. But the file that holds nec7210_board_reset() has:
>
> obj-m += nec7210.o
>
> Where that "-m" means it only gets built as a module. With the other
> modules built in, they have no access to nec7210_board_reset() and the build
> fails.
>
> This isn't the only function. After fixing that one, I hit another:
>
> ld.lld: error: undefined symbol: push_gpib_event
>>>> referenced by fmh_gpib.c:1166 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:1166)
>>>> vmlinux.o:(fmh_gpib_internal_interrupt)
>>>> referenced by nec7210.c:956 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/nec7210/nec7210.c:956)
>>>> vmlinux.o:(nec7210_interrupt_have_status)
>>>> referenced by nec7210.c:962 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/nec7210/nec7210.c:962)
>>>> vmlinux.o:(nec7210_interrupt_have_status)
>
> ld.lld: error: undefined symbol: gpib_match_device_path
>>>> referenced by fmh_gpib.c:1370 (/work/build/trace/nobackup/linux-test.git/drivers/staging/gpib/fmh_gpib/fmh_gpib.c:1370)
>>>> vmlinux.o:(fmh_gpib_device_match)
>
> Where push_gpib_event() was also used outside of the file it was defined
> in, and that file too only was built as a module.
>
> Since the directory that nec7210.c is only traversed when
> CONFIG_GPIB_NEC7210 is set, and the directory with gpib_common.c is only
> traversed when CONFIG_GPIB_COMMON is set, use those configs as the option to
> build those modules. When it is an allyesconfig, then they will both be
> built in and their functions will be available to the other modules that
> are also built in.
>
> Fixes: 3ba84ac69b53e ("staging: gpib: Add nec7210 GPIB chip driver")
> Fixes: 9dde4559e9395 ("staging: gpib: Add GPIB common core driver")
> Signed-off-by: Steven Rostedt (Google) <rostedt@...dmis.org>
> ---
> drivers/staging/gpib/common/Makefile | 2 +-
> drivers/staging/gpib/nec7210/Makefile | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/staging/gpib/common/Makefile b/drivers/staging/gpib/common/Makefile
> index 0c4c77bea75b..460586edb574 100644
> --- a/drivers/staging/gpib/common/Makefile
> +++ b/drivers/staging/gpib/common/Makefile
> @@ -1,5 +1,5 @@
>
> -obj-m += gpib_common.o
> +obj-$(CONFIG_GPIB_COMMON) += gpib_common.o
>
> gpib_common-objs := gpib_os.o iblib.o
>
> diff --git a/drivers/staging/gpib/nec7210/Makefile b/drivers/staging/gpib/nec7210/Makefile
> index 8d4d90f21109..64330f2e89d1 100644
> --- a/drivers/staging/gpib/nec7210/Makefile
> +++ b/drivers/staging/gpib/nec7210/Makefile
> @@ -1,4 +1,4 @@
>
> -obj-m += nec7210.o
> +obj-$(CONFIG_GPIB_NEC7210) += nec7210.o
Reviewed-by: Palmer Dabbelt <palmer@...osinc.com>
Thanks, this was breaking my stuff too. I was just going to send a
revert, but this seems better. I've got it stacked up locally for the
testers, so no rush on my end.
Powered by blists - more mailing lists