Linux Power Management development
 help / color / mirror / Atom feed
From: srinivas pandruvada <srinivas.pandruvada@linux.intel.com>
To: verazimmerman1987 <verazimmerman1987@proton.me>,
	"rafael@kernel.org" <rafael@kernel.org>
Cc: "daniel.lezcano@kernel.org" <daniel.lezcano@kernel.org>,
	 "rui.zhang@intel.com"	 <rui.zhang@intel.com>,
	"superm1@kernel.org" <superm1@kernel.org>,
	 "lsanche@lyndeno.ca"	 <lsanche@lyndeno.ca>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	 "linux-acpi@vger.kernel.org"	 <linux-acpi@vger.kernel.org>,
	"platform-driver-x86@vger.kernel.org"	
	<platform-driver-x86@vger.kernel.org>
Subject: Re: platform_profile: power-saver lost on Panther Lake when SoC Power Slider and dell-pc are both bound (low-power vs quiet)
Date: Fri, 30 Oct 2026 09:58:39 -0700	[thread overview]
Message-ID: <e98e2aeef6414b4159509ecdee78c5347b516d9a.camel@linux.intel.com> (raw)
In-Reply-To: <UPfoGdnS1R04q8uekSMTyes9PbDuvsGeBE42zHmsjD2xIdfPYx7ejdcpZhrxWFq6uwoMvClHTuHbrwaCh3yxD0Rw7OarNABC4dZsDra44mk=@proton.me>

[-- Attachment #1: Type: text/plain, Size: 2097 bytes --]

Hi Vera,

Please test the attached patch.

I need with first and last name with email address to add Reported-by
and Tested-by.

Thanks,
Srinivas

On Fri, 2026-10-16 at 17:10 +0000, verazimmerman1987 wrote:
> Hi,
> 
> On a Dell XPS 14 (2026, Panther Lake, Core Ultra X7 358H) two
> platform
> profile handlers are registered, and their choices have no common
> low-power option, so the legacy /sys/firmware/acpi/platform_profile
> interface exposes only "balanced performance". As a result
> power-profiles-daemon cannot select a low-power firmware mode in
> power-saver.
> 
> Handlers:
> 
>   platform-profile-0  name: SoC Power Slider
>                       choices: low-power balanced performance
>   platform-profile-1  name: dell-pc
>                       choices: cool quiet balanced performance
> 
>   /sys/firmware/acpi/platform_profile_choices: balanced performance
> 
> Effect: power-saver in power-profiles-daemon leaves both handlers at
> "balanced". The Dell firmware stays in its "optimized" mode, so
> thermald --adaptive keeps applying the optimized DTT table (PL1
> 19-25 W) instead of the quiet/cool tables (PL1 15-19 W, lower skin
> temperature targets). Setting the handlers individually
> (dell-pc=quiet, SoC slider=low-power) works and thermald picks the
> "quiet" target, but the legacy file then reports "custom" and
> power-profiles-daemon falls back to "balanced", so there is no
> consistent way to use it.
> 
> This looks like the same class of problem as amd-pmf + asus-wmi,
> which was solved by adding "quiet" as a hidden choice in amd-pmf
> (commit 44e94fece517, "platform/x86/amd: pmf: Add 'quiet' to hidden
> choices"). Would a similar hidden "quiet" (and perhaps "cool") choice
> for the Intel SoC Power Slider, mapped to its low-power setting, be
> acceptable? I'm happy to test patches.
> 
> System:
>   Kernel: 7.2.9-arch1-1
>   DMI: Dell Inc. XPS 14 DA14260, BIOS 1.11.0
>   power-profiles-daemon: 0.30-1
>   thermald: 2:2.5.13-1
> 
> Thanks,
> Vera

[-- Attachment #2: 0001-thermal-intel-int340x-Add-quiet-to-hidden-choices-of.patch --]
[-- Type: text/x-patch, Size: 4142 bytes --]

From 4c8bf94d4fa7d808ee9ebd45d5388a12b8cbe577 Mon Sep 17 00:00:00 2001
From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date: Fri, 30 Oct 2026 09:48:37 -0700
Subject: [PATCH] thermal: intel: int340x: Add 'quiet' to hidden choices of SoC
 power slider

On Panther Lake systems, the SoC Power Slider registers a platform
profile handler alongside the vendor platform profile driver. The two
handlers share no low-power choice, so the legacy
/sys/firmware/acpi/platform_profile interface, which only exposes the
intersection of all handlers' choices, offers only "balanced
performance".

For example, on ASUS GU606AW (also reported on GU606AX):

  SoC Power Slider: low-power balanced performance
  asus-wmi:         quiet balanced performance

and on Dell XPS 14 (2026, Core Ultra X7 358H):

  SoC Power Slider: low-power balanced performance
  dell-pc:          cool quiet balanced performance

As a result, the Quiet mode can't be selected through asusctl or the Fn
key on ASUS systems. power-profiles-daemon can't select a low-power
firmware mode in power-saver either.

Follow the same approach as commit 44e94fece517 ("platform/x86/amd: pmf:
Add 'quiet' to hidden choices") and add 'quiet' as a hidden choice that
maps to the same slider value as 'low-power'. With this, the legacy
choices become "quiet balanced performance" on both systems.

Unlike amd-pmf, this driver derives the current profile from the
hardware slider value. So remember the last requested profile, so that
'quiet' is reported back. Otherwise the legacy interface would show
"custom".

Fixes: 0d50f4d6ec5a ("thermal: intel: int340x: Add support for power slider")
Closes: https://github.com/OpenGamingCollective/asusctl/issues/387
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 .../processor_thermal_soc_slider.c            | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/thermal/intel/int340x_thermal/processor_thermal_soc_slider.c b/drivers/thermal/intel/int340x_thermal/processor_thermal_soc_slider.c
index 91f291627132..daa26ff4723c 100644
--- a/drivers/thermal/intel/int340x_thermal/processor_thermal_soc_slider.c
+++ b/drivers/thermal/intel/int340x_thermal/processor_thermal_soc_slider.c
@@ -132,11 +132,18 @@ static const struct kernel_param_ops slider_offset_ops = {
 module_param_cb(slider_offset, &slider_offset_ops, NULL, 0644);
 MODULE_PARM_DESC(slider_offset, "Set slider offset");
 
+/*
+ * Last profile requested via platform profile. Used to report back "quiet"
+ * hidden choice, which maps to the same slider value as "low-power".
+ */
+static enum platform_profile_option slider_cur_profile = PLATFORM_PROFILE_BALANCED;
+
 /* Convert from platform power profile option to SoC slider value */
 static int convert_profile_to_power_slider(enum platform_profile_option profile)
 {
 	switch (profile) {
 	case PLATFORM_PROFILE_LOW_POWER:
+	case PLATFORM_PROFILE_QUIET:
 		return slider_values[SOC_POWER_SLIDER_POWERSAVE];
 	case PLATFORM_PROFILE_BALANCED:
 		return slider_values[SOC_POWER_SLIDER_BALANCE];
@@ -216,6 +223,7 @@ static int power_slider_platform_profile_set(struct device *dev,
 		return slider;
 
 	set_soc_power_profile(proc_priv, slider);
+	slider_cur_profile = profile;
 
 	return 0;
 }
@@ -238,6 +246,9 @@ static int power_slider_platform_profile_get(struct device *dev,
 	if (ret < 0)
 		return ret;
 
+	if (ret == PLATFORM_PROFILE_LOW_POWER && slider_cur_profile == PLATFORM_PROFILE_QUIET)
+		ret = PLATFORM_PROFILE_QUIET;
+
 	*profile = ret;
 
 	return 0;
@@ -252,8 +263,16 @@ static int power_slider_platform_profile_probe(void *drvdata, unsigned long *cho
 	return 0;
 }
 
+static int power_slider_platform_profile_hidden_choices(void *drvdata, unsigned long *choices)
+{
+	set_bit(PLATFORM_PROFILE_QUIET, choices);
+
+	return 0;
+}
+
 static const struct platform_profile_ops power_slider_platform_profile_ops = {
 	.probe = power_slider_platform_profile_probe,
+	.hidden_choices = power_slider_platform_profile_hidden_choices,
 	.profile_get = power_slider_platform_profile_get,
 	.profile_set = power_slider_platform_profile_set,
 };
-- 
2.56.0


      parent reply	other threads:[~2026-10-30 16:58 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-16 17:10 platform_profile: power-saver lost on Panther Lake when SoC Power Slider and dell-pc are both bound (low-power vs quiet) verazimmerman1987
2026-10-19 12:21 ` Lyndon Sanche
2026-10-19 21:35   ` verazimmerman1987
2026-10-30 16:58 ` srinivas pandruvada [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e98e2aeef6414b4159509ecdee78c5347b516d9a.camel@linux.intel.com \
    --to=srinivas.pandruvada@linux.intel.com \
    --cc=daniel.lezcano@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=lsanche@lyndeno.ca \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=rui.zhang@intel.com \
    --cc=superm1@kernel.org \
    --cc=verazimmerman1987@proton.me \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox