public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] accel/ivpu: Add missing MODULE_FIRMWARE metadata
@ 2024-07-05 11:14 Alexander F. Lent
  2024-07-08  7:42 ` Jacek Lawrynowicz
  0 siblings, 1 reply; 2+ messages in thread
From: Alexander F. Lent @ 2024-07-05 11:14 UTC (permalink / raw)
  To: Alexander F. Lent, Jacek Lawrynowicz, Stanislaw Gruszka,
	Oded Gabbay, Jeffrey Hugo, Daniel Vetter, Andrzej Kacprowski,
	Krystian Pradzynski
  Cc: dri-devel, linux-kernel

Modules that load firmware from various paths at runtime must declare
those paths at compile time, via the MODULE_FIRMWARE macro, so that the
firmware paths are included in the module's metadata.

The accel/ivpu driver loaded firmware but lacked this metadata,
preventing dracut from correctly locating firmware files.

Fixes: 9ab43e95f922 ("accel/ivpu: Switch to generation based FW names")
Fixes: 02d5b0aacd05 ("accel/ivpu: Implement firmware parsing and booting")
Signed-off-by: Alexander F. Lent <lx@xanderlent.com>
---
 drivers/accel/ivpu/ivpu_fw.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/accel/ivpu/ivpu_fw.c b/drivers/accel/ivpu/ivpu_fw.c
index 1457300828bf..51792a00b7e3 100644
--- a/drivers/accel/ivpu/ivpu_fw.c
+++ b/drivers/accel/ivpu/ivpu_fw.c
@@ -48,16 +48,26 @@ static char *ivpu_firmware;
 module_param_named_unsafe(firmware, ivpu_firmware, charp, 0644);
 MODULE_PARM_DESC(firmware, "NPU firmware binary in /lib/firmware/..");
 
+#define IVPU_FW_PATH_37XX_BIN		"vpu_37xx.bin"
+#define IVPU_FW_PATH_37XX_V0_BIN	"intel/vpu/vpu_37xx_v0.0.bin"
+#define IVPU_FW_PATH_40XX_BIN		"vpu_40xx.bin"
+#define IVPU_FW_PATH_40XX_V0_BIN	"intel/vpu/vpu_40xx_v0.0.bin"
+
 static struct {
 	int gen;
 	const char *name;
 } fw_names[] = {
-	{ IVPU_HW_37XX, "vpu_37xx.bin" },
-	{ IVPU_HW_37XX, "intel/vpu/vpu_37xx_v0.0.bin" },
-	{ IVPU_HW_40XX, "vpu_40xx.bin" },
-	{ IVPU_HW_40XX, "intel/vpu/vpu_40xx_v0.0.bin" },
+	{ IVPU_HW_37XX, IVPU_FW_PATH_37XX_BIN },
+	{ IVPU_HW_37XX, IVPU_FW_PATH_37XX_V0_BIN },
+	{ IVPU_HW_40XX, IVPU_FW_PATH_40XX_BIN },
+	{ IVPU_HW_40XX, IVPU_FW_PATH_40XX_V0_BIN },
 };
 
+MODULE_FIRMWARE(IVPU_FW_PATH_37XX_BIN);
+MODULE_FIRMWARE(IVPU_FW_PATH_37XX_V0_BIN);
+MODULE_FIRMWARE(IVPU_FW_PATH_40XX_BIN);
+MODULE_FIRMWARE(IVPU_FW_PATH_40XX_V0_BIN);
+
 static int ivpu_fw_request(struct ivpu_device *vdev)
 {
 	int ret = -ENOENT;

---
base-commit: 22a40d14b572deb80c0648557f4bd502d7e83826
change-id: 20240704-fix-ivpu-firmware-metadata-3d02bd60768d

Best regards,
-- 
Alexander F. Lent <lx@xanderlent.com>


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

* Re: [PATCH] accel/ivpu: Add missing MODULE_FIRMWARE metadata
  2024-07-05 11:14 [PATCH] accel/ivpu: Add missing MODULE_FIRMWARE metadata Alexander F. Lent
@ 2024-07-08  7:42 ` Jacek Lawrynowicz
  0 siblings, 0 replies; 2+ messages in thread
From: Jacek Lawrynowicz @ 2024-07-08  7:42 UTC (permalink / raw)
  To: Alexander F. Lent, Stanislaw Gruszka, Oded Gabbay, Jeffrey Hugo,
	Daniel Vetter, Andrzej Kacprowski, Krystian Pradzynski
  Cc: dri-devel, linux-kernel

Hi, thanks for the commit.

On 05.07.2024 13:14, Alexander F. Lent wrote:
> Modules that load firmware from various paths at runtime must declare
> those paths at compile time, via the MODULE_FIRMWARE macro, so that the
> firmware paths are included in the module's metadata.
> 
> The accel/ivpu driver loaded firmware but lacked this metadata,
> preventing dracut from correctly locating firmware files.
> 
> Fixes: 9ab43e95f922 ("accel/ivpu: Switch to generation based FW names")
> Fixes: 02d5b0aacd05 ("accel/ivpu: Implement firmware parsing and booting")
> Signed-off-by: Alexander F. Lent <lx@xanderlent.com>
> ---
>  drivers/accel/ivpu/ivpu_fw.c | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/accel/ivpu/ivpu_fw.c b/drivers/accel/ivpu/ivpu_fw.c
> index 1457300828bf..51792a00b7e3 100644
> --- a/drivers/accel/ivpu/ivpu_fw.c
> +++ b/drivers/accel/ivpu/ivpu_fw.c
> @@ -48,16 +48,26 @@ static char *ivpu_firmware;
>  module_param_named_unsafe(firmware, ivpu_firmware, charp, 0644);
>  MODULE_PARM_DESC(firmware, "NPU firmware binary in /lib/firmware/..");
>  
> +#define IVPU_FW_PATH_37XX_BIN		"vpu_37xx.bin"
> +#define IVPU_FW_PATH_37XX_V0_BIN	"intel/vpu/vpu_37xx_v0.0.bin"
> +#define IVPU_FW_PATH_40XX_BIN		"vpu_40xx.bin"
> +#define IVPU_FW_PATH_40XX_V0_BIN	"intel/vpu/vpu_40xx_v0.0.bin"
> +
>  static struct {
>  	int gen;
>  	const char *name;
>  } fw_names[] = {
> -	{ IVPU_HW_37XX, "vpu_37xx.bin" },
> -	{ IVPU_HW_37XX, "intel/vpu/vpu_37xx_v0.0.bin" },
> -	{ IVPU_HW_40XX, "vpu_40xx.bin" },
> -	{ IVPU_HW_40XX, "intel/vpu/vpu_40xx_v0.0.bin" },
> +	{ IVPU_HW_37XX, IVPU_FW_PATH_37XX_BIN },
> +	{ IVPU_HW_37XX, IVPU_FW_PATH_37XX_V0_BIN },
> +	{ IVPU_HW_40XX, IVPU_FW_PATH_40XX_BIN },
> +	{ IVPU_HW_40XX, IVPU_FW_PATH_40XX_V0_BIN },
>  };
>  
> +MODULE_FIRMWARE(IVPU_FW_PATH_37XX_BIN);
> +MODULE_FIRMWARE(IVPU_FW_PATH_37XX_V0_BIN);
> +MODULE_FIRMWARE(IVPU_FW_PATH_40XX_BIN);
> +MODULE_FIRMWARE(IVPU_FW_PATH_40XX_V0_BIN);
Include only V0 variants, FW names without version are used for development and they wont be included in any distribution.
I would also skip macros and just use literal strings as macros add a lot of lines that don't increase readability.

Regards,
Jacek

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

end of thread, other threads:[~2024-07-08  7:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-05 11:14 [PATCH] accel/ivpu: Add missing MODULE_FIRMWARE metadata Alexander F. Lent
2024-07-08  7:42 ` Jacek Lawrynowicz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox