mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Ahmed Yaseen <yaseen@ghoul.dev>
To: platform-driver-x86@vger.kernel.org
Cc: yaseen@ghoul.dev, corentin.chary@gmail.com, luke@ljones.dev,
	denis.benato@linux.dev, derekjohn.clark@gmail.com,
	hansg@kernel.org, ilpo.jarvinen@linux.intel.com,
	prasanth.ksr@dell.com, mpearson-lenovo@squebb.ca,
	Dell.Client.Kernel@dell.com, linux-kernel@vger.kernel.org,
	asus-linux@lists.linux.dev
Subject: [PATCH 0/2] asus-armoury: gate PPT writes on active fan curves
Date: Mon, 11 May 2026 06:19:14 +0000	[thread overview]
Message-ID: <20260511061901.907540-1-yaseen@ghoul.dev> (raw)

My first kernel patch series, posted in agreement with Denis Benato (Cc'd).

On 28 ASUS ROG laptop models flagged with requires_fan_curve in the
asus-armoury DMI power_data table, the BIOS ACPI method SPLX silently
discards Package Power Tracking (PPT) writes unless the fan mode is
set to Manual (FANM=4). FANM is set to 4 by the DEFC method when a
custom fan curve is written. Until then, the WMI DEVS call returns
success but the firmware ignores the value, so userspace sees no
effect from writes to ppt_pl1_spl, ppt_pl2_sppt, ppt_pl3_fppt,
ppt_apu_sppt or ppt_platform_sppt.

The requires_fan_curve flag has existed in the per-model power_data
entries for some time but was never read. This series wires it up:

  Patch 1: Adds the actual gate. Exports
    asus_wmi_custom_fan_curve_is_enabled() from asus-wmi so
    asus-armoury can query fan-curve state across module boundaries,
    and returns -ENODEV with a pr_warn() from the PPT write path on
    affected models when no fan curve is active.

  Patch 2: Exposes the same flag to userspace as a read-only sysfs
    attribute (requires_fan_curve) so tools like asusctl and rogcc
    can surface the prerequisite to the user before issuing PPT
    writes. Documented in
    Documentation/ABI/testing/sysfs-class-firmware-attributes.

Testing:
  Verified on G835LW (ROG Strix SCAR 18 2025, requires_fan_curve=true):
  - With no fan curve active, writes to ppt_pl1_spl return -ENODEV
    and the cached value is unchanged.
  - With pwm1_enable=1 on /sys/class/hwmon/.../asus_custom_fan_curve,
    PPT writes succeed and readback matches.
  - The pr_warn fires exactly once per rejected write.

  I do not have access to the other 27 affected models. Testers from
  any of these would be appreciated: FX507VI, FX507VV, FX507Z,
  GA402X, GA403UI, GA403UV, GA403WM, GA403WR, GA403WW, GA605W,
  GU605CR, GU605CW, GU605CX, GU605M, G513I, G513QM, G513QY, G513R,
  G614J, G615LR, G634J, G713PV, G733C, G733P, G814J, G834J, G835LR.

Ahmed Yaseen (2):
  platform/x86: asus-armoury: gate PPT writes behind active fan curve
  platform/x86: asus-armoury: expose requires_fan_curve via sysfs

 .../testing/sysfs-class-firmware-attributes   | 25 +++++++++++++
 drivers/platform/x86/asus-armoury.c           | 35 +++++++++++++++++++
 drivers/platform/x86/asus-wmi.c               | 28 +++++++++++++++
 include/linux/platform_data/x86/asus-wmi.h    |  5 +++
 4 files changed, 93 insertions(+)

-- 
2.54.0



             reply	other threads:[~2026-05-11  6:19 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-11  6:19 Ahmed Yaseen [this message]
2026-05-11  6:19 ` [PATCH 1/2] platform/x86: asus-armoury: gate PPT writes behind active fan curve Ahmed Yaseen
2026-05-12 15:15   ` Derek J. Clark
2026-05-11  6:19 ` [PATCH 2/2] platform/x86: asus-armoury: expose requires_fan_curve via sysfs Ahmed Yaseen
2026-05-12 15:14 ` [PATCH 0/2] asus-armoury: gate PPT writes on active fan curves Derek J. Clark
2026-05-13 14:54   ` Ahmed Yaseen
2026-05-19 16:05     ` Derek John Clark
2026-05-13 15:47 ` [PATCH v2 " Ahmed Yaseen
2026-05-13 15:47 ` [PATCH v2 1/2] platform/x86: asus-armoury: gate PPT writes behind active fan curve Ahmed Yaseen
2026-05-16 21:15   ` Mario Limonciello
2026-05-13 15:47 ` [PATCH v2 2/2] platform/x86: asus-armoury: expose requires_fan_curve via sysfs Ahmed Yaseen
2026-05-16 21:17   ` Mario Limonciello

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=20260511061901.907540-1-yaseen@ghoul.dev \
    --to=yaseen@ghoul.dev \
    --cc=Dell.Client.Kernel@dell.com \
    --cc=asus-linux@lists.linux.dev \
    --cc=corentin.chary@gmail.com \
    --cc=denis.benato@linux.dev \
    --cc=derekjohn.clark@gmail.com \
    --cc=hansg@kernel.org \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luke@ljones.dev \
    --cc=mpearson-lenovo@squebb.ca \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=prasanth.ksr@dell.com \
    /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

all inboxes | Powered by JetHome®