diff mbox series

[v3,13/22] ACPI: platform_profile: Require handlers to support balanced profile

Message ID 20241031040952.109057-14-mario.limonciello@amd.com (mailing list archive)
State Changes Requested, archived
Headers show
Series Add support for binding ACPI platform profile to multiple drivers | expand

Commit Message

Mario Limonciello Oct. 31, 2024, 4:09 a.m. UTC
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.

Tested-by: Matthew Schwartz <matthew.schwartz@linux.dev>
Suggested-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 drivers/acpi/platform_profile.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Armin Wolf Oct. 31, 2024, 8:39 p.m. UTC | #1
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".

Thanks,
Armin Wolf

> Tested-by: Matthew Schwartz <matthew.schwartz@linux.dev>
> Suggested-by: Hans de Goede <hdegoede@redhat.com>
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
>   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;
Mario Limonciello Oct. 31, 2024, 8:43 p.m. UTC | #2
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


> 
> Thanks,
> Armin Wolf
> 
>> Tested-by: Matthew Schwartz <matthew.schwartz@linux.dev>
>> Suggested-by: Hans de Goede <hdegoede@redhat.com>
>> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
>> ---
>>   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;
Armin Wolf Oct. 31, 2024, 9:01 p.m. UTC | #3
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@linux.dev>
>>> Suggested-by: Hans de Goede <hdegoede@redhat.com>
>>> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
>>> ---
>>>   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;
>
diff mbox series

Patch

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;