[PATCH 2/2] modules/firmware: add a new option to denote a firmware group to choose one.

Randy Dunlap rdunlap at infradead.org
Thu Jun 22 21:12:32 UTC 2023



On 4/25/23 21:29, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
> 
> This adds a tag that will go into the module info, only one firmware from
> the group given needs to be available for this driver to work. This allows
> dracut to avoid adding in firmware that aren't needed.
> 
> This just brackets a module list in the modinfo, the modules in the list
> will get entries in reversed order so the last module in the list is the
> preferred one.
> 
> The corresponding dracut code it at:
> https://github.com/dracutdevs/dracut/pull/2309
> 
> Cc: Luis Chamberlain <mcgrof at kernel.org>
> Cc: linux-modules at vger.kernel.org
> Cc: dri-devel at lists.freedesktop.org
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
>  include/linux/module.h | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
> 
> diff --git a/include/linux/module.h b/include/linux/module.h
> index f9d072a7e198..d3e7085cedd0 100644
> --- a/include/linux/module.h
> +++ b/include/linux/module.h
> @@ -306,6 +306,28 @@ extern typeof(name) __mod_##type##__##name##_device_table		\
>   */
>  #define MODULE_FIRMWARE(_firmware) MODULE_INFO(firmware, _firmware)
>  
> +/**
> + * MODULE_FIRMWARE_GROUP_ONLY_ONE - Create a need only one firmware group

                                                need-only-one

> + * @_grpname: group name
> + *
> + * This creates a group of which the driver only needs one firmware installed.
> + * This is to allow dracut to limit the number of firmwares in the initramfs.
> + * This just creates a new entry in the modinfo section, there should be one

                                                   section;

> + * of these entries bracketing the group of MODULE_INFO lines.
> + * Due to how modinfo is constructed the ordering of the modinfo means the
> + * last module info in the group will end up being the first one dracut will
> + * search for, so place the newest firmware last.
> + *
> + * ``MODULE_FIRMWARE_GROUP_ONLY_ONE("mygroup")``
> + *
> + * ``MODULE_FIRMWARE("firmwarev1")``
> + *
> + * ``MODULE_FIRMWARE("firmwarev2")``
> + *
> + * ``MODULE_FIRMWARE_GROUP_ONLY_ONE("mygroup")``
> + */
> +#define MODULE_FIRMWARE_GROUP_ONLY_ONE(_grpname) MODULE_INFO(firmware_group_only_one, _grpname)
> +
>  /**
>   * MODULE_IMPORT_NS - Set the symbol namespace for the module.
>   * @ns: symbol namespace to import the module into.

Tested-by: Randy Dunlap <rdunlap at infradead.org> # for the kernel-doc

Is this going anywhere? It was posted about 2 months ago.

thanks.
-- 
~Randy


More information about the dri-devel mailing list