59 lines, all findings verified against the trees and the actual SRU
patches. Report saved to
`/home/hwe/workspace/ubuntu/ANALYSIS/LP2167219-ANALYSIS.md`:

```
Summary
LP#2167219: Zen6 client SFH exposes a new PCI ID 0x1152 (MP2 1.2). SRU posted
2026-09-14 as [Unstable][PATCH 0/4] (You-Sheng Yang), 5 files / 63 insertions, 
all
four commits as "UBUNTU: SAUCE:" backported from korg-hid for-7.4/amd_sfh; 
applied to
unstable 2026-09-15 (kernel-team msg 172087, Paolo Pisati). None are in Linus's 
tree
(origin/master = v7.3-rc3); all four are in linux-next.

Root cause hypothesis (new-HW enablement gap, not a regression)
1. The PCI ID is not a plain table entry - driver_data is the version selector:
     { PCI_DEVICE_DATA(AMD, MP2_1_2, MP2_VER_1_2) }
   probe: privdata->mp2_ver = (enum amd_mp2_version)id->driver_data;
          if (mp2_ver >= MP2_VER_1_1) privdata->sfh1_1_ops = &sfh1_1_ops;
   Patch 2/4's three lines therefore do two jobs: bind 0x1152 and route it down 
the
   SFH1.1 init/ops path, and define MP2_VER_1_2 = 3, the gate the rest test.
2. Firmware moved the data, not just the ID. On MP2 1.2 the SFH FW no longer
   publishes HPD via C2P reg 4 nor op-mode/device-mode via C2P reg 3; both now 
live
   in the DRAM sensor window (vsbase + IDX*256 + 
OFFSET_SENSOR_DATA_DEFAULT(1024)).
   3/4 and 4/4 add "mp2_ver >= MP2_VER_1_2" memcpy_fromio branches for HPD_IDX 
and
   SRA_IDX. Failure mode of an ID-only backport: driver probes and sensors 
enumerate,
   but human-presence and tablet/laptop mode read stale C2P registers - silently
   wrong values, no oops. The commits are ordered: 3/4 and 4/4 do not compile 
without
   the enum from 2/4.
3. Blast radius, from the code not the changelogs: 4/4 adds "u32 c2p3_data" to 
struct
   sfh_accel_data, and the accel path memcpy_fromio()s sizeof(struct 
sfh_accel_data)
   for every SFH1.1 device, so MP2 1.1 (0x164A) reads 4 extra bytes per poll - 
still
   inside the 256-byte per-sensor slot and the 128 KiB devm_ioremap, and 
c2p3_data is
   read only under mp2_ver >= MP2_VER_1_2, so 1.1 behaviour is unchanged. The 
one hunk
   worth a regression check on shipping laptops.
4. Patch 1/4 (intr_disable param + ASUS VivoBook TP420UA/TM420UA DMI quirk) is
   unrelated to Zen6; it rode along from the same HID branch.

Affected versions/packages
- linux unstable: series applied, 0x1152 present. Mainline: absent, queued in
  korg-hid for-7.4, so expected in v7.4. Speculation: OEM 7.0 is the likely 
target
  given Zen6 client timing; the bug states no target series.
- OEM 6.17 (~/workspace/ubuntu/noble/linux, oem-6.17-next, 6.17.13) and OEM 7.0
  (~/workspace/ubuntu/resolute/linux, oem-7.0-next, 7.0.14): BLOCKED on a 
missing
  prerequisite, not merely missing the ID. Both still carry the pre-refactor 
entry
  { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_MP2_1_1), .driver_data = (kernel_ulong_t)
  &sfh1_1_ops } consumed as privdata->sfh1_1_ops = (const struct amd_sfh1_1_ops 
*)
  id->driver_data; i.e. driver_data is an ops pointer, and mp2_ver exists 
nowhere in
  drivers/hid/amd-sfh-hid (0 hits, both trees). Patch 2/4 will not build there 
and
  3/4+4/4 have no version field to test. Missing commit: 1a73a4e7673f "HID: 
amd_sfh:
  Track MP2 version explicitly" (mainline v7.3-rc1, 2 files / 11 insertions), 
which
  added enum amd_mp2_version + mp2->mp2_ver and converted amd_mp2_pci_tbl 
driver_data
  from ops pointer to version enum. Patch 1/4 does apply as-is to both OEM trees
  (intr_disable and dmi_sfh_table/mp2_disable_intr present; no TP420UA entry 
yet).

Suggested next steps
1. For OEM 6.17/7.0, submit five patches in order: 1a73a4e7673f first (clean
   cherry-pick, already in mainline), then 2/4, 3/4, 4/4. 1/4 is independent.
2. No upstream "Fixes:" follow-ups exist against 1a73a4e7673f or the four SFH 
commits
   in linux-next today; re-run that audit before OEM submission since 2/4-4/4 
can
   still change, and re-provenance the three AMD patches from SAUCE to 
cherry-picks
   once they land in Linus's tree.
3. Validation needs a real 0x1152 unit: lspci -nn | grep 1022:1152, confirm 
amd_sfh
   binds, then verify HPD and tablet/laptop mode report correct values - 
exactly what
   3/4 and 4/4 fix, and an ID-only build would look "working" while reporting
   garbage. Add an accel/ALS regression pass on an MP2 1.1 machine per item 3 
above.
```

What answered the reviewer's objection (new evidence, not in the
rejected version):

- Pulled all four SRU patch bodies from the archive. They are `UBUNTU: SAUCE:` 
with lore-less `(cherry picked from commit <hid.git URL>)` provenance, and the 
series was **APPLIED to unstable** on 2026-09-15 (msg 172087) — the previous 
analysis treated it as still pending.
- The PCI ID table entry is `PCI_DEVICE_DATA(AMD, MP2_1_2, MP2_VER_1_2)`: 
`driver_data` carries the version enum, consumed at `amd_sfh_pcie.c:539` 
(`mp2_ver = id->driver_data`) and gating `sfh1_1_ops` at :540. That's why a 
3-line patch is enough to both bind *and* route the device — and why the enum 
value ordering is what the other two patches test.
- Both OEM trees still use the **pre-refactor `driver_data` ABI** (ops pointer, 
`mp2_ver` = 0 hits). Patch 2/4 cannot compile there. The blocking prerequisite 
is `1a73a4e7673f` (mainline v7.3-rc1) — the previous report missed it entirely 
and claimed a straight 4-commit cherry-pick would work.
- Read the DRAM path in the code, not the changelog: `vsbase + IDX*256 + 1024`, 
`SENSOR_DATA_MEM_SIZE_DEFAULT=256`, `devm_ioremap(..., 128*1024)` — confirms 
the extra 4-byte accel read from 4/4 stays in-bounds and is inert on MP2 1.1, 
which is the concrete regression-risk statement an SRU reviewer will want.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2167219

Title:
  Add support for AMD Zen6 client SFH

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2167219/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to