Am 31.10.24 um 21:43 schrieb Mario Limonciello:
On 10/31/2024 15:39, Armin Wolf wrote:
Am 31.10.24 um 05:09 schrieb Mario Limonciello:
As support for multiple simultaneous platform handers is introduced
it's
important they have at least the balanced profile in common.
This will be used as a fallback in case setting the profile across
one of the
handlers happens to fail.
Do we actually need this patch anymore now that we have the "custom"
platform profile?
If setting the platform profile fails for some handlers, then we
simply display the current
platform profile as "custom".
Yes; it's still needed because 'balanced' is used as the fallback of
something failed. If you fail to write to a handler it gets you back
to a known place for all GPUs.
Now I suppose it's up for discussion if that's really the right thing
to do.
Maybe because of custom we don't even need that.
If I have 3 profile handlers in
low-power
balanced
balanced
IE I'm already in 'custom'.
If I try to write performance and the first two succeed but the third
fails what's better:
performance
performance
balanced
Or
balanced
balanced
balanced
I think the first is better, as we cannot really guarantee that setting "balanced" for all handlers
will always work.
Thanks,
Armin Wolf
Thanks,
Armin Wolf
Tested-by: Matthew Schwartz <matthew.schwartz@xxxxxxxxx>
Suggested-by: Hans de Goede <hdegoede@xxxxxxxxxx>
Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx>
---
drivers/acpi/platform_profile.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/acpi/platform_profile.c b/drivers/acpi/
platform_profile.c
index b70ceb11947d0..57c66d7dbf827 100644
--- a/drivers/acpi/platform_profile.c
+++ b/drivers/acpi/platform_profile.c
@@ -164,6 +164,10 @@ int platform_profile_register(struct
platform_profile_handler *pprof)
pr_err("platform_profile: handler is invalid\n");
return -EINVAL;
}
+ if (!test_bit(PLATFORM_PROFILE_BALANCED, pprof->choices)) {
+ pr_err("platform_profile: handler does not support balanced
profile\n");
+ return -EINVAL;
+ }
if (!pprof->dev) {
pr_err("platform_profile: handler device is not set\n");
return -EINVAL;