Discussion:
randconfig build error with next-20141020, in drivers/media/platform/marvell-ccic/mcam-core.c
Jim Davis
2014-10-20 17:52:53 UTC
Permalink
Building with the attached random configuration file,

drivers/built-in.o: In function `mcam_setup_vb2':
/home/jim/linux/drivers/media/platform/marvell-ccic/mcam-core.c:1299: undefined
reference to `vb2_dma_sg_memops'
make: *** [vmlinux] Error 1
Andreas Ruprecht
2014-10-20 22:56:57 UTC
Permalink
Hi,

after a lot of staring at the configuration it seems like this boils
down to an issue within the Kconfig constraint description.

Broken down to the important bits:

- CONFIG_VIDEO_TW68 and CONFIG_VIDEO_SAA7134 *select*
CONFIG_VIDEOBUF2_DMA_SG

- Both of these options are set to "*m*" in the configuration provided,
which means that CONFIG_VIDEOBUF2_DMA_SG will also be selected as "m".
According to Documentation/kbuild/kconfig-language.txt, line 101, "m" is
set as the minimal value for CONFIG_VIDEOBUF2_DMA_SG by the selects, and
as no other options select it as "y", it stays "m".

- CONFIG_VIDEO_CAFE_CCIC is set to "*y*".
The header file at drivers/media/platform/marvell-ccic/mcam-core.h then
sets an internal preprocessor variable in line 28:

#if IS_ENABLED(CONFIG_VIDEOBUF2_DMA_SG)
#define MCAM_MODE_DMA_SG 1
#endif

The source code right around line 1299 in
drivers/media/platform/marvell-ccic/mcam-core.c, where the undefined
reference occurs, depends on MCAM_MODE_DMA_SG.

This means that CONFIG_VIDEOBUF2_DMA_SG is compiled as an LKM, thus the
reference for vb2_dma_sg_memops from mcam-core.c (which is statically
compiled) can not be resolved in the builtin.o files and vmlinux.

Unfortunately, I haven't got a solution on how to resolve that, but
maybe this summary helps someone else to come up with one.

Best regards,
Andreas
Post by Jim Davis
Building with the attached random configuration file,
/home/jim/linux/drivers/media/platform/marvell-ccic/mcam-core.c:1299: undefined
reference to `vb2_dma_sg_memops'
make: *** [vmlinux] Error 1
Loading...