lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CFD27662-0044-4AF3-8E66-65229324CECF@gmail.com>
Date: Sun, 16 Nov 2025 11:01:13 -0800
From: "Derek J. Clark" <derekjohn.clark@...il.com>
To: Armin Wolf <W_Armin@....de>,
 Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>,
 Len Brown <lenb@...nel.org>, "Rafael J . Wysocki" <rafael@...nel.org>,
 Jonathan Corbet <corbet@....net>
CC: Mario Limonciello <superm1@...nel.org>, Zhixin Zhang <zhangzx36@...ovo.com>,
 Mia Shao <shaohz1@...ovo.com>, Mark Pearson <mpearson-lenovo@...ebb.ca>,
 "Pierre-Loup A . Griffais" <pgriffais@...vesoftware.com>,
 Kurt Borja <kuurtb@...il.com>, platform-driver-x86@...r.kernel.org,
 linux-doc@...r.kernel.org, linux-kernel@...r.kernel.org,
 linux-acpi@...r.kernel.org
Subject: Re: [PATCH v3 1/3] acpi: platform_profile - Add max-power profile option

On November 16, 2025 8:13:17 AM PST, Armin Wolf <W_Armin@....de> wrote:
>Am 13.11.25 um 22:26 schrieb Derek J. Clark:
>
>> Some devices, namely Lenovo Legion devices, have an "extreme" mode where
>> power draw is at the maximum limit of the cooling hardware. Add a new
>> "max-power" platform profile to properly reflect this operating mode.
>> 
>> Reviewed-by: Mario Limonciello (AMD) <superm1@...nel.org>
>> Acked-by: Rafael J. Wysocki (Intel) <rafael@...nel.org>
>> Signed-off-by: Derek J. Clark <derekjohn.clark@...il.com>
>> ---
>>   Documentation/ABI/testing/sysfs-class-platform-profile | 2 ++
>>   drivers/acpi/platform_profile.c                        | 1 +
>>   include/linux/platform_profile.h                       | 1 +
>>   3 files changed, 4 insertions(+)
>> 
>> diff --git a/Documentation/ABI/testing/sysfs-class-platform-profile b/Documentation/ABI/testing/sysfs-class-platform-profile
>> index dc72adfb830a..fcab26894ec3 100644
>> --- a/Documentation/ABI/testing/sysfs-class-platform-profile
>> +++ b/Documentation/ABI/testing/sysfs-class-platform-profile
>> @@ -23,6 +23,8 @@ Description:	This file contains a space-separated list of profiles supported
>>   					power consumption with a slight bias
>>   					towards performance
>>   		performance		High performance operation
>> +		max-power		Higher performance operation that may exceed
>> +					internal battery draw limits when on AC power
>
>I am not sure if it is a good idea to allow platform_profile_cycle() to cycle into this
>new max-power profile. The system could encounter a brownout if it is currently operating
>on battery power when selecting max-power.
>
>Maybe we should prevent platform_profile_cylce() from selecting max-power?

At least for Lenovo devices unplugging AC will automatically throttle the ppt values to roughly equivalent to performance. It will look at a different WMI data block for the values when switched, so there's no risk for cycling in this case. This seems like smart hardware design, but we've certainly seen bad hardware design so the concern is warranted. Perhaps it is worth visiting if another vendor implements it differently? That being said, what you're describing would match up with how the physical profile selection button works, so it would align with consumer expectation. I have no strong feelings either way, but I'm a little concerned about meeting the merge window as this series fixes a pretty disruptive bug affecting 6.17 users.

Regards,
- Derek

>Other than that:
>Reviewed-by: Armin Wolf <W_Armin@....de>
>
>>   		custom			Driver defined custom profile
>>   		====================	========================================
>>   diff --git a/drivers/acpi/platform_profile.c b/drivers/acpi/platform_profile.c
>> index b43f4459a4f6..aa1dce05121b 100644
>> --- a/drivers/acpi/platform_profile.c
>> +++ b/drivers/acpi/platform_profile.c
>> @@ -37,6 +37,7 @@ static const char * const profile_names[] = {
>>   	[PLATFORM_PROFILE_BALANCED] = "balanced",
>>   	[PLATFORM_PROFILE_BALANCED_PERFORMANCE] = "balanced-performance",
>>   	[PLATFORM_PROFILE_PERFORMANCE] = "performance",
>> +	[PLATFORM_PROFILE_MAX_POWER] = "max-power",
>>   	[PLATFORM_PROFILE_CUSTOM] = "custom",
>>   };
>>   static_assert(ARRAY_SIZE(profile_names) == PLATFORM_PROFILE_LAST);
>> diff --git a/include/linux/platform_profile.h b/include/linux/platform_profile.h
>> index a299225ab92e..855b28340e95 100644
>> --- a/include/linux/platform_profile.h
>> +++ b/include/linux/platform_profile.h
>> @@ -24,6 +24,7 @@ enum platform_profile_option {
>>   	PLATFORM_PROFILE_BALANCED,
>>   	PLATFORM_PROFILE_BALANCED_PERFORMANCE,
>>   	PLATFORM_PROFILE_PERFORMANCE,
>> +	PLATFORM_PROFILE_MAX_POWER,
>>   	PLATFORM_PROFILE_CUSTOM,
>>   	PLATFORM_PROFILE_LAST, /*must always be last */
>>   };


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ