Skip to content

drm/apple: K116s DCP: PMU temperature for every panel, syslog filter, 27.2 D590 - #1646

Open
sithglan wants to merge 3 commits into
aurora-silicon:integration/aurorafrom
sithglan:thomas/k116s-dcp
Open

sithglan wants to merge 3 commits into
aurora-silicon:integration/aurorafrom
sithglan:thomas/k116s-dcp

Conversation

@sithglan

@sithglan sithglan commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Base: integration/aurora (050f6a5). Three commits, all in drm/apple. None of them changes behaviour, only what reaches the log:

  • PMU temperature for every panel. The firmware asks the AP for "PMUS"/"Temperature" (D401) at boot as the initial guess for its panel compensation. The driver answered only for mini-LED panels, so the OLED K116s logged "set_PMU_service: failed to read PMU temperature property!". Answer it for every panel with the battery temperature, as the H17P and v14.7 paths already do. The DCP's once-a-second "SMC sensor TAOC is an invalid temp -127.0, using 2DVT fallback values" record (the AOP-sourced TAOC has no sample under Linux) goes to debug level; that exact record only, any other sensor or value stays at info.
  • Syslog debug filter on the internal panel's DCP too. The filter was only in the external H17P RTKit ops.
  • 27.2 D590. The 27.2 firmware sends a 20-byte D590 notification with no reply after swaps. Take it as a no-op instead of warning about an unknown callback. This commit is the drm/apple part of Jens's "Quiet three sources of log noise on the K116s", split per subsystem. The tas2764 part is in K116s: SEP profile, ISP camera log line, tas2764 brownout log level #1649. The macsmc part (battery manufacture date) is left out, because power: supply: macsmc: skip an unreadable manufacture date quietly #1615 handles the same noise.

Not included: Jens's "drm/apple: drive firmware 27.2 with the 27.0 interface and its new method numbers". Its 27.2 tags are exactly the ones in the 27.2 table of the open #1174 (Jeff's table from #894, choosing the table by apple,firmware-compat). Jens's K116s confirms that table on hardware: AppleDCP-1317.40.16 with the +50 IOMobileFramebufferAP numbering, A389 to A390, and unchanged callbacks.

Tested by Jens on the K116s (27.2, 26B8125), internal OLED panel through DCP.

Build: arm64, LLVM 22; drivers/gpu/drm/apple/, no warnings.

Authorship. Jens Axboe wrote these commits and runs them on his K116s (16-inch MacBook Pro, M5 Pro, OLED; Mac17,12; stub macOS 27.2 26B8125). They come from his K116s bundle of 2026-11-11 (integration/aurora 254c9bd plus 34 commits, kernel 7.3.0 running on the machine). I rebased them onto integration/aurora 050f6a5 and removed the LLM co-author and session trailers. Jens has given his OK: the commits carry his Signed-off-by.

@RyanTheTide RyanTheTide left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sithglan host-tests fails in apple-dcp because boot.py (around line 97) asserts that the internal DCP rtkit_ops has no syslog_is_debug hook. 4e7352f adds that hook, so please update the selftest in the same commit to match the new policy.
Also, the PMUS change answers the firmware on every panel now, so the firmware gets a temperature where it used to get "false". Please describe that in the commit message as a behaviour change. We will run it on our LCD panels once CI is green.

… fallback

The firmware asks the AP for the PMU temperature property at boot (callback
D401 "PMUS"/"Temperature") for its panel compensation's initial guess; the
driver answered it only for mini-LED panels, so the OLED K116s logged
"set_PMU_service: failed to read PMU temperature property!" twice. Answer
with the battery temperature as the H17P and v14.7 paths do.

The DCP also reads eleven SMC temperature keys itself for its 2D virtual
temperature model and logs once a second that TAOC is -127.0, the SMC's
no-sample value, and that it uses the 2DVT fallback. TAOC and its siblings
are AOP-sourced sensors the SMC has no sample for until the AOP's sensor
servers run, so route that record to the debug level; another sensor,
value or verdict stays at info.

This is a behaviour change for every panel that is not mini-LED, on
every firmware this template drives: the firmware's PMUS "Temperature"
request used to get "false" there and now gets the battery temperature,
which its panel compensation then takes as the panel's initial
temperature. Mini-LED panels got the temperature before and still do.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
[thomas: describe the PMUS reply as a behaviour change]
Signed-off-by: Thomas Glanzmann <thomas@glanzmann.de>
The filter that demotes known-benign firmware syslog records was only in
the external H17P RTKit ops, so the TAOC fallback record still logged once
a second on the internal panel.

The apple-dcp host test's syslog check expects the hook on both RTKit
ops now.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
[thomas: update the apple-dcp host test to the new policy]
Signed-off-by: Thomas Glanzmann <thomas@glanzmann.de>
The 27.2 firmware sends a 20-byte D590 notification with no reply after
swaps (the macOS handler next to swap_info is the buffer-release
notification). Nothing here consumes it, so take it as a no-op instead of
warning about an unknown callback.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
@sithglan

Copy link
Copy Markdown
Contributor Author

@RyanTheTide both done, force-pushed as 907bb7e (was d30426f).

  • The selftest change is in 8847a28, the commit that adds the hook. apple-dcp/boot.py's syslog check now expects .syslog_is_debug = dcp_rtk_syslog_is_debug in the internal rtkit_ops as well as in external_h17p_rtkit_ops. Its comment now says the policy covers both DCP transports and demotes only the records it matches.
  • 50db17f's message now has a paragraph on the behaviour change: on every panel that isn't mini-LED, the PMUS "Temperature" request used to get false and now gets the battery temperature, which the firmware takes as the panel's initial temperature. Mini-LED panels got it before and still do.

Both edited commits carry a [thomas: …] note and my Signed-off-by after Jens's. tools/asahi/run-host-tests.py --only apple-dcp passes at each of the three commits, and the display KUnit suites pass (99 passed, 1 skipped).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants