testsAndMisc/linux_configuration/fixes/60-amd-x3d-vcache-mode.rules
Krzysztof kuhy Rudnicki 32b94bfbd2
Some checks failed
dependency freshness / dependencies on newest stable (push) Has been cancelled
md-naming / markdown naming convention (push) Has been cancelled
Pre-commit checks / pre-commit (${{ matrix.group }}) (mypy, mypy) (push) Has been cancelled
Pre-commit checks / pre-commit (${{ matrix.group }}) (pylint, pylint) (push) Has been cancelled
Pre-commit checks / pre-commit (${{ matrix.group }}) (rest, ) (push) Has been cancelled
Pre-commit checks / pre-commit (${{ matrix.group }}) (shellcheck, shellcheck) (push) Has been cancelled
Python tests / test (push) Has been cancelled
repo-contract / repo contract (push) Has been cancelled
Shell tests / shell-tests (push) Has been cancelled
Shell tests / lib-tests (push) Has been cancelled
Shell tests / arch-tests (push) Has been cancelled
Set AMD X3D V-cache mode to cache via udev
amd_x3d_mode defaulted to frequency, so the scheduler preferred the
non-V-cache CCD. kuhy chose cache: games prefer CPUs 0-5,12-17; background
jobs are already pinned to 6-11,18-23.

A udev rule matches DRIVER amd_x3d_vcache on add (boot coldplug) and bind
(any rebind), so it hard-codes no device name and survives a rebind,
unlike a tmpfiles w line. fixes/fix_amd_x3d_vcache.sh installs it, fires
a synthetic bind event and checks the mode ends on cache. Same layout as
fix_webcam_c270.sh, with a bats test.

Host: mode frequency -> cache, prefcore ranking now favours 0-5,12-17.
vmbox has no X3D device: only the install step was proven there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WzxdWYWDKuhbBAoNETfoB9
2026-11-12 13:03:12 +01:00

13 lines
790 B
Plaintext

# AMD X3D (dual-CCD V-cache) CPU: prefer the V-cache CCD for games.
# amd_x3d_mode=cache makes the scheduler rank the V-cache CCD (CPUs 0-5,12-17)
# above the frequency CCD; the firmware default is "frequency". Background jobs
# are already pinned to the other CCD (6-11,18-23).
#
# Why udev and not tmpfiles.d: a tmpfiles `w` line needs the exact device path
# (a firmware-assigned ACPI name) and runs once at boot, so it
# misses a driver rebind or module reload. This rule matches the DRIVER, hard-
# codes no device name, and fires on "add" (boot coldplug, driver already
# bound) and on "bind" (every later driver (re)bind, e.g. modprobe -r/+).
# Installed by fixes/fix_amd_x3d_vcache.sh.
ACTION=="add|bind", SUBSYSTEM=="platform", DRIVER=="amd_x3d_vcache", ATTR{amd_x3d_mode}="cache"