From: Arnd Bergmann <[email protected]>
Now that DVB_CORE can be a loadable module, pvrusb2 can run into
a link error:
ld.lld: error: undefined symbol: dvb_module_probe
>>> referenced by pvrusb2-devattr.c
>>> drivers/media/usb/pvrusb2/pvrusb2-devattr.o:(pvr2_lgdt3306a_attach) in archive vmlinux.a
ld.lld: error: undefined symbol: dvb_module_release
>>> referenced by pvrusb2-devattr.c
>>> drivers/media/usb/pvrusb2/pvrusb2-devattr.o:(pvr2_dual_fe_attach) in archive vmlinux.a
Refine the Kconfig dependencies to avoid this case.
Fixes: 7655c342dbc4 ("media: Kconfig: Make DVB_CORE=m possible when MEDIA_SUPPORT=y")
Signed-off-by: Arnd Bergmann <[email protected]>
---
drivers/media/usb/pvrusb2/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/media/usb/pvrusb2/Kconfig b/drivers/media/usb/pvrusb2/Kconfig
index f2b64e49c5a2..e02a25d2d029 100644
--- a/drivers/media/usb/pvrusb2/Kconfig
+++ b/drivers/media/usb/pvrusb2/Kconfig
@@ -37,6 +37,7 @@ config VIDEO_PVRUSB2_DVB
bool "pvrusb2 ATSC/DVB support"
default y
depends on VIDEO_PVRUSB2 && DVB_CORE
+ depends on VIDEO_PVRUSB2=m || DVB_CORE=y
select DVB_LGDT330X if MEDIA_SUBDRV_AUTOSELECT
select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT
select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
--
2.39.0
On Wed, Jan 18, 2023, at 16:39, Mike Isely wrote:
> That doesn't seem right. The pvrusb2 module should reference that
> symbol like any other. There is no special treatment of it within
> pvrusb2 - so why is that requiring special treatment here?
The problem is that VIDEO_PVRUSB2_DVB is a 'bool' symbol, not
a 'tristate', so the existing 'depends on DVB_CORE' is not sufficient.
Another way to do this would be to prevent VIDEO_PVRUSB2 from
being built-in when DVB_CORE is a module:
config VIDEO_PVRUSB2
tristate "Hauppauge WinTV-PVR USB2 support"
depends on VIDEO_DEV && I2C
+ depends on DVB_CORE || !DVB_CORE
select VIDEO_TUNER
select VIDEO_TVEEPROM
select VIDEO_CX2341X
but that doesn't feel right for users that don't care about DVB
support.
> Is it possible that dvb_module_probe and dvb_module_release are not
> exported? (Or that there are two corresponding different exported
> symbol names that pvrusb2 should be using instead?)
No.
Arnd
That doesn't seem right. The pvrusb2 module should reference that
symbol like any other. There is no special treatment of it within
pvrusb2 - so why is that requiring special treatment here?
Is it possible that dvb_module_probe and dvb_module_release are not
exported? (Or that there are two corresponding different exported
symbol names that pvrusb2 should be using instead?)
-Mike
On Tue, 17 Jan 2023, Arnd Bergmann wrote:
> From: Arnd Bergmann <[email protected]>
>
> Now that DVB_CORE can be a loadable module, pvrusb2 can run into
> a link error:
>
> ld.lld: error: undefined symbol: dvb_module_probe
> >>> referenced by pvrusb2-devattr.c
> >>> drivers/media/usb/pvrusb2/pvrusb2-devattr.o:(pvr2_lgdt3306a_attach) in archive vmlinux.a
> ld.lld: error: undefined symbol: dvb_module_release
> >>> referenced by pvrusb2-devattr.c
> >>> drivers/media/usb/pvrusb2/pvrusb2-devattr.o:(pvr2_dual_fe_attach) in archive vmlinux.a
>
> Refine the Kconfig dependencies to avoid this case.
>
> Fixes: 7655c342dbc4 ("media: Kconfig: Make DVB_CORE=m possible when MEDIA_SUPPORT=y")
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> drivers/media/usb/pvrusb2/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/media/usb/pvrusb2/Kconfig b/drivers/media/usb/pvrusb2/Kconfig
> index f2b64e49c5a2..e02a25d2d029 100644
> --- a/drivers/media/usb/pvrusb2/Kconfig
> +++ b/drivers/media/usb/pvrusb2/Kconfig
> @@ -37,6 +37,7 @@ config VIDEO_PVRUSB2_DVB
> bool "pvrusb2 ATSC/DVB support"
> default y
> depends on VIDEO_PVRUSB2 && DVB_CORE
> + depends on VIDEO_PVRUSB2=m || DVB_CORE=y
> select DVB_LGDT330X if MEDIA_SUBDRV_AUTOSELECT
> select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT
> select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
>