When upstreaming the gamezone WMI drivers the "extreme" mode was matched
to performance and performance was matched to balanced-performance, but
only when extreme mode was fully enabled. Otherwise performance was
matched to performance. This has led to quite a bit of confusion with
users not understanding why the LED color indicating the platform
profile doesn't match their expectations. To solve this, replace the
confusing convention with the new "extreme" profile.
Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com>
---
.../wmi/devices/lenovo-wmi-gamezone.rst | 10 +++-------
drivers/platform/x86/lenovo/wmi-gamezone.c | 18 +++++-------------
2 files changed, 8 insertions(+), 20 deletions(-)
diff --git a/Documentation/wmi/devices/lenovo-wmi-gamezone.rst b/Documentation/wmi/devices/lenovo-wmi-gamezone.rst
index 997263e51a7d..6c908f44a08e 100644
--- a/Documentation/wmi/devices/lenovo-wmi-gamezone.rst
+++ b/Documentation/wmi/devices/lenovo-wmi-gamezone.rst
@@ -24,18 +24,14 @@ current platform profile when it changes.
The following platform profiles are supported:
- low-power
- balanced
- - balanced-performance
- performance
+ - extreme
- custom
-Balanced-Performance
+Extreme
~~~~~~~~~~~~~~~~~~~~
Some newer Lenovo "Gaming Series" laptops have an "Extreme Mode" profile
-enabled in their BIOS. For these devices, the performance platform profile
-corresponds to the BIOS Extreme Mode, while the balanced-performance
-platform profile corresponds to the BIOS Performance mode. For legacy
-devices, the performance platform profile will correspond with the BIOS
-Performance mode.
+enabled in their BIOS.
For some newer devices the "Extreme Mode" profile is incomplete in the BIOS
and setting it will cause undefined behavior. A BIOS bug quirk table is
diff --git a/drivers/platform/x86/lenovo/wmi-gamezone.c b/drivers/platform/x86/lenovo/wmi-gamezone.c
index 0eb7fe8222f4..faabbd4657bd 100644
--- a/drivers/platform/x86/lenovo/wmi-gamezone.c
+++ b/drivers/platform/x86/lenovo/wmi-gamezone.c
@@ -171,14 +171,10 @@ static int lwmi_gz_profile_get(struct device *dev,
*profile = PLATFORM_PROFILE_BALANCED;
break;
case LWMI_GZ_THERMAL_MODE_PERFORMANCE:
- if (priv->extreme_supported) {
- *profile = PLATFORM_PROFILE_BALANCED_PERFORMANCE;
- break;
- }
*profile = PLATFORM_PROFILE_PERFORMANCE;
break;
case LWMI_GZ_THERMAL_MODE_EXTREME:
- *profile = PLATFORM_PROFILE_PERFORMANCE;
+ *profile = PLATFORM_PROFILE_EXTREME;
break;
case LWMI_GZ_THERMAL_MODE_CUSTOM:
*profile = PLATFORM_PROFILE_CUSTOM;
@@ -218,16 +214,12 @@ static int lwmi_gz_profile_set(struct device *dev,
case PLATFORM_PROFILE_BALANCED:
mode = LWMI_GZ_THERMAL_MODE_BALANCED;
break;
- case PLATFORM_PROFILE_BALANCED_PERFORMANCE:
- mode = LWMI_GZ_THERMAL_MODE_PERFORMANCE;
- break;
case PLATFORM_PROFILE_PERFORMANCE:
- if (priv->extreme_supported) {
- mode = LWMI_GZ_THERMAL_MODE_EXTREME;
- break;
- }
mode = LWMI_GZ_THERMAL_MODE_PERFORMANCE;
break;
+ case PLATFORM_PROFILE_EXTREME:
+ mode = LWMI_GZ_THERMAL_MODE_EXTREME;
+ break;
case PLATFORM_PROFILE_CUSTOM:
mode = LWMI_GZ_THERMAL_MODE_CUSTOM;
break;
@@ -338,7 +330,7 @@ static int lwmi_gz_platform_profile_probe(void *drvdata, unsigned long *choices)
priv->extreme_supported = lwmi_gz_extreme_supported(profile_support_ver);
if (priv->extreme_supported)
- set_bit(PLATFORM_PROFILE_BALANCED_PERFORMANCE, choices);
+ set_bit(PLATFORM_PROFILE_EXTREME, choices);
return 0;
}
--
2.51.1
Is 'vice' the right word for the subject?
On 10/26/25 3:12 AM, Derek J. Clark wrote:
> When upstreaming the gamezone WMI drivers the "extreme" mode was matched
> to performance and performance was matched to balanced-performance, but
> only when extreme mode was fully enabled. Otherwise performance was
> matched to performance. This has led to quite a bit of confusion with
> users not understanding why the LED color indicating the platform
> profile doesn't match their expectations. To solve this, replace the
> confusing convention with the new "extreme" profile.
Are the colors common to all devices? Maybe it would be worth adding to
the documentation the expected colors for each mode.
>
> Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com>
> ---
> .../wmi/devices/lenovo-wmi-gamezone.rst | 10 +++-------
> drivers/platform/x86/lenovo/wmi-gamezone.c | 18 +++++-------------
> 2 files changed, 8 insertions(+), 20 deletions(-)
>
> diff --git a/Documentation/wmi/devices/lenovo-wmi-gamezone.rst b/Documentation/wmi/devices/lenovo-wmi-gamezone.rst
> index 997263e51a7d..6c908f44a08e 100644
> --- a/Documentation/wmi/devices/lenovo-wmi-gamezone.rst
> +++ b/Documentation/wmi/devices/lenovo-wmi-gamezone.rst
> @@ -24,18 +24,14 @@ current platform profile when it changes.
> The following platform profiles are supported:
> - low-power
> - balanced
> - - balanced-performance
> - performance
> + - extreme
> - custom
>
> -Balanced-Performance
> +Extreme
> ~~~~~~~~~~~~~~~~~~~~
> Some newer Lenovo "Gaming Series" laptops have an "Extreme Mode" profile
> -enabled in their BIOS. For these devices, the performance platform profile
> -corresponds to the BIOS Extreme Mode, while the balanced-performance
> -platform profile corresponds to the BIOS Performance mode. For legacy
> -devices, the performance platform profile will correspond with the BIOS
> -Performance mode.
> +enabled in their BIOS.
>
> For some newer devices the "Extreme Mode" profile is incomplete in the BIOS
> and setting it will cause undefined behavior. A BIOS bug quirk table is
> diff --git a/drivers/platform/x86/lenovo/wmi-gamezone.c b/drivers/platform/x86/lenovo/wmi-gamezone.c
> index 0eb7fe8222f4..faabbd4657bd 100644
> --- a/drivers/platform/x86/lenovo/wmi-gamezone.c
> +++ b/drivers/platform/x86/lenovo/wmi-gamezone.c
> @@ -171,14 +171,10 @@ static int lwmi_gz_profile_get(struct device *dev,
> *profile = PLATFORM_PROFILE_BALANCED;
> break;
> case LWMI_GZ_THERMAL_MODE_PERFORMANCE:
> - if (priv->extreme_supported) {
> - *profile = PLATFORM_PROFILE_BALANCED_PERFORMANCE;
> - break;
> - }
> *profile = PLATFORM_PROFILE_PERFORMANCE;
> break;
> case LWMI_GZ_THERMAL_MODE_EXTREME:
> - *profile = PLATFORM_PROFILE_PERFORMANCE;
> + *profile = PLATFORM_PROFILE_EXTREME;
> break;
> case LWMI_GZ_THERMAL_MODE_CUSTOM:
> *profile = PLATFORM_PROFILE_CUSTOM;
> @@ -218,16 +214,12 @@ static int lwmi_gz_profile_set(struct device *dev,
> case PLATFORM_PROFILE_BALANCED:
> mode = LWMI_GZ_THERMAL_MODE_BALANCED;
> break;
> - case PLATFORM_PROFILE_BALANCED_PERFORMANCE:
> - mode = LWMI_GZ_THERMAL_MODE_PERFORMANCE;
> - break;
> case PLATFORM_PROFILE_PERFORMANCE:
> - if (priv->extreme_supported) {
> - mode = LWMI_GZ_THERMAL_MODE_EXTREME;
> - break;
> - }
> mode = LWMI_GZ_THERMAL_MODE_PERFORMANCE;
> break;
> + case PLATFORM_PROFILE_EXTREME:
> + mode = LWMI_GZ_THERMAL_MODE_EXTREME;
> + break;
> case PLATFORM_PROFILE_CUSTOM:
> mode = LWMI_GZ_THERMAL_MODE_CUSTOM;
> break;
> @@ -338,7 +330,7 @@ static int lwmi_gz_platform_profile_probe(void *drvdata, unsigned long *choices)
>
> priv->extreme_supported = lwmi_gz_extreme_supported(profile_support_ver);
> if (priv->extreme_supported)
> - set_bit(PLATFORM_PROFILE_BALANCED_PERFORMANCE, choices);
> + set_bit(PLATFORM_PROFILE_EXTREME, choices);
>
> return 0;
> }
On October 26, 2025 10:52:29 AM PDT, Mario Limonciello <superm1@kernel.org> wrote:
>Is 'vice' the right word for the subject?
>
Used as in rather than or as an alternative to, it has more brevity.
>On 10/26/25 3:12 AM, Derek J. Clark wrote:
>> When upstreaming the gamezone WMI drivers the "extreme" mode was matched
>> to performance and performance was matched to balanced-performance, but
>> only when extreme mode was fully enabled. Otherwise performance was
>> matched to performance. This has led to quite a bit of confusion with
>> users not understanding why the LED color indicating the platform
>> profile doesn't match their expectations. To solve this, replace the
>> confusing convention with the new "extreme" profile.
>
>Are the colors common to all devices? Maybe it would be worth adding to the documentation the expected colors for each mode.
>
I think so, based on every case I've run into. I'll need to expound a little and reword more in this section but that should be doable.
Thanks,
Derek
>>
>> Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com>
>> ---
>> .../wmi/devices/lenovo-wmi-gamezone.rst | 10 +++-------
>> drivers/platform/x86/lenovo/wmi-gamezone.c | 18 +++++-------------
>> 2 files changed, 8 insertions(+), 20 deletions(-)
>>
>> diff --git a/Documentation/wmi/devices/lenovo-wmi-gamezone.rst b/Documentation/wmi/devices/lenovo-wmi-gamezone.rst
>> index 997263e51a7d..6c908f44a08e 100644
>> --- a/Documentation/wmi/devices/lenovo-wmi-gamezone.rst
>> +++ b/Documentation/wmi/devices/lenovo-wmi-gamezone.rst
>> @@ -24,18 +24,14 @@ current platform profile when it changes.
>> The following platform profiles are supported:
>> - low-power
>> - balanced
>> - - balanced-performance
>> - performance
>> + - extreme
>> - custom
>> -Balanced-Performance
>> +Extreme
>> ~~~~~~~~~~~~~~~~~~~~
>> Some newer Lenovo "Gaming Series" laptops have an "Extreme Mode" profile
>> -enabled in their BIOS. For these devices, the performance platform profile
>> -corresponds to the BIOS Extreme Mode, while the balanced-performance
>> -platform profile corresponds to the BIOS Performance mode. For legacy
>> -devices, the performance platform profile will correspond with the BIOS
>> -Performance mode.
>> +enabled in their BIOS.
>> For some newer devices the "Extreme Mode" profile is incomplete in the BIOS
>> and setting it will cause undefined behavior. A BIOS bug quirk table is
>> diff --git a/drivers/platform/x86/lenovo/wmi-gamezone.c b/drivers/platform/x86/lenovo/wmi-gamezone.c
>> index 0eb7fe8222f4..faabbd4657bd 100644
>> --- a/drivers/platform/x86/lenovo/wmi-gamezone.c
>> +++ b/drivers/platform/x86/lenovo/wmi-gamezone.c
>> @@ -171,14 +171,10 @@ static int lwmi_gz_profile_get(struct device *dev,
>> *profile = PLATFORM_PROFILE_BALANCED;
>> break;
>> case LWMI_GZ_THERMAL_MODE_PERFORMANCE:
>> - if (priv->extreme_supported) {
>> - *profile = PLATFORM_PROFILE_BALANCED_PERFORMANCE;
>> - break;
>> - }
>> *profile = PLATFORM_PROFILE_PERFORMANCE;
>> break;
>> case LWMI_GZ_THERMAL_MODE_EXTREME:
>> - *profile = PLATFORM_PROFILE_PERFORMANCE;
>> + *profile = PLATFORM_PROFILE_EXTREME;
>> break;
>> case LWMI_GZ_THERMAL_MODE_CUSTOM:
>> *profile = PLATFORM_PROFILE_CUSTOM;
>> @@ -218,16 +214,12 @@ static int lwmi_gz_profile_set(struct device *dev,
>> case PLATFORM_PROFILE_BALANCED:
>> mode = LWMI_GZ_THERMAL_MODE_BALANCED;
>> break;
>> - case PLATFORM_PROFILE_BALANCED_PERFORMANCE:
>> - mode = LWMI_GZ_THERMAL_MODE_PERFORMANCE;
>> - break;
>> case PLATFORM_PROFILE_PERFORMANCE:
>> - if (priv->extreme_supported) {
>> - mode = LWMI_GZ_THERMAL_MODE_EXTREME;
>> - break;
>> - }
>> mode = LWMI_GZ_THERMAL_MODE_PERFORMANCE;
>> break;
>> + case PLATFORM_PROFILE_EXTREME:
>> + mode = LWMI_GZ_THERMAL_MODE_EXTREME;
>> + break;
>> case PLATFORM_PROFILE_CUSTOM:
>> mode = LWMI_GZ_THERMAL_MODE_CUSTOM;
>> break;
>> @@ -338,7 +330,7 @@ static int lwmi_gz_platform_profile_probe(void *drvdata, unsigned long *choices)
>> priv->extreme_supported = lwmi_gz_extreme_supported(profile_support_ver);
>> if (priv->extreme_supported)
>> - set_bit(PLATFORM_PROFILE_BALANCED_PERFORMANCE, choices);
>> + set_bit(PLATFORM_PROFILE_EXTREME, choices);
>> return 0;
>> }
>
© 2016 - 2026 Red Hat, Inc.