.min_burst = _min_burst,                                      \
        }
 
+enum {
+       /* device supports reload operations */
+       DEVLINK_F_RELOAD = 1UL << 0,
+};
+
 struct devlink_ops {
        /**
         * @supported_flash_update_params:
 {
        return devlink_alloc_ns(ops, priv_size, &init_net, dev);
 }
+void devlink_set_features(struct devlink *devlink, u64 features);
 void devlink_register(struct devlink *devlink);
 void devlink_unregister(struct devlink *devlink);
 void devlink_reload_enable(struct devlink *devlink);
 
        struct list_head trap_group_list;
        struct list_head trap_policer_list;
        const struct devlink_ops *ops;
+       u64 features;
        struct xarray snapshot_ids;
        struct devlink_dev_stats stats;
        struct device *dev;
        struct net *curr_net;
        int err;
 
-       if (!devlink->reload_enabled)
+       if (!devlink->reload_enabled || !(devlink->features & DEVLINK_F_RELOAD))
                return -EOPNOTSUPP;
 
        memcpy(remote_reload_stats, devlink->stats.remote_reload_stats,
        return true;
 }
 
+/**
+ *     devlink_set_features - Set devlink supported features
+ *
+ *     @devlink: devlink
+ *     @features: devlink support features
+ *
+ *     This interface allows us to set reload ops separatelly from
+ *     the devlink_alloc.
+ */
+void devlink_set_features(struct devlink *devlink, u64 features)
+{
+       ASSERT_DEVLINK_NOT_REGISTERED(devlink);
+
+       WARN_ON(features & DEVLINK_F_RELOAD &&
+               !devlink_reload_supported(devlink->ops));
+       devlink->features = features;
+}
+EXPORT_SYMBOL_GPL(devlink_set_features);
+
 /**
  *     devlink_alloc_ns - Allocate new devlink instance resources
  *     in specific namespace
        wait_for_completion(&devlink->comp);
 
        mutex_lock(&devlink_mutex);
-       WARN_ON(devlink_reload_supported(devlink->ops) &&
+       WARN_ON(devlink->features & DEVLINK_F_RELOAD &&
                devlink->reload_enabled);
        devlink_notify_unregister(devlink);
        xa_clear_mark(&devlinks, devlink->index, DEVLINK_REGISTERED);