Message ID | 20241218184433.1930532-1-l.stach@pengutronix.de (mailing list archive) |
---|---|
State | Handled Elsewhere, archived |
Headers | show |
Series | pmdomain: core: add dummy release function to genpd device | expand |
Hello Lucas, On Wed, 18 Dec 2024 19:44:33 +0100 Lucas Stach <l.stach@pengutronix.de> wrote: > The genpd device, which is really only used as a handle to lookup > OPP, but not even registered to the device core otherwise and thus > lifetime linked to the genpd struct it is contained in, is missing > a release function. After b8f7bbd1f4ec ("pmdomain: core: Add > missing put_device()") the device will be cleaned up going through > the driver core device_release() function, which will warn when no > release callback is present for the device. Add a dummy release > function to shut up the warning. > > Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Thanks for the very quick response! Luca
On Wed, 18 Dec 2024 at 19:44, Lucas Stach <l.stach@pengutronix.de> wrote: > > The genpd device, which is really only used as a handle to lookup > OPP, but not even registered to the device core otherwise and thus > lifetime linked to the genpd struct it is contained in, is missing > a release function. After b8f7bbd1f4ec ("pmdomain: core: Add > missing put_device()") the device will be cleaned up going through > the driver core device_release() function, which will warn when no > release callback is present for the device. Add a dummy release > function to shut up the warning. > > Signed-off-by: Lucas Stach <l.stach@pengutronix.de> > --- > It's a bit unfortunate that the genpd even needs to have this > not-really-a-device just for the sake of the OPP lookup. Right. Although, I have patches in the pipe that will make use of it that isn't limited to the use for OPP. > --- > drivers/pmdomain/core.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c > index bb11f467dc78..83659d79e07d 100644 > --- a/drivers/pmdomain/core.c > +++ b/drivers/pmdomain/core.c > @@ -2142,6 +2142,11 @@ static int genpd_set_default_power_state(struct generic_pm_domain *genpd) > return 0; > } > > +static void genpd_release_opp_dev(struct device *dev) The above said, would you mind changing the name to "genpd_provider_release". Or something along those lines. > +{ > + /* nothing to be done here */ > +} > + > static int genpd_alloc_data(struct generic_pm_domain *genpd) > { > struct genpd_governor_data *gd = NULL; > @@ -2173,6 +2178,7 @@ static int genpd_alloc_data(struct generic_pm_domain *genpd) > > genpd->gd = gd; > device_initialize(&genpd->dev); > + genpd->dev.release = genpd_release_opp_dev; > > if (!genpd_is_dev_name_fw(genpd)) { > dev_set_name(&genpd->dev, "%s", genpd->name); > -- > 2.47.1 > Kind regards Uffe
On Thu, 19 Dec 2024 at 15:40, Ulf Hansson <ulf.hansson@linaro.org> wrote: > > On Wed, 18 Dec 2024 at 19:44, Lucas Stach <l.stach@pengutronix.de> wrote: > > > > The genpd device, which is really only used as a handle to lookup > > OPP, but not even registered to the device core otherwise and thus > > lifetime linked to the genpd struct it is contained in, is missing > > a release function. After b8f7bbd1f4ec ("pmdomain: core: Add > > missing put_device()") the device will be cleaned up going through > > the driver core device_release() function, which will warn when no > > release callback is present for the device. Add a dummy release > > function to shut up the warning. > > > > Signed-off-by: Lucas Stach <l.stach@pengutronix.de> > > --- > > It's a bit unfortunate that the genpd even needs to have this > > not-really-a-device just for the sake of the OPP lookup. > > Right. Although, I have patches in the pipe that will make use of it > that isn't limited to the use for OPP. > > > --- > > drivers/pmdomain/core.c | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c > > index bb11f467dc78..83659d79e07d 100644 > > --- a/drivers/pmdomain/core.c > > +++ b/drivers/pmdomain/core.c > > @@ -2142,6 +2142,11 @@ static int genpd_set_default_power_state(struct generic_pm_domain *genpd) > > return 0; > > } > > > > +static void genpd_release_opp_dev(struct device *dev) > > The above said, would you mind changing the name to > "genpd_provider_release". Or something along those lines. > Well, it's kind of trivial so I just amended the patch when applying. Thanks for fixing this! Applied for fixes and by adding a stable tag. Kind rergards Uffe
diff --git a/drivers/pmdomain/core.c b/drivers/pmdomain/core.c index bb11f467dc78..83659d79e07d 100644 --- a/drivers/pmdomain/core.c +++ b/drivers/pmdomain/core.c @@ -2142,6 +2142,11 @@ static int genpd_set_default_power_state(struct generic_pm_domain *genpd) return 0; } +static void genpd_release_opp_dev(struct device *dev) +{ + /* nothing to be done here */ +} + static int genpd_alloc_data(struct generic_pm_domain *genpd) { struct genpd_governor_data *gd = NULL; @@ -2173,6 +2178,7 @@ static int genpd_alloc_data(struct generic_pm_domain *genpd) genpd->gd = gd; device_initialize(&genpd->dev); + genpd->dev.release = genpd_release_opp_dev; if (!genpd_is_dev_name_fw(genpd)) { dev_set_name(&genpd->dev, "%s", genpd->name);
The genpd device, which is really only used as a handle to lookup OPP, but not even registered to the device core otherwise and thus lifetime linked to the genpd struct it is contained in, is missing a release function. After b8f7bbd1f4ec ("pmdomain: core: Add missing put_device()") the device will be cleaned up going through the driver core device_release() function, which will warn when no release callback is present for the device. Add a dummy release function to shut up the warning. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> --- It's a bit unfortunate that the genpd even needs to have this not-really-a-device just for the sake of the OPP lookup. --- drivers/pmdomain/core.c | 6 ++++++ 1 file changed, 6 insertions(+)