On Wed, Sep 11, 2024 at 10:04:30AM +0100, shiju.jose@xxxxxxxxxx wrote: > +/** > + * edac_dev_feature_init - Init a RAS feature > + * @parent: client device. > + * @dev_data: pointer to the edac_dev_data structure, which contains > + * client device specific info. > + * @feat: pointer to struct edac_dev_feature. > + * @attr_groups: pointer to attribute group's container. > + * > + * Returns number of scrub features attribute groups on success, Not "scrub" - this is an interface initializing a generic feature. > + * error otherwise. > + */ > +static int edac_dev_feat_init(struct device *parent, > + struct edac_dev_data *dev_data, > + const struct edac_dev_feature *ras_feat, > + const struct attribute_group **attr_groups) > +{ > + int num; > + > + switch (ras_feat->ft_type) { > + case RAS_FEAT_SCRUB: > + dev_data->scrub_ops = ras_feat->scrub_ops; > + dev_data->private = ras_feat->ctx; > + return 1; > + case RAS_FEAT_ECS: > + num = ras_feat->ecs_info.num_media_frus; > + dev_data->ecs_ops = ras_feat->ecs_ops; > + dev_data->private = ras_feat->ctx; > + return num; > + case RAS_FEAT_PPR: > + dev_data->ppr_ops = ras_feat->ppr_ops; > + dev_data->private = ras_feat->ctx; > + return 1; > + default: > + return -EINVAL; > + } > +} And why does this function even exist and has kernel-doc comments when all it does is assign a couple of values? And it gets called exactly once? Just merge its body into the call site. There you can reuse the switch-case there too. No need for too much noodling around. > diff --git a/include/linux/edac.h b/include/linux/edac.h > index b4ee8961e623..b337254cf5b8 100644 > --- a/include/linux/edac.h > +++ b/include/linux/edac.h > @@ -661,4 +661,59 @@ static inline struct dimm_info *edac_get_dimm(struct mem_ctl_info *mci, > > return mci->dimms[index]; > } > + > +/* EDAC device features */ > + > +#define EDAC_FEAT_NAME_LEN 128 > + > +/* RAS feature type */ > +enum edac_dev_feat { > + RAS_FEAT_SCRUB, > + RAS_FEAT_ECS, > + RAS_FEAT_PPR, > + RAS_FEAT_MAX I still don't know what ECS or PPR is. -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette