diff mbox series

pds_core: fix linking without CONFIG_DEBUG_FS

Message ID 20230501150624.3552344-1-arnd@kernel.org (mailing list archive)
State Changes Requested
Delegated to: Netdev Maintainers
Headers show
Series pds_core: fix linking without CONFIG_DEBUG_FS | expand

Checks

Context Check Description
netdev/series_format warning Single patches do not need cover letters; Target tree name not specified in the subject
netdev/tree_selection success Guessed tree name to be net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 8 this patch: 8
netdev/cc_maintainers success CCed 7 of 7 maintainers
netdev/build_clang success Errors and warnings before: 8 this patch: 8
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 8 this patch: 8
netdev/checkpatch warning WARNING: line length of 83 exceeds 80 columns
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Arnd Bergmann May 1, 2023, 3:06 p.m. UTC
From: Arnd Bergmann <arnd@arndb.de>

The debugfs.o file is only built when the fs is enabled:

main.c:(.text+0x47c): undefined reference to `pdsc_debugfs_del_dev'
main.c:(.text+0x8dc): undefined reference to `pdsc_debugfs_add_dev'
main.c:(.exit.text+0x14): undefined reference to `pdsc_debugfs_destroy'
main.c:(.init.text+0x8): undefined reference to `pdsc_debugfs_create'
dev.c:(.text+0x988): undefined reference to `pdsc_debugfs_add_ident'
core.c:(.text+0x6b0): undefined reference to `pdsc_debugfs_del_qcq'
core.c:(.text+0x998): undefined reference to `pdsc_debugfs_add_qcq'
core.c:(.text+0xf0c): undefined reference to `pdsc_debugfs_add_viftype'

Add dummy helper functions for these interfaces.

Fixes: 55435ea7729a ("pds_core: initial framework for pds_core PF driver")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/net/ethernet/amd/pds_core/core.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Simon Horman May 1, 2023, 3:41 p.m. UTC | #1
On Mon, May 01, 2023 at 05:06:14PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The debugfs.o file is only built when the fs is enabled:
> 
> main.c:(.text+0x47c): undefined reference to `pdsc_debugfs_del_dev'
> main.c:(.text+0x8dc): undefined reference to `pdsc_debugfs_add_dev'
> main.c:(.exit.text+0x14): undefined reference to `pdsc_debugfs_destroy'
> main.c:(.init.text+0x8): undefined reference to `pdsc_debugfs_create'
> dev.c:(.text+0x988): undefined reference to `pdsc_debugfs_add_ident'
> core.c:(.text+0x6b0): undefined reference to `pdsc_debugfs_del_qcq'
> core.c:(.text+0x998): undefined reference to `pdsc_debugfs_add_qcq'
> core.c:(.text+0xf0c): undefined reference to `pdsc_debugfs_add_viftype'
> 
> Add dummy helper functions for these interfaces.
> 
> Fixes: 55435ea7729a ("pds_core: initial framework for pds_core PF driver")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Thanks Arnd,

this looks good to me.

Reviewed-by: Simon Horman <simon.horman@corigine.com>


While exercising this I noticed that building pds_core fails
if either CONFIG_AUXILIARY_BUS or NET_DEVLINK are not enabled.

I think the solution is for PFS_CORE to select both CONFIG_AUXILIARY_BUS
and NET_DEVLINK.

I am wondering if this is on anyone's radar.
If not I'll send a patch.
Arnd Bergmann May 1, 2023, 7:34 p.m. UTC | #2
On Mon, May 1, 2023, at 17:41, Simon Horman wrote:
> On Mon, May 01, 2023 at 05:06:14PM +0200, Arnd Bergmann wrote:
>
> While exercising this I noticed that building pds_core fails
> if either CONFIG_AUXILIARY_BUS or NET_DEVLINK are not enabled.
>
> I think the solution is for PFS_CORE to select both CONFIG_AUXILIARY_BUS
> and NET_DEVLINK.

Makes sense. I just double-checked the other uses of these symbols
to see if they should be 'select' or 'depends on', and you are
right that selecting them is the correct solution.

There are two instances of 'depends on CONFIG_AUXILIARY_BUS'
in drivers/reset that both should be 'select' as well, since
this is not a user-visible symbol.

       Arnd
Jakub Kicinski May 1, 2023, 10:35 p.m. UTC | #3
On Mon,  1 May 2023 17:06:14 +0200 Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The debugfs.o file is only built when the fs is enabled:
> 
> main.c:(.text+0x47c): undefined reference to `pdsc_debugfs_del_dev'
> main.c:(.text+0x8dc): undefined reference to `pdsc_debugfs_add_dev'
> main.c:(.exit.text+0x14): undefined reference to `pdsc_debugfs_destroy'
> main.c:(.init.text+0x8): undefined reference to `pdsc_debugfs_create'
> dev.c:(.text+0x988): undefined reference to `pdsc_debugfs_add_ident'
> core.c:(.text+0x6b0): undefined reference to `pdsc_debugfs_del_qcq'
> core.c:(.text+0x998): undefined reference to `pdsc_debugfs_add_qcq'
> core.c:(.text+0xf0c): undefined reference to `pdsc_debugfs_add_viftype'
> 
> Add dummy helper functions for these interfaces.

Debugfs should wrap itself. Doesn't this work:

diff --git a/drivers/net/ethernet/amd/pds_core/Makefile b/drivers/net/ethernet/amd/pds_core/Makefile
index 0abc33ce826c..54d1d5b375ce 100644
--- a/drivers/net/ethernet/amd/pds_core/Makefile
+++ b/drivers/net/ethernet/amd/pds_core/Makefile
@@ -9,6 +9,5 @@ pds_core-y := main.o \
 	      dev.o \
 	      adminq.o \
 	      core.o \
-	      fw.o
-
-pds_core-$(CONFIG_DEBUG_FS) += debugfs.o
+	      fw.o \
+	      debugfs.o
Nelson, Shannon May 2, 2023, 4:01 a.m. UTC | #4
On 5/1/23 3:35 PM, Jakub Kicinski wrote:
> On Mon,  1 May 2023 17:06:14 +0200 Arnd Bergmann wrote:
>> From: Arnd Bergmann <arnd@arndb.de>
>>
>> The debugfs.o file is only built when the fs is enabled:
>>
>> main.c:(.text+0x47c): undefined reference to `pdsc_debugfs_del_dev'
>> main.c:(.text+0x8dc): undefined reference to `pdsc_debugfs_add_dev'
>> main.c:(.exit.text+0x14): undefined reference to `pdsc_debugfs_destroy'
>> main.c:(.init.text+0x8): undefined reference to `pdsc_debugfs_create'
>> dev.c:(.text+0x988): undefined reference to `pdsc_debugfs_add_ident'
>> core.c:(.text+0x6b0): undefined reference to `pdsc_debugfs_del_qcq'
>> core.c:(.text+0x998): undefined reference to `pdsc_debugfs_add_qcq'
>> core.c:(.text+0xf0c): undefined reference to `pdsc_debugfs_add_viftype'
>>
>> Add dummy helper functions for these interfaces.
> 
> Debugfs should wrap itself. Doesn't this work:
> 
> diff --git a/drivers/net/ethernet/amd/pds_core/Makefile b/drivers/net/ethernet/amd/pds_core/Makefile
> index 0abc33ce826c..54d1d5b375ce 100644
> --- a/drivers/net/ethernet/amd/pds_core/Makefile
> +++ b/drivers/net/ethernet/amd/pds_core/Makefile
> @@ -9,6 +9,5 @@ pds_core-y := main.o \
>                dev.o \
>                adminq.o \
>                core.o \
> -             fw.o
> -
> -pds_core-$(CONFIG_DEBUG_FS) += debugfs.o
> +             fw.o \
> +             debugfs.o

Yes, that should do it, and should have been done in the rest of the 
change that I made after Leon suggested removing the dummy functions 
that I originally had there [0].

Tomorrow when I'm back from vacation I can do a couple of follow-up 
patches for this and for the other config tags that Simon pointed out.

sln

[0] https://lore.kernel.org/netdev/20230409112645.GS14869@unreal/
diff mbox series

Patch

diff --git a/drivers/net/ethernet/amd/pds_core/core.h b/drivers/net/ethernet/amd/pds_core/core.h
index e545fafc4819..2cc430403e9c 100644
--- a/drivers/net/ethernet/amd/pds_core/core.h
+++ b/drivers/net/ethernet/amd/pds_core/core.h
@@ -261,6 +261,7 @@  int pdsc_dl_enable_validate(struct devlink *dl, u32 id,
 
 void __iomem *pdsc_map_dbpage(struct pdsc *pdsc, int page_num);
 
+#ifdef CONFIG_DEBUG_FS
 void pdsc_debugfs_create(void);
 void pdsc_debugfs_destroy(void);
 void pdsc_debugfs_add_dev(struct pdsc *pdsc);
@@ -270,6 +271,17 @@  void pdsc_debugfs_add_viftype(struct pdsc *pdsc);
 void pdsc_debugfs_add_irqs(struct pdsc *pdsc);
 void pdsc_debugfs_add_qcq(struct pdsc *pdsc, struct pdsc_qcq *qcq);
 void pdsc_debugfs_del_qcq(struct pdsc_qcq *qcq);
+#else
+static inline void pdsc_debugfs_create(void) {}
+static inline void pdsc_debugfs_destroy(void) {}
+static inline void pdsc_debugfs_add_dev(struct pdsc *pdsc) {}
+static inline void pdsc_debugfs_del_dev(struct pdsc *pdsc) {}
+static inline void pdsc_debugfs_add_ident(struct pdsc *pdsc) {}
+static inline void pdsc_debugfs_add_viftype(struct pdsc *pdsc) {}
+static inline void pdsc_debugfs_add_irqs(struct pdsc *pdsc) {}
+static inline void pdsc_debugfs_add_qcq(struct pdsc *pdsc, struct pdsc_qcq *qcq) {}
+static inline void pdsc_debugfs_del_qcq(struct pdsc_qcq *qcq) {}
+#endif
 
 int pdsc_err_to_errno(enum pds_core_status_code code);
 bool pdsc_is_fw_running(struct pdsc *pdsc);