diff mbox series

cxl: fix FWCTL dependency

Message ID 20250310135119.4168933-1-arnd@kernel.org
State New
Headers show
Series cxl: fix FWCTL dependency | expand

Commit Message

Arnd Bergmann March 10, 2025, 1:51 p.m. UTC
From: Arnd Bergmann <arnd@arndb.de>

The 'FWCTL' subsystem is selected by CXL_FEATURES, which is a 'bool' symbol
with a dependency on CXL_PCI, but referenced by the cxl_core.ko.
When cxl_core is built-in, but the cxl_pci.ko driver is a loadable mdoule,
this results in a link failure:

ld.lld-21: error: undefined symbol: _fwctl_alloc_device
>>> referenced by features.c:695 (/home/arnd/arm-soc/drivers/cxl/core/features.c:695)
ld.lld-21: error: undefined symbol: fwctl_register
>>> referenced by features.c:699 (/home/arnd/arm-soc/drivers/cxl/core/features.c:699)
ld.lld-21: error: undefined symbol: fwctl_unregister
>>> referenced by features.c:676 (/home/arnd/arm-soc/drivers/cxl/core/features.c:676)

Move the 'select' into the symbol that controls the core module instead.

Fixes: a53a6004e7a5 ("cxl: Add FWCTL support to CXL")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/cxl/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Dave Jiang March 10, 2025, 3:24 p.m. UTC | #1
On 3/10/25 6:51 AM, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The 'FWCTL' subsystem is selected by CXL_FEATURES, which is a 'bool' symbol
> with a dependency on CXL_PCI, but referenced by the cxl_core.ko.
> When cxl_core is built-in, but the cxl_pci.ko driver is a loadable mdoule,
> this results in a link failure:
> 
> ld.lld-21: error: undefined symbol: _fwctl_alloc_device
>>>> referenced by features.c:695 (/home/arnd/arm-soc/drivers/cxl/core/features.c:695)
> ld.lld-21: error: undefined symbol: fwctl_register
>>>> referenced by features.c:699 (/home/arnd/arm-soc/drivers/cxl/core/features.c:699)
> ld.lld-21: error: undefined symbol: fwctl_unregister
>>>> referenced by features.c:676 (/home/arnd/arm-soc/drivers/cxl/core/features.c:676)
> 
> Move the 'select' into the symbol that controls the core module instead.
> 
> Fixes: a53a6004e7a5 ("cxl: Add FWCTL support to CXL")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Dave Jiang <dave.jiang@intel.com>

Thanks for the fix Arnd. Jason can you please append this fix to your latest branch? Thanks!

> ---
>  drivers/cxl/Kconfig | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/cxl/Kconfig b/drivers/cxl/Kconfig
> index ed49e7e7e5bc..cf1ba673b8c2 100644
> --- a/drivers/cxl/Kconfig
> +++ b/drivers/cxl/Kconfig
> @@ -7,6 +7,7 @@ menuconfig CXL_BUS
>  	select PCI_DOE
>  	select FIRMWARE_TABLE
>  	select NUMA_KEEP_MEMINFO if NUMA_MEMBLKS
> +	select FWCTL if CXL_FEATURES
>  	help
>  	  CXL is a bus that is electrically compatible with PCI Express, but
>  	  layers three protocols on that signalling (CXL.io, CXL.cache, and
> @@ -105,7 +106,6 @@ config CXL_MEM
>  config CXL_FEATURES
>  	bool "CXL: Features"
>  	depends on CXL_PCI
> -	select FWCTL
>  	help
>  	  Enable support for CXL Features. A CXL device that includes a mailbox
>  	  supports commands that allows listing, getting, and setting of
Dan Williams March 10, 2025, 6:27 p.m. UTC | #2
Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The 'FWCTL' subsystem is selected by CXL_FEATURES, which is a 'bool' symbol
> with a dependency on CXL_PCI, but referenced by the cxl_core.ko.
> When cxl_core is built-in, but the cxl_pci.ko driver is a loadable mdoule,
> this results in a link failure:
> 
> ld.lld-21: error: undefined symbol: _fwctl_alloc_device
> >>> referenced by features.c:695 (/home/arnd/arm-soc/drivers/cxl/core/features.c:695)
> ld.lld-21: error: undefined symbol: fwctl_register
> >>> referenced by features.c:699 (/home/arnd/arm-soc/drivers/cxl/core/features.c:699)
> ld.lld-21: error: undefined symbol: fwctl_unregister
> >>> referenced by features.c:676 (/home/arnd/arm-soc/drivers/cxl/core/features.c:676)
> 
> Move the 'select' into the symbol that controls the core module instead.
> 
> Fixes: a53a6004e7a5 ("cxl: Add FWCTL support to CXL")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  drivers/cxl/Kconfig | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/cxl/Kconfig b/drivers/cxl/Kconfig
> index ed49e7e7e5bc..cf1ba673b8c2 100644
> --- a/drivers/cxl/Kconfig
> +++ b/drivers/cxl/Kconfig
> @@ -7,6 +7,7 @@ menuconfig CXL_BUS
>  	select PCI_DOE
>  	select FIRMWARE_TABLE
>  	select NUMA_KEEP_MEMINFO if NUMA_MEMBLKS
> +	select FWCTL if CXL_FEATURES

Looks good,

Reviewed-by: Dan Williams <dan.j.williams@intel.com>

...I tried to find a way to keep it local to the CXL_FEATURES symbol,
but it really is an optional core feature that needs to have the select
from the core module like you have it.

>  	help
>  	  CXL is a bus that is electrically compatible with PCI Express, but
>  	  layers three protocols on that signalling (CXL.io, CXL.cache, and
> @@ -105,7 +106,6 @@ config CXL_MEM
>  config CXL_FEATURES
>  	bool "CXL: Features"
>  	depends on CXL_PCI

Drive-by observation for an additional cleanup that this CXL_PCI
dependency is bogus. If it were real then there would be a circular
dependency between cxl_pci.ko and cxl_core.ko. As is this is just noise
in the Kconfig file since the dependency solver would already be
screaming if this was a true dependency.
Jason Gunthorpe March 17, 2025, 5:42 p.m. UTC | #3
On Mon, Mar 10, 2025 at 08:24:44AM -0700, Dave Jiang wrote:
> 
> 
> On 3/10/25 6:51 AM, Arnd Bergmann wrote:
> > From: Arnd Bergmann <arnd@arndb.de>
> > 
> > The 'FWCTL' subsystem is selected by CXL_FEATURES, which is a 'bool' symbol
> > with a dependency on CXL_PCI, but referenced by the cxl_core.ko.
> > When cxl_core is built-in, but the cxl_pci.ko driver is a loadable mdoule,
> > this results in a link failure:
> > 
> > ld.lld-21: error: undefined symbol: _fwctl_alloc_device
> >>>> referenced by features.c:695 (/home/arnd/arm-soc/drivers/cxl/core/features.c:695)
> > ld.lld-21: error: undefined symbol: fwctl_register
> >>>> referenced by features.c:699 (/home/arnd/arm-soc/drivers/cxl/core/features.c:699)
> > ld.lld-21: error: undefined symbol: fwctl_unregister
> >>>> referenced by features.c:676 (/home/arnd/arm-soc/drivers/cxl/core/features.c:676)
> > 
> > Move the 'select' into the symbol that controls the core module instead.
> > 
> > Fixes: a53a6004e7a5 ("cxl: Add FWCTL support to CXL")
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> 
> Acked-by: Dave Jiang <dave.jiang@intel.com>
> 
> Thanks for the fix Arnd. Jason can you please append this fix to your latest branch? Thanks!

I folded it into the Fixes commit thanks

Jason
diff mbox series

Patch

diff --git a/drivers/cxl/Kconfig b/drivers/cxl/Kconfig
index ed49e7e7e5bc..cf1ba673b8c2 100644
--- a/drivers/cxl/Kconfig
+++ b/drivers/cxl/Kconfig
@@ -7,6 +7,7 @@  menuconfig CXL_BUS
 	select PCI_DOE
 	select FIRMWARE_TABLE
 	select NUMA_KEEP_MEMINFO if NUMA_MEMBLKS
+	select FWCTL if CXL_FEATURES
 	help
 	  CXL is a bus that is electrically compatible with PCI Express, but
 	  layers three protocols on that signalling (CXL.io, CXL.cache, and
@@ -105,7 +106,6 @@  config CXL_MEM
 config CXL_FEATURES
 	bool "CXL: Features"
 	depends on CXL_PCI
-	select FWCTL
 	help
 	  Enable support for CXL Features. A CXL device that includes a mailbox
 	  supports commands that allows listing, getting, and setting of