On Thu, 17 Sep 2020 17:45:27 -0700 Jacob Keller wrote: > Sections of device flash may contain settings or device identifying > information. When performing a flash update, it is generally expected > that these settings and identifiers are not overwritten. > > However, it may sometimes be useful to allow overwriting these fields > when performing a flash update. Some examples include, 1) customizing > the initial device config on first programming, such as overwriting > default device identifying information, or 2) reverting a device > configuration to known good state provided in the new firmware image, or > 3) in case it is suspected that current firmware logic for managing the > preservation of fields during an update is broken. > > Although some devices are able to completely separate these types of > settings and fields into separate components, this is not true for all > hardware. > > To support controlling this behavior, a new > DEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK is defined. This is an > nla_bitfield32 which will define what subset of fields in a component > should be overwritten during an update. > > If no bits are specified, or of the overwrite mask is not provided, then > an update should not overwrite anything, and should maintain the > settings and identifiers as they are in the previous image. > > If the overwrite mask has the DEVLINK_FLASH_OVERWRITE_SETTINGS bit set, > then the device should be configured to overwrite any of the settings in > the requested component with settings found in the provided image. > > Similarly, if the DEVLINK_FLASH_OVERWRITE_IDENTIFIERS bit is set, the > device should be configured to overwrite any device identifiers in the > requested component with the identifiers from the image. > > Multiple overwrite modes may be combined to indicate that a combination > of the set of fields that should be overwritten. > > Drivers which support the new overwrite mask must set the > DEVLINK_SUPPORT_FLASH_UPDATE_OVERWRITE_MASK in the > supported_flash_update_params field of their devlink_ops. > > Signed-off-by: Jacob Keller <jacob.e.kel...@intel.com>
Reviewed-by: Jakub Kicinski <k...@kernel.org> Thanks!