Skip to content

benchcase: the shipped image's display driver runs in the benchmark boot - #1149

Merged
Japabu merged 1 commit into
mainfrom
bench-tgl-display
Nov 2, 2026
Merged

Japabu merged 1 commit into
mainfrom
bench-tgl-display

Conversation

@Japabu

@Japabu Japabu commented Nov 1, 2026

Copy link
Copy Markdown
Collaborator

Problem

tests/images/benchcase.toml, the image every osbench metal row boots, did not run the display driver the shipped image runs. On the T14 the energy rows and the scoreboard therefore measured the display as the GOP left it, while images/system.toml runs tgl-display. That driver sets watermarks and SAGV, loads the DMC and allows DC6. So ToyOS-against-Linux idle compared Linux's real display driver with a display engine ToyOS's shipped system never leaves.

Change

  • benchcase.toml declares [programs.tgl-display] with the shipped row's drives = ["pci:03:00:00/8086:9a49"].
  • It does not take receives = ["display-output"]. That port's server is the compositor, which the benchmark image deliberately leaves out. build/build.rs refuses an image that receives a port no [boot] start row serves.
    • Without the port, the driver does the same power programming as in the shipped image. It says "presents go unanswered" and keeps the scan-out (system/tgl-display/src/main.rs, serve).
  • On the AMD bench, and any machine without that iGPU, the match finds no function and nothing starts. Its rows are unchanged.

Effect, by design

Every osbench row boots this image. The T14's figures that depend on the display engine change: energy.idle.*, its package C-state residency, and the wake rows. The next scoreboard reads that new baseline. No A/B is part of this PR.

Coordination

#1137 adds firmware = ["igd-opregion"] to the shipped and metalcase rows. Whichever of the two lands second also gives benchcase that line, so the three rows stay alike.

Checks

  • cargo run -- --ci host at 7e97df75c: exit 0, 108 steps.
  • cargo test --test toyos-build -- osbench_capability_groups_exit_0 (QEMU, which boots this image): exit 0. The build accepts the manifest, and the image boots with the row, which starts nothing on QEMU's machine.
  • cargo test --test toyos-build -- --metal --metal-readback <dir> osbench_energy staged the T14 energy image: exit 2, the stager's "machine not touched". The image carries the tgl-display row and its binary.

Risks

  • No metal boot has run this image with the row yet. QEMU has no Tiger Lake iGPU, so the driver does not start there. The first T14 scoreboard boot is its first run.
  • What changes in the measurement: the driver's start-up is one more process in the boot, and its claim resets the iGPU's function if the driver ends. The shipped image accepts both, and so does this one.

🤖 Generated with Claude Code

The benchmark boot measured the T14 with the display as the GOP left it,
while images/system.toml runs tgl-display. That driver sets the display
engine's watermarks, loads the DMC and allows DC6 (stages 1-3). So the
energy rows and the scoreboard read a display engine the shipped system
never leaves. The benchmark image now declares the driver with the
shipped row's `drives` match, and the comparison with Linux is of the
real system.

The row receives no `display-output`. Its server is the compositor,
which this image does not run, and an image that receives a port no
`[boot] start` row serves is refused (build/build.rs). Without the port
the driver programs the engine's power as it does in the shipped image,
says its presents go unanswered, and keeps the scan-out. On every other
bench the match finds no function and nothing starts.

Every osbench row boots this image, so the T14's figures that depend on
the display engine (the idle package, its residency and the wake rows)
change by design. The next scoreboard reads that baseline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Japabu added a commit that referenced this pull request Nov 1, 2026
The PC2 issue's APST figures came from the benchmark image. That image
started no display driver until #1149, so they read the GOP's display.

In PR #1131's r6, Linux's own back-to-back write_4k_fsync on the T14 ran
4.73-5.02 ms in all three runs, against 1.0-1.08 ms in r3. The slow
durable-write mode is not ToyOS's alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Japabu
Japabu marked this pull request as ready for review November 2, 2026 00:07
@Japabu
Japabu enabled auto-merge November 2, 2026 00:07
@Japabu
Japabu added this pull request to the merge queue Nov 2, 2026
Merged via the queue into main with commit c81fc83 Nov 2, 2026
10 checks passed
@Japabu
Japabu deleted the bench-tgl-display branch November 2, 2026 00:26
Japabu added a commit that referenced this pull request Nov 2, 2026
…se's display row is granted its window, and the PSR restart point is the durable brief

Rebased onto main c81fc83. #1062 took syscall 160 and #1116 took 161-163,
so SYS_DEVICE_FIRMWARE_WINDOW is 164, the first commit's message
notwithstanding. The profile has 166 bins, and the guard names 164.

#1149 runs tgl-display in benchcase "as images/system.toml runs it", so its
row carries the same `firmware = ["igd-opregion"]` grant.

The display track's PSR restart line now links the clean-room brief at its
durable evidence commit. Only facts.md there is an implementer's input.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Japabu added a commit that referenced this pull request Nov 2, 2026
…se's display row is granted its window, and the PSR restart point is the durable brief

Rebased onto main c81fc83. #1062 took syscall 160 and #1116 took 161-163,
so SYS_DEVICE_FIRMWARE_WINDOW is 164.
The profile has 166 bins, and the guard names 164.

#1149 runs tgl-display in benchcase "as images/system.toml runs it", so its
row carries the same `firmware = ["igd-opregion"]` grant.

The display track's PSR restart line now links the clean-room brief at its
durable evidence commit. Only facts.md there is an implementer's input.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant