Message ID | 20241105153316.378-14-mario.limonciello@amd.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | Add support for binding ACPI platform profile to multiple drivers | expand |
Am 05.11.24 um 16:33 schrieb Mario Limonciello: > As multiple platform profile handlers may come and go, send a notification > to userspace each time that a platform profile handler is registered or > unregistered. > > Tested-by: Matthew Schwartz <matthew.schwartz@linux.dev> > Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca> > Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> > --- > drivers/acpi/platform_profile.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/acpi/platform_profile.c b/drivers/acpi/platform_profile.c > index 79083d0bb22e3..c9917daf683cb 100644 > --- a/drivers/acpi/platform_profile.c > +++ b/drivers/acpi/platform_profile.c > @@ -404,6 +404,7 @@ int platform_profile_register(struct platform_profile_handler *pprof) > if (IS_ERR(pprof->class_dev)) > return PTR_ERR(pprof->class_dev); > dev_set_drvdata(pprof->class_dev, pprof); > + sysfs_notify(acpi_kobj, NULL, "platform_profile"); > > cur_profile = pprof; > return 0; > @@ -419,7 +420,9 @@ int platform_profile_remove(struct platform_profile_handler *pprof) > { > guard(mutex)(&profile_lock); > > - sysfs_remove_group(acpi_kobj, &platform_profile_group); When do we remove platform_profile_group now? Thanks, Armin Wolf > + cur_profile = NULL; > + > + sysfs_notify(acpi_kobj, NULL, "platform_profile"); > > device_destroy(&platform_profile_class, MKDEV(0, pprof->minor)); >
On 11/6/2024 13:40, Armin Wolf wrote: > Am 05.11.24 um 16:33 schrieb Mario Limonciello: > >> As multiple platform profile handlers may come and go, send a >> notification >> to userspace each time that a platform profile handler is registered or >> unregistered. >> >> Tested-by: Matthew Schwartz <matthew.schwartz@linux.dev> >> Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca> >> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> >> --- >> drivers/acpi/platform_profile.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/acpi/platform_profile.c b/drivers/acpi/ >> platform_profile.c >> index 79083d0bb22e3..c9917daf683cb 100644 >> --- a/drivers/acpi/platform_profile.c >> +++ b/drivers/acpi/platform_profile.c >> @@ -404,6 +404,7 @@ int platform_profile_register(struct >> platform_profile_handler *pprof) >> if (IS_ERR(pprof->class_dev)) >> return PTR_ERR(pprof->class_dev); >> dev_set_drvdata(pprof->class_dev, pprof); >> + sysfs_notify(acpi_kobj, NULL, "platform_profile"); >> >> cur_profile = pprof; >> return 0; >> @@ -419,7 +420,9 @@ int platform_profile_remove(struct >> platform_profile_handler *pprof) >> { >> guard(mutex)(&profile_lock); >> >> - sysfs_remove_group(acpi_kobj, &platform_profile_group); > > When do we remove platform_profile_group now? > When incorporating your other feedback I noticed this was still there and it will be removed for the next revision. The idea will be as soon as a class registers the legacy interface is created and will stay for the lifetime of the boot. If all drivers are unloaded it will return -EINVAL until a new driver is loaded. > Thanks, > Armin Wolf > >> + cur_profile = NULL; >> + >> + sysfs_notify(acpi_kobj, NULL, "platform_profile"); >> >> device_destroy(&platform_profile_class, MKDEV(0, pprof->minor)); >>
Am 06.11.24 um 20:44 schrieb Mario Limonciello: > On 11/6/2024 13:40, Armin Wolf wrote: >> Am 05.11.24 um 16:33 schrieb Mario Limonciello: >> >>> As multiple platform profile handlers may come and go, send a >>> notification >>> to userspace each time that a platform profile handler is registered or >>> unregistered. >>> >>> Tested-by: Matthew Schwartz <matthew.schwartz@linux.dev> >>> Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca> >>> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> >>> --- >>> drivers/acpi/platform_profile.c | 5 ++++- >>> 1 file changed, 4 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/acpi/platform_profile.c b/drivers/acpi/ >>> platform_profile.c >>> index 79083d0bb22e3..c9917daf683cb 100644 >>> --- a/drivers/acpi/platform_profile.c >>> +++ b/drivers/acpi/platform_profile.c >>> @@ -404,6 +404,7 @@ int platform_profile_register(struct >>> platform_profile_handler *pprof) >>> if (IS_ERR(pprof->class_dev)) >>> return PTR_ERR(pprof->class_dev); >>> dev_set_drvdata(pprof->class_dev, pprof); >>> + sysfs_notify(acpi_kobj, NULL, "platform_profile"); >>> >>> cur_profile = pprof; >>> return 0; >>> @@ -419,7 +420,9 @@ int platform_profile_remove(struct >>> platform_profile_handler *pprof) >>> { >>> guard(mutex)(&profile_lock); >>> >>> - sysfs_remove_group(acpi_kobj, &platform_profile_group); >> >> When do we remove platform_profile_group now? >> > > When incorporating your other feedback I noticed this was still there > and it will be removed for the next revision. > > The idea will be as soon as a class registers the legacy interface is > created and will stay for the lifetime of the boot. > > If all drivers are unloaded it will return -EINVAL until a new driver > is loaded. And what happens when the platform profile core itself is unloaded? Thanks, Armin Wolf > >> Thanks, >> Armin Wolf >> >>> + cur_profile = NULL; >>> + >>> + sysfs_notify(acpi_kobj, NULL, "platform_profile"); >>> >>> device_destroy(&platform_profile_class, MKDEV(0, pprof->minor)); >>> > >
diff --git a/drivers/acpi/platform_profile.c b/drivers/acpi/platform_profile.c index 79083d0bb22e3..c9917daf683cb 100644 --- a/drivers/acpi/platform_profile.c +++ b/drivers/acpi/platform_profile.c @@ -404,6 +404,7 @@ int platform_profile_register(struct platform_profile_handler *pprof) if (IS_ERR(pprof->class_dev)) return PTR_ERR(pprof->class_dev); dev_set_drvdata(pprof->class_dev, pprof); + sysfs_notify(acpi_kobj, NULL, "platform_profile"); cur_profile = pprof; return 0; @@ -419,7 +420,9 @@ int platform_profile_remove(struct platform_profile_handler *pprof) { guard(mutex)(&profile_lock); - sysfs_remove_group(acpi_kobj, &platform_profile_group); + cur_profile = NULL; + + sysfs_notify(acpi_kobj, NULL, "platform_profile"); device_destroy(&platform_profile_class, MKDEV(0, pprof->minor));