rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] firmware_loader: make RUST_FW_LOADER_ABSTRACTIONS select FW_LOADER
@ 2025-11-05  8:03 Alexandre Courbot
  2025-11-05  8:03 ` [PATCH v2 1/3] " Alexandre Courbot
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Alexandre Courbot @ 2025-11-05  8:03 UTC (permalink / raw)
  To: Luis Chamberlain, Russ Weight, Danilo Krummrich,
	Greg Kroah-Hartman, Rafael J. Wysocki, Alice Ryhl, David Airlie,
	Simona Vetter, Andrew Lunn, Heiner Kallweit, Russell King,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Trevor Gross, FUJITA Tomonori
  Cc: linux-kernel, nouveau, dri-devel, netdev, rust-for-linux,
	Alexandre Courbot

I have noticed that build fails when doing the following:

- Start with the x86 defconfig,
- Using nconfig, enable `CONFIG_RUST` and `CONFIG_DRM_NOVA`,
- Start building.

The problem is that `CONFIG_RUST_FW_LOADER_ABSTRACTIONS` remains
unselected, despite it being a dependency of `CONFIG_NOVA_CORE`. This
seems to happen because `CONFIG_DRM_NOVA` selects `CONFIG_NOVA_CORE`.

Fix this by making `CONFIG_RUST_FW_LOADER_ABSTRACTIONS` select
`CONFIG_FW_LOADER`, and by transition make all users of
`CONFIG_RUST_FW_LOADER_ABSTRACTIONS` (so far, nova-core and net/phy)
select it as well.

`CONFIG_FW_LOADER` is more often selected than depended on, so this
seems to make sense generally speaking.

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
---
Changes in v2:
- Split into 3 patches.
- Link to v1: https://lore.kernel.org/r/20251104-b4-select-rust-fw-v1-1-afea175dba22@nvidia.com

---
Alexandre Courbot (3):
      firmware_loader: make RUST_FW_LOADER_ABSTRACTIONS select FW_LOADER
      gpu: nova-core: select RUST_FW_LOADER_ABSTRACTIONS
      net: phy: select RUST_FW_LOADER_ABSTRACTIONS

 drivers/base/firmware_loader/Kconfig | 2 +-
 drivers/gpu/nova-core/Kconfig        | 2 +-
 drivers/net/phy/Kconfig              | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
---
base-commit: 6553a8f168fb7941ae73d39eccac64f3a2b9b399
change-id: 20251104-b4-select-rust-fw-aeb1e46bcee9

Best regards,
-- 
Alexandre Courbot <acourbot@nvidia.com>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/3] firmware_loader: make RUST_FW_LOADER_ABSTRACTIONS select FW_LOADER
  2025-11-05  8:03 [PATCH v2 0/3] firmware_loader: make RUST_FW_LOADER_ABSTRACTIONS select FW_LOADER Alexandre Courbot
@ 2025-11-05  8:03 ` Alexandre Courbot
  2025-11-05 21:47   ` kernel test robot
  2025-11-06  0:23   ` Alexandre Courbot
  2025-11-05  8:03 ` [PATCH v2 2/3] gpu: nova-core: select RUST_FW_LOADER_ABSTRACTIONS Alexandre Courbot
  2025-11-05  8:03 ` [PATCH v2 3/3] net: phy: " Alexandre Courbot
  2 siblings, 2 replies; 6+ messages in thread
From: Alexandre Courbot @ 2025-11-05  8:03 UTC (permalink / raw)
  To: Luis Chamberlain, Russ Weight, Danilo Krummrich,
	Greg Kroah-Hartman, Rafael J. Wysocki, Alice Ryhl, David Airlie,
	Simona Vetter, Andrew Lunn, Heiner Kallweit, Russell King,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Trevor Gross, FUJITA Tomonori
  Cc: linux-kernel, nouveau, dri-devel, netdev, rust-for-linux,
	Alexandre Courbot

The use of firmware_loader is an implementation detail of drivers rather
than a dependency. FW_LOADER is typically selected rather than depended
on; the Rust abstractions should do the same thing.

Fixes: de6582833db0 ("rust: add firmware abstractions")
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
---
 drivers/base/firmware_loader/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/base/firmware_loader/Kconfig b/drivers/base/firmware_loader/Kconfig
index 752b9a9bea03..0e6c1343409e 100644
--- a/drivers/base/firmware_loader/Kconfig
+++ b/drivers/base/firmware_loader/Kconfig
@@ -38,7 +38,7 @@ config FW_LOADER_DEBUG
 config RUST_FW_LOADER_ABSTRACTIONS
 	bool "Rust Firmware Loader abstractions"
 	depends on RUST
-	depends on FW_LOADER=y
+	select FW_LOADER=y
 	help
 	  This enables the Rust abstractions for the firmware loader API.
 

-- 
2.51.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/3] gpu: nova-core: select RUST_FW_LOADER_ABSTRACTIONS
  2025-11-05  8:03 [PATCH v2 0/3] firmware_loader: make RUST_FW_LOADER_ABSTRACTIONS select FW_LOADER Alexandre Courbot
  2025-11-05  8:03 ` [PATCH v2 1/3] " Alexandre Courbot
@ 2025-11-05  8:03 ` Alexandre Courbot
  2025-11-05  8:03 ` [PATCH v2 3/3] net: phy: " Alexandre Courbot
  2 siblings, 0 replies; 6+ messages in thread
From: Alexandre Courbot @ 2025-11-05  8:03 UTC (permalink / raw)
  To: Luis Chamberlain, Russ Weight, Danilo Krummrich,
	Greg Kroah-Hartman, Rafael J. Wysocki, Alice Ryhl, David Airlie,
	Simona Vetter, Andrew Lunn, Heiner Kallweit, Russell King,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Trevor Gross, FUJITA Tomonori
  Cc: linux-kernel, nouveau, dri-devel, netdev, rust-for-linux,
	Alexandre Courbot

RUST_FW_LOADER_ABSTRACTIONS was depended on by NOVA_CORE, but NOVA_CORE
is selected by DRM_NOVA. This creates a situation where, if DRM_NOVA is
selected, NOVA_CORE gets enabled but not RUST_FW_LOADER_ABSTRACTIONS,
which results in a build error.

Since the firmware loader is an implementation detail of the driver, it
should be enabled along with it, so change the "depends on" to a
"select".

Fixes: 54e6baf123fd ("gpu: nova-core: add initial driver stub")
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
---
 drivers/gpu/nova-core/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/nova-core/Kconfig b/drivers/gpu/nova-core/Kconfig
index 20d3e6d0d796..527920f9c4d3 100644
--- a/drivers/gpu/nova-core/Kconfig
+++ b/drivers/gpu/nova-core/Kconfig
@@ -3,7 +3,7 @@ config NOVA_CORE
 	depends on 64BIT
 	depends on PCI
 	depends on RUST
-	depends on RUST_FW_LOADER_ABSTRACTIONS
+	select RUST_FW_LOADER_ABSTRACTIONS
 	select AUXILIARY_BUS
 	default n
 	help

-- 
2.51.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 3/3] net: phy: select RUST_FW_LOADER_ABSTRACTIONS
  2025-11-05  8:03 [PATCH v2 0/3] firmware_loader: make RUST_FW_LOADER_ABSTRACTIONS select FW_LOADER Alexandre Courbot
  2025-11-05  8:03 ` [PATCH v2 1/3] " Alexandre Courbot
  2025-11-05  8:03 ` [PATCH v2 2/3] gpu: nova-core: select RUST_FW_LOADER_ABSTRACTIONS Alexandre Courbot
@ 2025-11-05  8:03 ` Alexandre Courbot
  2 siblings, 0 replies; 6+ messages in thread
From: Alexandre Courbot @ 2025-11-05  8:03 UTC (permalink / raw)
  To: Luis Chamberlain, Russ Weight, Danilo Krummrich,
	Greg Kroah-Hartman, Rafael J. Wysocki, Alice Ryhl, David Airlie,
	Simona Vetter, Andrew Lunn, Heiner Kallweit, Russell King,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg,
	Trevor Gross, FUJITA Tomonori
  Cc: linux-kernel, nouveau, dri-devel, netdev, rust-for-linux,
	Alexandre Courbot

The use of firmware_loader is an implementations detail of the driver,
so it should be enabled along with it. The non-Rust option FW_LOADER is
typically selected rather than depended on, let's make the Rust
abstraction behave the same.

Fixes: fd3eaad826da ("net: phy: add Applied Micro QT2025 PHY driver")
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
---
 drivers/net/phy/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
index 98700d069191..d4987fc6b26c 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -132,7 +132,7 @@ config ADIN1100_PHY
 config AMCC_QT2025_PHY
 	tristate "AMCC QT2025 PHY"
 	depends on RUST_PHYLIB_ABSTRACTIONS
-	depends on RUST_FW_LOADER_ABSTRACTIONS
+	select RUST_FW_LOADER_ABSTRACTIONS
 	help
 	  Adds support for the Applied Micro Circuits Corporation QT2025 PHY.
 

-- 
2.51.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 1/3] firmware_loader: make RUST_FW_LOADER_ABSTRACTIONS select FW_LOADER
  2025-11-05  8:03 ` [PATCH v2 1/3] " Alexandre Courbot
@ 2025-11-05 21:47   ` kernel test robot
  2025-11-06  0:23   ` Alexandre Courbot
  1 sibling, 0 replies; 6+ messages in thread
From: kernel test robot @ 2025-11-05 21:47 UTC (permalink / raw)
  To: Alexandre Courbot, Luis Chamberlain, Russ Weight,
	Danilo Krummrich, Greg Kroah-Hartman, Rafael J. Wysocki,
	Alice Ryhl, David Airlie, Simona Vetter, Andrew Lunn,
	Heiner Kallweit, Russell King, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Miguel Ojeda, Alex Gaynor,
	Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin,
	Andreas Hindborg, Trevor Gross, FUJITA Tomonori
  Cc: llvm, oe-kbuild-all, netdev, linux-kernel, nouveau, dri-devel,
	rust-for-linux, Alexandre Courbot

Hi Alexandre,

kernel test robot noticed the following build errors:

[auto build test ERROR on 6553a8f168fb7941ae73d39eccac64f3a2b9b399]

url:    https://github.com/intel-lab-lkp/linux/commits/Alexandre-Courbot/firmware_loader-make-RUST_FW_LOADER_ABSTRACTIONS-select-FW_LOADER/20251105-160437
base:   6553a8f168fb7941ae73d39eccac64f3a2b9b399
patch link:    https://lore.kernel.org/r/20251105-b4-select-rust-fw-v2-1-156d9014ed3b%40nvidia.com
patch subject: [PATCH v2 1/3] firmware_loader: make RUST_FW_LOADER_ABSTRACTIONS select FW_LOADER
config: x86_64-kexec (attached as .config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251106/202511060527.knZk5HZP-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202511060527.knZk5HZP-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/base/firmware_loader/Kconfig:41: syntax error
   drivers/base/firmware_loader/Kconfig:41: invalid statement
   drivers/base/firmware_loader/Kconfig:42: invalid statement
   drivers/base/firmware_loader/Kconfig:43:warning: ignoring unsupported character '.'
   drivers/base/firmware_loader/Kconfig:43: unknown statement "This"
   make[3]: *** [scripts/kconfig/Makefile:85: oldconfig] Error 1
   make[2]: *** [Makefile:742: oldconfig] Error 2
   make[1]: *** [Makefile:248: __sub-make] Error 2
   make[1]: Target 'oldconfig' not remade because of errors.
   make: *** [Makefile:248: __sub-make] Error 2
   make: Target 'oldconfig' not remade because of errors.
--
>> drivers/base/firmware_loader/Kconfig:41: syntax error
   drivers/base/firmware_loader/Kconfig:41: invalid statement
   drivers/base/firmware_loader/Kconfig:42: invalid statement
   drivers/base/firmware_loader/Kconfig:43:warning: ignoring unsupported character '.'
   drivers/base/firmware_loader/Kconfig:43: unknown statement "This"
   make[3]: *** [scripts/kconfig/Makefile:85: olddefconfig] Error 1
   make[2]: *** [Makefile:742: olddefconfig] Error 2
   make[1]: *** [Makefile:248: __sub-make] Error 2
   make[1]: Target 'olddefconfig' not remade because of errors.
   make: *** [Makefile:248: __sub-make] Error 2
   make: Target 'olddefconfig' not remade because of errors.


vim +41 drivers/base/firmware_loader/Kconfig

     3	
     4	config FW_LOADER
     5		tristate "Firmware loading facility" if EXPERT
     6		select CRYPTO_LIB_SHA256 if FW_LOADER_DEBUG
     7		default y
     8		help
     9		  This enables the firmware loading facility in the kernel. The kernel
    10		  will first look for built-in firmware, if it has any. Next, it will
    11		  look for the requested firmware in a series of filesystem paths:
    12	
    13			o firmware_class path module parameter or kernel boot param
    14			o /lib/firmware/updates/UTS_RELEASE
    15			o /lib/firmware/updates
    16			o /lib/firmware/UTS_RELEASE
    17			o /lib/firmware
    18	
    19		  Enabling this feature only increases your kernel image by about
    20		  828 bytes, enable this option unless you are certain you don't
    21		  need firmware.
    22	
    23		  You typically want this built-in (=y) but you can also enable this
    24		  as a module, in which case the firmware_class module will be built.
    25		  You also want to be sure to enable this built-in if you are going to
    26		  enable built-in firmware (CONFIG_EXTRA_FIRMWARE).
    27	
    28	config FW_LOADER_DEBUG
    29		bool "Log filenames and checksums for loaded firmware"
    30		depends on DYNAMIC_DEBUG
    31		depends on FW_LOADER
    32		default FW_LOADER
    33		help
    34		  Select this option to use dynamic debug to log firmware filenames and
    35		  SHA256 checksums to the kernel log for each firmware file that is
    36		  loaded.
    37	
    38	config RUST_FW_LOADER_ABSTRACTIONS
    39		bool "Rust Firmware Loader abstractions"
    40		depends on RUST
  > 41		select FW_LOADER=y
    42		help
    43		  This enables the Rust abstractions for the firmware loader API.
    44	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 1/3] firmware_loader: make RUST_FW_LOADER_ABSTRACTIONS select FW_LOADER
  2025-11-05  8:03 ` [PATCH v2 1/3] " Alexandre Courbot
  2025-11-05 21:47   ` kernel test robot
@ 2025-11-06  0:23   ` Alexandre Courbot
  1 sibling, 0 replies; 6+ messages in thread
From: Alexandre Courbot @ 2025-11-06  0:23 UTC (permalink / raw)
  To: Alexandre Courbot, Luis Chamberlain, Russ Weight,
	Danilo Krummrich, Greg Kroah-Hartman, Rafael J. Wysocki,
	Alice Ryhl, David Airlie, Simona Vetter, Andrew Lunn,
	Heiner Kallweit, Russell King, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Miguel Ojeda, Alex Gaynor,
	Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin,
	Andreas Hindborg, Trevor Gross, FUJITA Tomonori
  Cc: linux-kernel, nouveau, dri-devel, netdev, rust-for-linux, Nouveau

On Wed Nov 5, 2025 at 5:03 PM JST, Alexandre Courbot wrote:
> The use of firmware_loader is an implementation detail of drivers rather
> than a dependency. FW_LOADER is typically selected rather than depended
> on; the Rust abstractions should do the same thing.
>
> Fixes: de6582833db0 ("rust: add firmware abstractions")
> Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
> ---
>  drivers/base/firmware_loader/Kconfig | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/base/firmware_loader/Kconfig b/drivers/base/firmware_loader/Kconfig
> index 752b9a9bea03..0e6c1343409e 100644
> --- a/drivers/base/firmware_loader/Kconfig
> +++ b/drivers/base/firmware_loader/Kconfig
> @@ -38,7 +38,7 @@ config FW_LOADER_DEBUG
>  config RUST_FW_LOADER_ABSTRACTIONS
>  	bool "Rust Firmware Loader abstractions"
>  	depends on RUST
> -	depends on FW_LOADER=y
> +	select FW_LOADER=y

Oops this should be `select FW_LOADER` only... respinning.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-11-06  0:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-05  8:03 [PATCH v2 0/3] firmware_loader: make RUST_FW_LOADER_ABSTRACTIONS select FW_LOADER Alexandre Courbot
2025-11-05  8:03 ` [PATCH v2 1/3] " Alexandre Courbot
2025-11-05 21:47   ` kernel test robot
2025-11-06  0:23   ` Alexandre Courbot
2025-11-05  8:03 ` [PATCH v2 2/3] gpu: nova-core: select RUST_FW_LOADER_ABSTRACTIONS Alexandre Courbot
2025-11-05  8:03 ` [PATCH v2 3/3] net: phy: " Alexandre Courbot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).