Skip to content

PS4 Kernel "Strawberry" (Version 6.18.21)

Choose a tag to compare

@rmuxnet rmuxnet released this 03 Apr 18:42
· 8 commits to 6.18.21-Strawberry since this release

Graphics and Display (AMDGPU)

  • Applied custom PS4 bridge and encoder patches to the amdgpu driver.
  • Fixed a premature drm_kms_helper_poll_enable() call within ps4_bridge to ensure correct monitor hotplug and power-cycle behavior.
  • Updated HDMI hotplug detection by utilizing DPCD AUX status and enabling DRM connector polling, restoring hotplug behavior without Aeolia HPD interrupts.
  • Added a one-shot SCLK force driver for Liverpool and Gladius GPUs to prevent clock locking at strap frequencies post-GFX soft-reset.
  • Corrected the ps4_bridge attach callback signature for Linux 6.18 compatibility.

System Hardware and Thermal Management

  • Introduced a hardware monitor (hwmon) driver (ps4-fan) for Aeolia/Belize fan threshold and RPM tracking.
  • Introduced a front panel LED driver (ps4-led) for Aeolia/Belize southbridges with an active thermal polling mode tied to APU temperatures.
  • Lowered the baseline fan threshold limit in the PS4 driver.
  • Enabled the AC_DIG1_ENABLE flag on R6xx converters during initialization to correct DP-to-HDMI audio routing on the Liverpool APU (sound/hda: atihdmi).

Core Performance and Scheduling

  • Integrated the BORE 6.6.2 CPU scheduler.
  • Added the Reflex CPU governor to the cpufreq subsystem.
  • Applied supplementary kernel patches targeting cryptography and sched-ext.

Networking Subsystem

  • Resolved an interrupt storm issue specific to the PS4 Aeolia (CXD90025G) southbridge within the sky2 Ethernet driver.
  • Fixed mt76x8 wireless driver build errors for Linux 6.15+ by updating adapter signatures and replacing deprecated from_timer() calls with container_of().
  • Published a research document detailing diagnostic data, hardware architecture, and patch history for PS4 Aeolia sky2 networking.

Build Infrastructure and CI/CD

  • Refactored GitHub Actions paths, execution commands, and the build-kernel_latest workflow for procedural clarity.
  • Updated primary build configurations, builder scripts, and build.sh.
  • Initialized the core builder infrastructure into the repository.

Profile Differences: Server vs. General Use

The kernel is distributed in two distinct ThinLTO build profiles, each optimized at the configuration level for specific workload requirements. Both profiles share baseline hardware optimizations (NUMA disabled, MGLRU enabled, ZSTD compression, bare-metal PS4 targeting), but diverge significantly in scheduling, memory management, and latency behavior.

Feature Area General (Gaming / Desktop) Server (Headless / Services)
Target Workload Low latency, burst-aware tasks (gaming, desktop environments). Maximum throughput, batch processing, and hosted services.
Preemption & Timer PREEMPT=y, HZ=1000, NO_HZ_FULL (1ms resolution, tickless on active game cores). PREEMPT_VOLUNTARY, HZ=250, NO_HZ_IDLE (~1-2% CPU saving via reduced timer interrupts).
CPU Scheduler BORE scheduler enabled for interactive burst prioritization. Standard scheduler (BORE and autogroup disabled).
CPU Governor schedutil / reflex (dynamic frequency scaling). performance (clocks locked at maximum, zero scaling latency).
Security Mitigations Disabled (strips x86 mitigation overhead to minimize syscall/context-switch latency). Enabled (preserves standard security boundaries for exposed services).
Memory Management (THP) always (Transparent Hugepages actively benefit shader caches and Wine/Proton heaps). madvise (limits THP to opted-in applications to prevent memory bloat and compaction spikes).
Cgroups & Memcg Disabled (removes alloc_pages hook overhead since containers are not used). Enabled (supports containerization, systemd-oomd, and CPU quota enforcement via CFS bandwidth).
I/O Scheduler bfq (isolates active game I/O from background noise). mq-deadline (predictable latency under high queue depths for SSD/HDD throughput).
Network Qdisc fq_codel (ideal default for mixed-latency desktop traffic). fq (strict per-flow pacing, required partner for optimal TCP BBR throughput).