enum devlink_command cmd,
                                        const char *status_msg,
                                        const char *component,
-                                       unsigned long done, unsigned long total)
+                                       unsigned long done,
+                                       unsigned long total,
+                                       unsigned long timeout)
 {
        void *hdr;
 
        if (nla_put_u64_64bit(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL,
                              total, DEVLINK_ATTR_PAD))
                goto nla_put_failure;
+       if (nla_put_u64_64bit(msg, DEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT,
+                             timeout, DEVLINK_ATTR_PAD))
+               goto nla_put_failure;
 
 out:
        genlmsg_end(msg, hdr);
                                          const char *status_msg,
                                          const char *component,
                                          unsigned long done,
-                                         unsigned long total)
+                                         unsigned long total,
+                                         unsigned long timeout)
 {
        struct sk_buff *msg;
        int err;
                return;
 
        err = devlink_nl_flash_update_fill(msg, devlink, cmd, status_msg,
-                                          component, done, total);
+                                          component, done, total, timeout);
        if (err)
                goto out_free_msg;
 
 {
        __devlink_flash_update_notify(devlink,
                                      DEVLINK_CMD_FLASH_UPDATE,
-                                     NULL, NULL, 0, 0);
+                                     NULL, NULL, 0, 0, 0);
 }
 EXPORT_SYMBOL_GPL(devlink_flash_update_begin_notify);
 
 {
        __devlink_flash_update_notify(devlink,
                                      DEVLINK_CMD_FLASH_UPDATE_END,
-                                     NULL, NULL, 0, 0);
+                                     NULL, NULL, 0, 0, 0);
 }
 EXPORT_SYMBOL_GPL(devlink_flash_update_end_notify);
 
 {
        __devlink_flash_update_notify(devlink,
                                      DEVLINK_CMD_FLASH_UPDATE_STATUS,
-                                     status_msg, component, done, total);
+                                     status_msg, component, done, total, 0);
 }
 EXPORT_SYMBOL_GPL(devlink_flash_update_status_notify);
 
+void devlink_flash_update_timeout_notify(struct devlink *devlink,
+                                        const char *status_msg,
+                                        const char *component,
+                                        unsigned long timeout)
+{
+       __devlink_flash_update_notify(devlink,
+                                     DEVLINK_CMD_FLASH_UPDATE_STATUS,
+                                     status_msg, component, 0, 0, timeout);
+}
+EXPORT_SYMBOL_GPL(devlink_flash_update_timeout_notify);
+
 static int devlink_nl_cmd_flash_update(struct sk_buff *skb,
                                       struct genl_info *info)
 {