Re: [PATCH v5 1/4] firmware_loader: expand firmware error codes with up-to-date error
From: Russ Weight
Date: Thu Feb 19 2026 - 18:41:04 EST
On Sun, Jan 11, 2026 at 04:05:44PM +0100, Marco Felsch wrote:
> Add FW_UPLOAD_ERR_DUPLICATE to allow drivers to inform the firmware_loader
> framework that the update is not required. This can be the case if the
> user provided firmware matches the current running firmware.
>
> Sync lib/test_firmware.c accordingly.
>
> Reviewed-by: Russ Weight <russ.weight@xxxxxxxxx>
> Reviewed-by: Luis Chamberlain <mcgrof@xxxxxxxxxx>
> Signed-off-by: Marco Felsch <m.felsch@xxxxxxxxxxxxxx>
> ---
> drivers/base/firmware_loader/sysfs_upload.c | 1 +
> include/linux/firmware.h | 2 ++
> lib/test_firmware.c | 1 +
> 3 files changed, 4 insertions(+)
>
> diff --git a/drivers/base/firmware_loader/sysfs_upload.c b/drivers/base/firmware_loader/sysfs_upload.c
> index c3797b93c5f5a2ecf2ae34707893c89eb7773154..9e93070b2c24179986b868a24b09cf051776c644 100644
> --- a/drivers/base/firmware_loader/sysfs_upload.c
> +++ b/drivers/base/firmware_loader/sysfs_upload.c
> @@ -28,6 +28,7 @@ static const char * const fw_upload_err_str[] = {
> [FW_UPLOAD_ERR_RW_ERROR] = "read-write-error",
> [FW_UPLOAD_ERR_WEAROUT] = "flash-wearout",
> [FW_UPLOAD_ERR_FW_INVALID] = "firmware-invalid",
> + [FW_UPLOAD_ERR_DUPLICATE] = "firmware-duplicate",
> };
Hi Marco,
There is a corresponding change that should be made to
lib/test_firmware.c. You can look at the recent change for
FW_UPLOAD_ERR_FW_INVALID as an example.
- Russ
>
> static const char *fw_upload_progress(struct device *dev,
> diff --git a/include/linux/firmware.h b/include/linux/firmware.h
> index aae1b85ffc10e20e9c3c9b6009d26b83efd8cb24..fe7797be4c08cd62cdad9617b8f70095d5e0af2f 100644
> --- a/include/linux/firmware.h
> +++ b/include/linux/firmware.h
> @@ -29,6 +29,7 @@ struct firmware {
> * @FW_UPLOAD_ERR_RW_ERROR: read or write to HW failed, see kernel log
> * @FW_UPLOAD_ERR_WEAROUT: FLASH device is approaching wear-out, wait & retry
> * @FW_UPLOAD_ERR_FW_INVALID: invalid firmware file
> + * @FW_UPLOAD_ERR_DUPLICATE: firmware is already up to date (duplicate)
> * @FW_UPLOAD_ERR_MAX: Maximum error code marker
> */
> enum fw_upload_err {
> @@ -41,6 +42,7 @@ enum fw_upload_err {
> FW_UPLOAD_ERR_RW_ERROR,
> FW_UPLOAD_ERR_WEAROUT,
> FW_UPLOAD_ERR_FW_INVALID,
> + FW_UPLOAD_ERR_DUPLICATE,
> FW_UPLOAD_ERR_MAX
> };
>
> diff --git a/lib/test_firmware.c b/lib/test_firmware.c
> index be4f93124901e5faac41f48a66dabe6da56be0ca..952ec1cb03102911dbea9abd648ab9d9e0112a46 100644
> --- a/lib/test_firmware.c
> +++ b/lib/test_firmware.c
> @@ -1134,6 +1134,7 @@ static const char * const fw_upload_err_str[] = {
> [FW_UPLOAD_ERR_RW_ERROR] = "read-write-error",
> [FW_UPLOAD_ERR_WEAROUT] = "flash-wearout",
> [FW_UPLOAD_ERR_FW_INVALID] = "firmware-invalid",
> + [FW_UPLOAD_ERR_DUPLICATE] = "firmware-duplicate",
> };
>
> static void upload_err_inject_error(struct test_firmware_upload *tst,
>
> --
> 2.47.3
>