Skip to content

fix: Turbo on CPUs where falcond's build crashes (#4, Ivy Bridge) - #13

Merged
ruscher merged 5 commits into
mainfrom
fix/falcond-incompatible-build-fallback
Oct 8, 2026
Merged

ruscher merged 5 commits into
mainfrom
fix/falcond-incompatible-build-fallback

Conversation

@ruscher

@ruscher ruscher commented Oct 8, 2026

Copy link
Copy Markdown
Member

A second report of #4: Intel Xeon E3-1245 V2 (Ivy Bridge, x86-64-v2: AVX and F16C, no AVX2, BMI1, BMI2, FMA, LZCNT, MOVBE), Radeon RX 550, falcond 2.0.14-1 (x86-64-v3). falcond dies with status=4/ILL, Turbo off answered falcond.service is still failed; not disabled yet (fixed in #12), and the packaged falcond dies the same way under qemu-x86_64 -cpu IvyBridge.

Turbo without a falcond build that crashes here

After #12 the crash is explained, but Turbo's state was falcond's: with the v3 package Turbo never came on, and each Turbo on started falcond again (five crashes).

  • The helper records a falcond that dies on an illegal instruction in /var/lib/bigame-mode/game-backend.incompatible.json: binary size and mtime (the package's build) and the CPU's x86-64 level.
  • While it matches, falcond is not started again; Capabilities::falcond_usable is false, so Turbo works as without falcond: the Booster applies the general settings and owns the power profile, and Turbo's state follows the Booster.
  • The Turbo report, Details and the health check explain why, after a reboot too.
  • A package update changes the binary and falcond is tried again; the record goes once falcond stays up.

The root fix is still falcond's package built with -Dcpu=baseline (docs/falcond/PKGBUILD-baseline.patch).

Also from the same log

  • ldconfig taken for the game: pressure-vessel's ldconfig, waiting on a lock for ~10 s, was announced as BLOODSTRIKE. ldconfig/ldconfig.real are infrastructure now (test with the user's process tree).
  • "Failed to set text … from markup" errors: use_markup(false) in a builder does not cover a subtitle set in the same builder (checked in gtk-rs, both orders). Rows that show a shell command (&&) now set their text after the build. Only the log was affected.

Tests

  • cargo test --workspace (863 + 23 + 47), clippy (pedantic) and fmt clean; new tests for the record (same build, update, another CPU, damaged record), the Booster owning the power profile, and the ldconfig tree.
  • 29 catalogues updated and translated; msgfmt --check --check-format passes.
  • Replayed in a container with systemd 261, the real helper, the client and falcond 2.0.14-1, all under qemu-x86_64 -cpu IvyBridge:
Step Result
Turbo on falcond crashes (5 starts), recorded with cpu_level: 2, disabled; Turbo on
Turbo off, Turbo on no new falcond start; Turbo on
Same build, new mtime (still v3) one more try, recorded again; Turbo on
Baseline build falcond runs, record removed, Turbo's state is falcond's again
Reboot Turbo still on, falcond disabled; health check names the missing AVX2, BMI1, BMI2, FMA, LZCNT, MOVBE

pressure-vessel rebuilds the Steam Linux Runtime container's library
cache with ldconfig before Proton starts. In a user's log it waited
about 10 s on a busy lock, was the busiest non-Wine process under the
game's reaper, and was announced as the game (BLOODSTRIKE,
process=ldconfig), then "no longer running" when it exited.

ldconfig and Debian's ldconfig.real are now infrastructure.
use_markup(false) in an AdwActionRow builder does not protect a title
or subtitle given in the same builder: construction applies `subtitle`
while `use-markup` is still on, whatever the builder's order. A fix
command with `&&` (the NTSync one) logged GTK's "Failed to set text …
from markup" as an error on every Details refresh, which the log view
showed as an ERROR. The text on screen was right.

The rows that show commands now set their title and subtitle after the
build.
A second report of #4, on a Xeon E3-1245 V2 (Ivy Bridge, x86-64-v2).
After the previous fixes the crash was explained, but Turbo's state was
falcond's: with the x86-64-v3 package it never stayed up, so Turbo never
came on, and every Turbo on started it again, five crashes each time.

When falcond dies on an illegal instruction, the helper now records the
build in /var/lib/bigame-mode/game-backend.incompatible.json: the
binary's size and modification time (set by pacman from the package)
and the processor's x86-64 level. While they match:

- the helper refuses to start falcond again;
- Capabilities::falcond_usable is false, so the Booster owns the power
  profile and V-Cache as without falcond, and Turbo's state, reconcile
  and tidy-up follow the Booster;
- Turbo on goes on without falcond and says why, including the first
  time, right after the crash;
- the health check and Details explain the crash after a reboot too,
  when systemd no longer does.

A package update changes the binary and falcond is tried again; the
record is removed once falcond stays up. Reinstalling the same build
keeps it.

Replayed with systemd 261, the helper, the client and falcond 2.0.14-1
under qemu-x86_64 -cpu IvyBridge: Turbo on, off and on (no new start),
an update that is still v3 (one retry), a baseline build (record
removed, falcond runs) and a reboot.
The template follows the sources; the new message is translated in all 29 catalogues and msgfmt --check --check-format passes.
@ruscher
ruscher merged commit 2e81f9d into main Oct 8, 2026
3 checks passed
@ruscher ruscher mentioned this pull request Oct 9, 2026
ruscher added a commit to ruscher/bigamemode that referenced this pull request Oct 9, 2026
pkgver, the workspace version and the AppStream release agree, as the
package check requires. The release notes and the README's "What's new"
cover what was merged since 2.3.0:

- Turbo comes on without a falcond build that crashes on the processor
  (x86-64-v3 falcond on Sandy Bridge, Ivy Bridge), and that build is not
  started again until the package changes (#4, biglinux#12, biglinux#13);
- a falcond that crashes at start is left disabled, and Turbo can be
  turned off after it (biglinux#12);
- the Steam runtime's ldconfig is not taken for the game (biglinux#13);
- fix commands with && no longer log a markup error (biglinux#13);
- the BigLinux builders receive only the branches they can build (biglinux#14).
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