On Wed, Oct 28, 2026 at 4:36 PM Ian Rogers <[email protected]> wrote: > > On Wed, Oct 28, 2026 at 4:39 AM Rafael J. Wysocki (Intel) > <[email protected]> wrote: > > > > On Tue, Oct 27, 2026 at 11:39 PM Ian Rogers <[email protected]> wrote: > > > > > > Export cpufreq_dbs_data_release() and set .kobj_type.release statically > > > in the ondemand and conservative governors so their gov_attr_set > > > kobjects have a valid release callback statically initialized, matching > > > cpufreq_governor_dbs. Remove the redundant runtime assignment in > > > cpufreq_dbs_governor_init(). > > > > > > This prepares for annotating struct kobj_type::release with > > > __must_init. > > > > > > Signed-off-by: Ian Rogers <[email protected]> > > > > Do you want stuff to be picked up by maintainers, or do you want to > > route it yourself? > > Hi Rafael, > > Just a quick note: I agree with Zhongqiu's feedback and the commit > message needs a fix. > > Regarding merging the patches, the issue with maintainers picking up > fixes is that the series will break the clang/llvm build without them. > So the maintainers need to either merge the patches (and the series be > rebased on top of them) or merge the series as a unit. Perhaps since > the patches align, merge conflicts won't happen, so maintainers > merging and landing the series is okay. I don't have the experience to > know.
I'd expect the driver core to pick up the series as a whole then, so please feel free to add Acked-by: Rafael J. Wysocki (Intel) <[email protected]> # cpufreq to the next version of this patch. Thanks! > > > --- > > > drivers/cpufreq/cpufreq_conservative.c | 5 ++++- > > > drivers/cpufreq/cpufreq_governor.c | 4 ++-- > > > drivers/cpufreq/cpufreq_governor.h | 1 + > > > drivers/cpufreq/cpufreq_ondemand.c | 5 ++++- > > > 4 files changed, 11 insertions(+), 4 deletions(-) > > > > > > diff --git a/drivers/cpufreq/cpufreq_conservative.c > > > b/drivers/cpufreq/cpufreq_conservative.c > > > index 02bfd46543e9..146a2353b1a2 100644 > > > --- a/drivers/cpufreq/cpufreq_conservative.c > > > +++ b/drivers/cpufreq/cpufreq_conservative.c > > > @@ -318,7 +318,10 @@ static void cs_limits(struct cpufreq_policy *policy) > > > > > > static struct dbs_governor cs_governor = { > > > .gov = CPUFREQ_DBS_GOVERNOR_INITIALIZER("conservative"), > > > - .kobj_type = { .default_groups = cs_groups }, > > > + .kobj_type = { > > > + .release = cpufreq_dbs_data_release, > > > + .default_groups = cs_groups, > > > + }, > > > .gov_dbs_update = cs_dbs_update, > > > .alloc = cs_alloc, > > > .free = cs_free, > > > diff --git a/drivers/cpufreq/cpufreq_governor.c > > > b/drivers/cpufreq/cpufreq_governor.c > > > index f3bd3dbe7c41..f8b5aca09b6b 100644 > > > --- a/drivers/cpufreq/cpufreq_governor.c > > > +++ b/drivers/cpufreq/cpufreq_governor.c > > > @@ -419,7 +419,7 @@ static void free_policy_dbs_info(struct > > > policy_dbs_info *policy_dbs, > > > gov->free(policy_dbs); > > > } > > > > > > -static void cpufreq_dbs_data_release(struct kobject *kobj) > > > +void cpufreq_dbs_data_release(struct kobject *kobj) > > > { > > > struct dbs_data *dbs_data = to_dbs_data(to_gov_attr_set(kobj)); > > > struct dbs_governor *gov = dbs_data->gov; > > > @@ -427,6 +427,7 @@ static void cpufreq_dbs_data_release(struct kobject > > > *kobj) > > > gov->exit(dbs_data); > > > kfree(dbs_data); > > > } > > > +EXPORT_SYMBOL_GPL(cpufreq_dbs_data_release); > > > > > > int cpufreq_dbs_governor_init(struct cpufreq_policy *policy) > > > { > > > @@ -488,7 +489,6 @@ int cpufreq_dbs_governor_init(struct cpufreq_policy > > > *policy) > > > policy->governor_data = policy_dbs; > > > > > > gov->kobj_type.sysfs_ops = &governor_sysfs_ops; > > > - gov->kobj_type.release = cpufreq_dbs_data_release; > > > ret = kobject_init_and_add(&dbs_data->attr_set.kobj, > > > &gov->kobj_type, > > > get_governor_parent_kobj(policy), > > > "%s", gov->gov.name); > > > diff --git a/drivers/cpufreq/cpufreq_governor.h > > > b/drivers/cpufreq/cpufreq_governor.h > > > index 806d8fb4dff1..1026712bb79b 100644 > > > --- a/drivers/cpufreq/cpufreq_governor.h > > > +++ b/drivers/cpufreq/cpufreq_governor.h > > > @@ -150,6 +150,7 @@ static inline struct dbs_governor > > > *dbs_governor_of(struct cpufreq_policy *policy > > > } > > > > > > /* Governor callback routines */ > > > +void cpufreq_dbs_data_release(struct kobject *kobj); > > > int cpufreq_dbs_governor_init(struct cpufreq_policy *policy); > > > void cpufreq_dbs_governor_exit(struct cpufreq_policy *policy); > > > int cpufreq_dbs_governor_start(struct cpufreq_policy *policy); > > > diff --git a/drivers/cpufreq/cpufreq_ondemand.c > > > b/drivers/cpufreq/cpufreq_ondemand.c > > > index 9942dbb38dae..7386d043c665 100644 > > > --- a/drivers/cpufreq/cpufreq_ondemand.c > > > +++ b/drivers/cpufreq/cpufreq_ondemand.c > > > @@ -374,7 +374,10 @@ static struct od_ops od_ops = { > > > > > > static struct dbs_governor od_dbs_gov = { > > > .gov = CPUFREQ_DBS_GOVERNOR_INITIALIZER("ondemand"), > > > - .kobj_type = { .default_groups = od_groups }, > > > + .kobj_type = { > > > + .release = cpufreq_dbs_data_release, > > > + .default_groups = od_groups, > > > + }, > > > .gov_dbs_update = od_dbs_update, > > > .alloc = od_alloc, > > > .free = od_free, > > > -- > > > 2.56.0.313.g2479322e68-goog > > > > > > >
