Linux Hardware Monitor development
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: patches@lists.linux.dev, stable@vger.kernel.org
Cc: "Armin Wolf" <W_Armin@gmx.de>, "Pali Rohár" <pali@kernel.org>,
	"Guenter Roeck" <linux@roeck-us.net>,
	"Sasha Levin" <sashal@kernel.org>,
	linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH AUTOSEL 6.18-6.12] hwmon: (dell-smm) Add Dell Latitude 7530 to fan control whitelist
Date: Mon, 31 Aug 2026 09:21:34 -0400	[thread overview]
Message-ID: <20260831133314.4125787-66-sashal@kernel.org> (raw)
In-Reply-To: <20260831133314.4125787-1-sashal@kernel.org>

From: Armin Wolf <W_Armin@gmx.de>

[ Upstream commit 5a1aba28f6c79f4bbb7a5361063225030ecd36f3 ]

A user reported that the Dell Latitude 7530 needs to be whitelisted
for the special SMM calls necessary for globally enabling/disabling
BIOS fan control.

Closes: https://github.com/Wer-Wolf/i8kutils/issues/17
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Acked-by: Pali Rohár <pali@kernel.org>
Link: https://lore.kernel.org/r/20260610180141.311503-1-W_Armin@gmx.de
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

# Stable Backport Analysis: `hwmon: (dell-smm) Add Dell Latitude 7530 to
fan control whitelist`

**Local tree:** `v6.18.44` (stable/linux-6.18.y)
**Mainline commit:** `5a1aba28f6c79` (merged via `hwmon-for-v7.2`, not
yet in this 6.18.y checkout)

---

## PHASE 1: COMMIT MESSAGE FORENSICS

### Step 1.1: PARSE THE SUBJECT LINE
**Record:** `[hwmon: (dell-smm)]` `[Add]` — Add Dell Latitude 7530 to
the existing fan-control DMI whitelist.

### Step 1.2: PARSE ALL COMMIT MESSAGE TAGS
**Record:**
- **Closes:** https://github.com/Wer-Wolf/i8kutils/issues/17
- **Signed-off-by:** Armin Wolf \<W_Armin@gmx.de\>
- **Acked-by:** Pali Rohár \<pali@kernel.org\> (dell-smm co-developer /
  whitelist maintainer)
- **Link:**
  https://lore.kernel.org/r/20260610180141.311503-1-W_Armin@gmx.de
- **Signed-off-by:** Guenter Roeck \<linux@roeck-us.net\> (hwmon
  maintainer)
- No `Fixes:`, `Reported-by:`, `Cc: stable@vger.kernel.org`, `Tested-
  by:`, or syzbot tags.

Notable: maintainer ack from Pali Rohár; user bug report via GitHub
issue.

### Step 1.3: ANALYZE THE COMMIT BODY TEXT
**Record:**
- **Bug:** Dell Latitude 7530 is missing from
  `i8k_whitelist_fan_control`, so the driver never sets the correct SMM
  codes (`manual_fan`/`auto_fan`) for toggling BIOS automatic fan
  control.
- **Symptom:** Manual fan control via hwmon `pwmX_enable` / i8kutils
  does not work; user saw fan speed capped (~3500 RPM) without the
  whitelist entry vs ~4000 RPM with it.
- **Root cause:** SMM fan-control codes differ per Dell model; only
  whitelisted models get the correct codes at init via
  `dell_smm_init_dmi()`.
- No kernel version range stated in the commit message.

### Step 1.4: DETECT HIDDEN BUG FIXES
**Record:** Not disguised cleanup — this is an explicit hardware-
enablement / quirk entry. Functionally fixes broken manual fan control
on one laptop model.

---

## PHASE 2: DIFF ANALYSIS

### Step 2.1: INVENTORY THE CHANGES
**Record:**
- **Files:** `drivers/hwmon/dell-smm-hwmon.c` (+8 lines, 0 removed)
- **Functions touched:** data in `i8k_whitelist_fan_control[]` (used by
  `dell_smm_init_dmi()`)
- **Scope:** Single-file, surgical DMI table addition.

### Step 2.2: UNDERSTAND THE CODE FLOW CHANGE
**Record:**
- **Before:** On Latitude 7530,
  `dmi_first_match(i8k_whitelist_fan_control)` returns NULL →
  `manual_fan`/`auto_fan` stay 0 → `pwmX_enable` sysfs attribute is not
  exposed (`auto_fan` check at line 864 fails) and
  `i8k_enable_fan_auto_mode()` is never used with correct SMM codes.
- **After:** Latitude 7530 matches → `manual_fan=0x30a3`,
  `auto_fan=0x31a3` (same as Latitude 7320) → fan auto/manual SMM
  control is enabled for this machine.
- **Path affected:** `__init` DMI setup at boot (`dell_smm_init_dmi()` →
  `i8k_init()`).

### Step 2.3: IDENTIFY THE BUG MECHANISM
**Record:** **Category (h): Hardware workaround / DMI quirk.** Missing
DMI whitelist entry prevents correct per-model SMM codes from being
configured. Same mechanism as the existing Latitude 7320 entry
(`b4be51302d687`).

### Step 2.4: ASSESS THE FIX QUALITY
**Record:**
- Obviously correct: copies the proven Latitude 7320 pattern
  (`I8K_FAN_30A3_31A3`), user-tested on GitHub.
- Minimal, no unrelated changes.
- Regression risk very low: only affects systems matching
  `DMI_PRODUCT_NAME == "Latitude 7530"`. The original 2019 whitelist
  commit notes incorrect SMM codes can be dangerous, but this uses the
  same validated codes as the sibling 7320 model after maintainer/user
  testing.

---

## PHASE 3: GIT HISTORY INVESTIGATION

### Step 3.1: BLAME THE CHANGED LINES
**Record:** Insertion point is after Latitude 7320 entry
(`b4be51302d687`, Jul 2024). Whitelist infrastructure introduced in
`afe45277ade62` (Nov 2019). `I8K_FAN_30A3_31A3` enum value present since
at least `8debe3c1295ef`. All prerequisites are long-established in
6.18.y.

### Step 3.2: FOLLOW THE FIXES: TAG
**Record:** N/A — no `Fixes:` tag.

### Step 3.3: CHECK FILE HISTORY FOR RELATED CHANGES
**Record:** Multiple prior whitelist additions already in 6.18.y:
- `b4be51302d687` — Latitude 7320 (same author, same pattern, same
  `I8K_FAN_30A3_31A3`)
- `f8611a7981cd0` — G15 5510
- `fa0bc8f297b29` — G15 5511
- etc.

Standalone single-patch series (v1 only). No series dependencies.

### Step 3.4: CHECK THE AUTHOR'S OTHER COMMITS
**Record:** Armin Wolf is a regular dell-smm contributor in this tree
(7320 whitelist, OptiPlex DMI entries, fan mode support). Not the
subsystem maintainer, but established contributor with maintainer ack on
this patch.

### Step 3.5: CHECK FOR DEPENDENT/PREREQUISITE COMMITS
**Record:** No dependencies. Requires only existing
`i8k_whitelist_fan_control`, `i8k_fan_control_data[]`, and
`I8K_FAN_30A3_31A3` — all present in 6.18.44. `git apply --check` on the
mainline patch succeeds cleanly.

---

## PHASE 4: MAILING LIST AND EXTERNAL RESEARCH

### Step 4.1: FIND THE ORIGINAL PATCH DISCUSSION
**Record:**
- **b4 dig URL:**
  https://patch.msgid.link/20260610180141.311503-1-W_Armin@gmx.de
- **Series:** v1 only (committed version is latest)
- **Reviewer feedback:** Acked-by Pali Rohár; Guenter Roeck applied. No
  NAKs, no stable nomination in thread.

### Step 4.2: CHECK WHO REVIEWED THE PATCH
**Record:** CC'd: `pali@kernel.org`, `linux@roeck-us.net`, `linux-
hwmon@vger.kernel.org`. Pali Rohár (co-developer of whitelist mechanism)
acked.

### Step 4.3: SEARCH FOR THE BUG REPORT
**Record:** GitHub issue #17 (piotr152):
- User confirmed without `driver_data`: fan capped at 3500 RPM
- With `I8K_FAN_30A3_31A3`: works, ~4000 RPM
- Same treatment needed as Latitude 7320 (issue #8)
- Severity from user perspective: functional fan-control failure, not
  kernel crash

### Step 4.4: CHECK FOR RELATED PATCHES AND SERIES
**Record:** Standalone patch. Related prior fix: `b4be51302d687`
(Latitude 7320) — already in 6.18.y.

### Step 4.5: CHECK STABLE MAILING LIST HISTORY
**Record:** No stable-list discussion found for this specific patch. Not
a negative signal per instructions.

---

## PHASE 5: CODE SEMANTIC ANALYSIS

### Step 5.1: IDENTIFY KEY FUNCTIONS IN THE DIFF
**Record:** `dell_smm_init_dmi()` (consumer of whitelist),
`i8k_enable_fan_auto_mode()` (uses `manual_fan`/`auto_fan`),
`dell_smm_is_visible()` (exposes `hwmon_pwm_enable` when `auto_fan` is
set).

### Step 5.2: TRACE CALLERS
**Record:** `dell_smm_init_dmi()` called from `i8k_init()` at module
init (`__init`). Affects all subsequent hwmon sysfs read/write on
matched Dell laptops. Not interrupt context; init-time configuration.

### Step 5.3: TRACE CALLEES
**Record:** `dmi_first_match()` → sets globals `manual_fan`/`auto_fan` →
used later by `i8k_enable_fan_auto_mode()` → `dell_smm_call()` (SMM BIOS
call).

### Step 5.4: FOLLOW THE CALL CHAIN
**Record:** Boot-time DMI match → userspace writes `pwm1_enable` via
hwmon sysfs (root typically required) → `i8k_enable_fan_auto_mode()`.
Reachable from userspace on affected hardware; not a security crash
vector.

### Step 5.5: SEARCH FOR SIMILAR PATTERNS
**Record:** Identical pattern used for 12+ models in
`i8k_whitelist_fan_control[]` in this tree, including Latitude 7320 with
the same `I8K_FAN_30A3_31A3` codes.

---

## PHASE 6: CROSS-REFERENCING AGAINST THE LOCAL TREE

### Step 6.1: DOES THE BUGGY CODE EXIST IN THIS TREE?
**Record:** **YES.** The whitelist table exists but lacks Latitude 7530.
`grep "Latitude 7530"` returns no matches in 6.18.44. The omission (not
a regression) means 7530 owners on 6.18.y lack fan-control enablement
that sibling models (7320) already have.

### Step 6.2: CHECK FOR BACKPORT COMPLICATIONS
**Record:** **Clean apply expected.** Verified with `git apply --check`.
Insertion point (after 7320, before E6440) matches current file layout
exactly.

### Step 6.3: CHECK IF RELATED FIXES ARE ALREADY HERE
**Record:** Latitude 7320 whitelist (`b4be51302d687`) is present.
Latitude 7530 fix is not. No duplicate fix.

---

## PHASE 7: SUBSYSTEM AND MAINTAINER CONTEXT

### Step 7.1: IDENTIFY THE SUBSYSTEM AND ITS CRITICALITY
**Record:** **hwmon / dell-smm driver.** **IMPORTANT** for Dell laptop
users relying on fan control; **PERIPHERAL** from a whole-kernel
perspective (DMI-gated, one laptop model).

### Step 7.2: ASSESS SUBSYSTEM ACTIVITY
**Record:** hwmon is actively maintained in 6.18.y; dell-smm receives
regular DMI whitelist updates (7320, G15 5510/5511, XPS entries, etc.).

---

## PHASE 8: IMPACT AND RISK ASSESSMENT

### Step 8.1: DETERMINE WHO IS AFFECTED
**Record:** **Driver-specific / platform-specific** — Dell Latitude 7530
owners using `dell-smm` hwmon fan control (i8kutils, manual thermal
management).

### Step 8.2: DETERMINE THE TRIGGER CONDITIONS
**Record:** Every boot on Latitude 7530 with `dell-smm` loaded. Common
for affected hardware owners. Requires root for sysfs writes; not an
unprivileged attack vector.

### Step 8.3: DETERMINE THE FAILURE MODE SEVERITY
**Record:** **Functional failure** — manual BIOS fan-control toggle via
SMM does not work; fan speed may be capped below what manual control
allows. **Severity: LOW–MEDIUM** (thermal management inconvenience, not
kernel oops/corruption). Could matter under heavy workloads if BIOS auto
mode is inadequate.

### Step 8.4: CALCULATE RISK-BENEFIT RATIO
**Record:**
- **Benefit:** Enables fan control on a real, shipping laptop for 6.18.y
  users; direct precedent already accepted in this tree (7320).
- **Risk:** Very low — 8 lines, DMI-gated, maintainer-acked, user-tested
  codes.
- **Ratio:** Favorable for backport under the hardware-quirk exception.

---

## PHASE 9: FINAL SYNTHESIS

### Step 9.1: COMPILE THE EVIDENCE

**FOR backport:**
- Hardware quirk / DMI whitelist exception (explicitly allowed for
  stable)
- Real user-reported issue with on-hardware testing
- Acked-by subsystem co-developer (Pali Rohár)
- Identical precedent already in 6.18.y (Latitude 7320, same SMM codes)
- 8-line patch, applies cleanly, no dependencies
- Driver and infrastructure fully present in 6.18.44

**AGAINST backport:**
- Not a crash, security, deadlock, or data-corruption fix
- Strict reading of "important issue" criterion is borderline
- Fan-control SMM calls carry inherent risk if codes are wrong
  (mitigated by 7320 precedent and user testing)

**UNRESOLVED:** None material to the decision.

### Step 9.2: STABLE RULES CHECKLIST
1. Obviously correct and tested? **PASS** — mirrors 7320 entry; user-
   tested on GitHub; maintainer acked.
2. Fixes a real bug affecting users? **PASS** — manual fan control non-
   functional on Latitude 7530.
3. Important issue? **PASS (via quirk exception)** — not crash-level,
   but real hardware functionality for laptop thermal management; fits
   hardware-quirk stable exception.
4. Small and contained? **PASS** — 8 lines, one file.
5. No new features or APIs? **PASS** — DMI table entry only; no new
   sysfs/API surface.
6. Can apply to local tree? **PASS** — verified clean apply to 6.18.44.

### Step 9.3: CHECK FOR EXCEPTION CATEGORIES
**Record:** **Hardware quirk / DMI whitelist workaround** — same
category as Latitude 7320, XPS 9315, G15 5510 entries already in 6.18.y.

### Step 9.4: DECISION RATIONALE

This commit should be backported to **6.18.y**. The dell-smm fan-control
whitelist is an established, conservative mechanism for per-model SMM
code selection. Adding Latitude 7530 with the same `I8K_FAN_30A3_31A3`
codes as the already-backported Latitude 7320 is low risk and fixes a
confirmed user-facing hardware issue. It is not a kernel-stability crash
fix, but it squarely matches the stable-tree exception for hardware-
specific quirks that enable existing driver functionality on real
devices.

---

## Verification

- **[Phase 1]** `git show 5a1aba28f6c79`: parsed subject, tags, body
- **[Phase 1]** GitHub issue #17 fetched: user testing confirms
  `I8K_FAN_30A3_31A3` works; without entry fan capped at 3500 RPM
- **[Phase 2]** Read `dell-smm-hwmon.c` lines 432-441, 863-878,
  1059-1084, 1530-1777: confirmed whitelist → `auto_fan`/`manual_fan` →
  sysfs and SMM path
- **[Phase 2]** `git show 5a1aba28f6c79 --stat`: 1 file, +8 lines
- **[Phase 3]** `git describe HEAD` / `make kernelversion`: tree is
  v6.18.44
- **[Phase 3]** `git blame -L 1560,1567`: Latitude 7320 entry from
  `b4be51302d687`
- **[Phase 3]** `git log -S i8k_whitelist_fan_control`: whitelist
  introduced `afe45277ade62` (2019)
- **[Phase 3]** `git log --grep="fan control whitelist" HEAD`: multiple
  whitelist commits already in 6.18.y including 7320
- **[Phase 3]** `git apply --check` on mainline patch: applies cleanly
  to 6.18.44
- **[Phase 4]** `b4 dig -c 5a1aba28f6c79`: lore thread found
- **[Phase 4]** `b4 dig -c 5a1aba28f6c79 -w`: Pali Rohár and Guenter
  Roeck CC'd
- **[Phase 4]** `b4 dig -c 5a1aba28f6c79 -a`: v1 only, no later
  revisions
- **[Phase 4]** `b4 dig -m /tmp/latitude7530.mbox`: thread downloaded;
  Acked-by Pali Rohár; no stable Cc
- **[Phase 5]** `grep dell_smm_init_dmi`: called from `i8k_init()` at
  line 1808
- **[Phase 6]** `grep "Latitude 7530"`: not present in 6.18.44 (fix
  needed)
- **[Phase 6]** `grep "Latitude 7320"`: present at line 1561 (insertion
  point confirmed)
- **[Phase 6]** `I8K_FAN_30A3_31A3` enum and data present at lines
  1536-1544
- **[Phase 7]** `git log --oneline -20 -- drivers/hwmon/`: active hwmon
  maintenance in tree
- **[Phase 8]** Failure mode assessed as functional/thermal, not crash —
  severity LOW-MEDIUM

**YES**

 drivers/hwmon/dell-smm-hwmon.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c
index 768690a597f4d..9f102589f240c 100644
--- a/drivers/hwmon/dell-smm-hwmon.c
+++ b/drivers/hwmon/dell-smm-hwmon.c
@@ -1565,6 +1565,14 @@ static const struct dmi_system_id i8k_whitelist_fan_control[] __initconst = {
 		},
 		.driver_data = (void *)&i8k_fan_control_data[I8K_FAN_30A3_31A3],
 	},
+	{
+		.ident = "Dell Latitude 7530",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Latitude 7530"),
+		},
+		.driver_data = (void *)&i8k_fan_control_data[I8K_FAN_30A3_31A3],
+	},
 	{
 		.ident = "Dell Latitude E6440",
 		.matches = {
-- 
2.53.0


  parent reply	other threads:[~2026-08-31 13:35 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20260831133314.4125787-1-sashal@kernel.org>
2026-08-31 13:21 ` [PATCH AUTOSEL 6.18-6.12] hwmon: (raspberrypi) Fix delayed-work teardown race Sasha Levin
2026-08-31 14:09   ` sashiko-bot
2026-08-31 13:21 ` Sasha Levin [this message]
2026-08-31 14:02   ` [PATCH AUTOSEL 6.18-6.12] hwmon: (dell-smm) Add Dell Latitude 7530 to fan control whitelist sashiko-bot
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18-6.6] hwmon: (corsair-psu) Fix linear11 calculation Sasha Levin
2026-08-31 15:26   ` sashiko-bot
2026-08-31 13:25 ` [PATCH AUTOSEL 6.18-5.10] hwmon: (pmbus/lm25066) Fix PMBus coefficients for LM5064/5066/5066i Sasha Levin
2026-08-31 15:32   ` sashiko-bot
2026-08-31 13:27 ` [PATCH AUTOSEL 6.18] hwmon: (asus-ec-sensors) add ROG MAXIMUS Z790 EXTREME Sasha Levin
2026-08-31 16:14   ` sashiko-bot
2026-08-31 13:27 ` [PATCH AUTOSEL 6.18] hwmon: (asus-ec-sensors) add ROG STRIX B850-E GAMING WIFI Sasha Levin
2026-08-31 16:15   ` sashiko-bot
2026-08-31 13:27 ` [PATCH AUTOSEL 6.18-5.10] hwmon: (adt7462) Add of_match_table to support devicetree Sasha Levin
2026-08-31 16:21   ` sashiko-bot

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=20260831133314.4125787-66-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=W_Armin@gmx.de \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=pali@kernel.org \
    --cc=patches@lists.linux.dev \
    --cc=stable@vger.kernel.org \
    /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