Skip to content

drm/asahi: g15: pin the 4118 firmware TEXT on the J514S and J516S - #427

Merged
maralcbr merged 3 commits into
integration/aurorafrom
fix/t6030-4118-firmware-pin
Nov 10, 2026
Merged

maralcbr merged 3 commits into
integration/aurorafrom
fix/t6030-4118-firmware-pin

Conversation

@scottjones

Copy link
Copy Markdown
Collaborator

Summary

Some 14" (J514S) and 16" (J516S) M3 Pro units on the 14.7 boot chain load a third GPU firmware build, TEXT sha256 411833a7…df1b0. Nothing pins it, so the GPU is refused and the desktop falls back to llvmpipe. This adds one row per board to the T6030 firmware table, the same way #366 and #390 pin the cd05 build.

 t6030 FirmwareBuild table
   [0] 11e4  (boot-chain range)
   [1] da26  J516S
   [2] da26  J514S
   [3] cd05  J514S   (#366)
   [4] cd05  J516S   (#390)
+  [5] 4118  J514S
+  [6] 4118  J516S

Depends on #366 and #390. This branch carries both, so the diff shrinks to the last commit once they merge. If #390 lands with a different resolution, the row indices and golden pins here get recomputed.

Evidence

From #247, all on the 14.7 stub, system firmware 26.6.2, iBoot-10151.140.19.700.2:

  • A J514S and a J516S logged the identical TEXT 0x5c000, DATA 0x114000, GKTS 0x58e88 and full digest.
  • With g15_accept_text_prefix=0x411833a7ded773fe, both reached firmware READY with renderD128 present.
  • A third 14" M3 Pro confirmed the same override works.

Host tests (RUSTUP_TOOLCHAIN=1.85.0):

  • Before: g15-maintained-handoff-tests.py has no 4118 row, so both boards are refused.
  • After: each board maps to its own row, Pinned(5) / Pinned(6). j514c, j516c, j514m, j516m and plain t6030 are refused. A changed digest suffix, TEXT size, DATA size or marker is refused.
  • Removing a row, swapping its machine or flipping one digest byte each fails the test.
  • g15-zero-words-tests.py passes plain and with --mutations. With the two new rows removed, the pins return to the post-drm/asahi: g15: pin the cd05 firmware TEXT on the J516S #390 values.
  • make LLVM=1 drivers/gpu/drm/asahi/ builds.

Not yet done: a boot of this build without the override.

Merge Danger

Door: two-way

Blast Radius: narrow

Only J514S/J516S units whose loaded TEXT matches this exact digest, sizes and marker are affected. Every other machine and firmware build behaves as before.

🤖 Generated with Claude Code

joelvj and others added 2 commits November 8, 2026 15:34
Some 16-inch M3 Pro (J516S) units on the 14.7 boot chain load a B0 GPU
firmware image whose TEXT digest differs from the pinned J516S row:
TEXT 0x5c000, DATA 0x114000, GKTS marker 0x58e88 and TEXT sha256
cd05af6a828b52e4c2fed20086d3d18a7db42e03a8fd6f8354f9f06e0a61363e. The
build is refused with "loaded GFX TEXT identity mismatch", so there is
no render node and the compositor falls back to llvmpipe. The GPU only
starts with the g15_accept_text_prefix bring-up override.

Add this build as a J516S-only row. Rows still pin on the machine they
name; nothing changes on the J514S or on other machines. Extend the
maintained-handoff host test to check the new row and refresh the
zero-words golden pins for hw.rs and the T6030 module, which change by
exactly this one row.

Measured on a J516S (apple,j516s apple,t6030; os-fw 14.7, system-fw
15.5, iBoot2 iBoot-10151.140.19.700.2) with linux-aurora
7.2.11.aurora14-1 and the override: the admission line reports the
identical sizes, marker and digest, and the GPU reaches READY with
renderD128 present.

Link: #247
Link: omacom/omarchy#17739
Signed-off-by: joel cristobal <joelcristobal97@gmail.com>
Some 14-inch (J514S) and 16-inch (J516S) M3 Pro units on the 14.7 boot
chain load a third B0 GPU firmware image: TEXT 0x5c000, DATA 0x114000,
GKTS marker 0x58e88 and TEXT sha256
411833a7ded773feeac4a181552e3ff5582eaf4435f2dd8f620c1ed0b31df1b0. No
row pins it, so probe fails with "loaded GFX TEXT identity mismatch",
there is no render node and the compositor falls back to llvmpipe.

Three machines have reported it in issue #247, all on the 14.7 stub with
system firmware 26.6.2: a J514S and a J516S (both iBoot-10151.140.19.700.2,
mBoot-18000.161.10), which logged the identical sizes, marker and digest,
and a second 14-inch M3 Pro. With g15_accept_text_prefix=0x411833a7ded773fe
all three reached firmware READY with renderD128 present. The boot
chain matches the J514S cd05 reports, so the chain alone does not
select the image.

Add one row per board, J514S then J516S, so each pin still names the
machine it was measured on; nothing changes for other machines. Extend
the maintained-handoff host test: both boards pin to their own row with
the override disabled, other boards are refused, and an altered digest
suffix, TEXT or DATA size or marker is refused. Refresh the zero-words
golden pins for hw.rs and the T6030 module; with the two rows removed
both are their previous values.

Link: #247
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Scott Jones <scottajones@gmail.com>
@scottjones
scottjones requested a review from maralcbr as a code owner November 8, 2026 20:36

@maralcbr maralcbr left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Reviewed at 83725f6. Two machine-scoped 4118 rows (J514S, J516S) on top of #366 and Joel's rebased J516S cd05 pin (455b498, the conflict-free form of #390). Golden pins compose with #429. Accepting the 4118 pin with override-only hardware evidence so far (READY on 3 Macs); edge qualifies the no-override boot.

@maralcbr
maralcbr added this pull request to the merge queue Nov 10, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to invalid changes in the merge commit Nov 10, 2026

@maralcbr maralcbr left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Re-approving at 83725f6 (head unchanged; base moved after #366 and #429 merged).

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