2.2.0
๐ Hyperion Kernel v2.2.0 โ "Persistent Beast" ยท Linux 6.19.6
The USB stability, low-latency input, and desktop responsiveness release.
Every change below was sourced, tested, and documented against real kernel behavior โ not cargo-culted from a forum post.
โก Performance & Responsiveness
-
๐งต Sub-millisecond scheduler ticks via
SCHED_HRTICKโ The scheduler can now preempt at hrtimer resolution instead of coarse HZ=1000 tick boundaries. If you run PipeWire at a 64-frame quantum (โ1.3 ms at 48 kHz) or push above 120 FPS in games, this is the change that stops frame time jitter from a poorly-timed tick interrupt stealing your window. -
๐ญ
PREEMPT_LAZYadded alongsidePREEMPT_DYNAMICโ Linux 6.12's new fourth preemption mode. Switch at boot:preempt=lazyfor compile-heavy dev sessions,preempt=fullfor gaming and audio. No recompile, no ceremony. The previous binary choice of "full or nothing" is gone. -
๐ฆ THP vmemmap optimization (
HUGETLB_PAGE_OPTIMIZE_VMEMMAP) โ Frees 7struct pageentries (448 bytes) per 2 MB transparent huge page. When a game or JVM allocates hundreds of thousands of them, this is real RAM back in your pocket and fewer cache lines wasted on metadata nobody asked for. -
๐ซ Batched TLB shootdowns (
ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH) โ TLB invalidation IPIs are now coalesced before firing instead of being sent per-page. Vulkan multi-threaded command buffer submission stress-tests this path constantly. Less inter-core ping-pong, better frame consistency under GPU load. -
โ๏ธ CPPC frequency fast-switch (
ACPI_CPPC_CPUFREQ_FAST_SWITCH) โ P-state transitions can now happen directly from IRQ/scheduler context without a context switch detour. Eliminates the latency spike you'd see in a busy gaming loop where the scheduler tried to boost a core and had to wait in line. -
๐ญ AMD Platform Management Framework (
AMD_PMF) โ Full SmartShift and eco/performance profile support for Zen 4+ laptops. If you're on a Rembrandt or Phoenix-class chip,amd_pstate=activein the cmdline now has the full firmware backing it deserves. -
๐ Live kernel patching (
LIVEPATCH) โ Apply security fixes to a running kernel without rebooting running VMs, compile jobs, or games.kpatchand distribution kernel-livepatch packages work out of the box. -
๐ RCU lazy callbacks (
RCU_LAZY) โ Coalesces RCU callbacks onnohz_fullCPUs rather than forcing a tick to flush them. Meaningfully reduces interrupt noise on isolated cores running tight game loops or ML inference.
๐ฑ๏ธ USB โ The "Stop Killing My Keyboard" Pass
This is the big one. If you've ever had a keystroke dropped after a pause, a USB DAC click on resume, or a mouse stutter after 2 seconds of no movement โ this entire section exists for you.
-
๐
CONFIG_USB_AUTOSUSPEND_DELAY=-1โ Autosuspend killed at the kernel level โ The Linux USB stack's default 2-second idle timeout is now permanently-1(disabled) as a compile-time default. Every USB device on every port boots with autosuspend off โ no race against udev, no initramfs ordering gotcha, no TLP config winning at the wrong moment. This is baked into the binary.Why this matters: The default
2caused the kernel to suspend your keyboard if you paused typing for 2 seconds. The first keypress after that would trigger a 5โ50 ms USB resume, dropping the keystroke or producing a stuck Shift/Ctrl modifier. Completely silent, completely infuriating. -
๐ก๏ธ Five-layer autosuspend defence strategy documented inline โ Because "just set autosuspend=-1 on the cmdline" doesn't always work (dracut with early usbcore loading ignores it), the config now documents every failsafe:
- Kconfig compile-time default (
-1โ this file) - Kernel boot param:
usbcore.autosuspend=-1 - Udev rules:
ATTR{power/control}="on"per USB class /etc/modprobe.d/usbcore.conf:options usbcore autosuspend=-1- Sysfs verification commands to confirm it stuck at runtime
- Kconfig compile-time default (
-
โจ๏ธ 1000 Hz input polling via
usbhid.mousepoll=1/kbpoll=1/jspoll=1โ All three HID poll intervals dropped to 1 ms in the boot parameter recommendations. At the default 8 ms (125 Hz), your USB keyboard's keydown event can take up to 8 ms just to reach the kernel โ before scheduling latency even enters the picture. At 1 ms, you see the event within one scheduler tick. -
๐ USB audio (
SND_USB_AUDIO) annotated with DAC stability fix โ Documents theimplicit_fb=1andignore_ctl_error=1modprobe options for async USB DACs that drop connection after silence. Combined with class-based udevpower/control=onforbDeviceClass=="01", USB DACs no longer click, drop, or reconnect mid-session. -
๐ฎ xHCI autosuspend root-cause explanation added โ The
USB_XHCI_PCIentry now explains why USB3 specifically is worse than USB2 for this: xHCI permits aggressive port power gating that EHCI never did, which is why RTL8153 USB-Ethernet, wireless dongles, and USB DACs started dropping more frequently post-2021. -
๐พ
USB_DEFAULT_PERSIST=yannotated โ Suspend-to-RAM no longer tears down USB devices. Keyboard LEDs, audio sample rates, and hub topologies survive sleep/wake intact. Resume time for USB devices drops from 500 msโ2 s (full re-enumeration) to under 50 ms (state restore).
๐ฎ Gaming & Input
-
๐ฏ Steam Controller & Steam Deck gamepad (
HID_STEAM) โ Valve's controller is now properly recognised as an HID gamepad with gyro, trackpad, and haptic feedback, rather than falling back to raw mouse/keyboard. Steam Input picks it up cleanly. -
๐ฎ Nintendo Switch Pro / Joy-Con (
HID_NINTENDO) โ Switch Pro Controller and Joy-Con (L/R) fully supported over both USB and Bluetooth, including the IMU (gyroscope + accelerometer) exposed through the IIO subsystem. Works with Steam and standalone udev mapping tools. -
โฑ๏ธ Gamepad hrtimer polling (
JOYSTICK_HRTIMER) โ The underlying polling timer for joysticks and gamepads is now backed by hrtimers, enabling true 1 kHz+ polling rates on DualSense and Xbox Series controllers. Previously the poll interval was limited by whatever HZ grain the timer landed on. -
๐งฉ
SCHED_COREretained โ SMT sibling starvation prevention stays on. Prevents a hyperthread on an occupied physical core from stealing execution budget from your game's main thread. -
๐๏ธ AMD P-State active mode + EPP โ
amd_pstate=activedocumented in cmdline examples for both desktop and laptop profiles. The CPU hardware manages boost autonomously within the EPP hint โ faster single-core ramp-up than OS-controlled passive mode.
๐ฅ๏ธ Desktop & Wayland/Hyprland
-
๐ DRM fully built-in: Intel i915/Xe, AMD AMDGPU, Nouveau โ Zero module-load delay for GPU initialisation. The compositor (Hyprland, Sway, KWin) gets a fully-ready DRM device at the moment udev fires, not 50โ200 ms later after modprobe.
-
๐ท Vulkan timeline semaphores (
DRM_SYNCOBJ_TIMELINE) โ Required for Vulkan 1.2+ timeline semaphore support used by DXVK, vkd3d-proton, and modern Vulkan renderers. Without this, Proton games fall back to binary semaphore polling paths. -
๐ฑ๏ธ evdev built-in (
INPUT_EVDEV) โ Wayland compositors, libinput, and XWayland all read from/dev/input/eventN. Built-in ensures these nodes exist before the compositor's systemd unit starts, avoiding the "no pointer device" race at login. -
๐ PipeWire low-latency audio path โ
SND_HRTIMERbuilt-in +SCHED_HRTICKnow fully functional together. PipeWire's scheduler thread fires at true hrtimer resolution, allowing 64-sample quanta at 48 kHz (1.3 ms) without xruns under desktop load. -
๐ฑ๏ธ All drawing tablet drivers included โ Wacom (Intuos, Cintiq), XP-Pen, Huion, Gaomon, UGEE, Veikk via
HID_WACOM+HID_UCLOGIC+HID_HUION. Pen pressure, tilt, and eraser axis are exposed correctly โ not as a plain mouse pointer. -
๐บ ROCm compute (
HSA_AMD) + AMD Display Core FP (DRM_AMD_DC_FP) โ Hardware shader compilation, video encode offload, and full RDNA2+ display engine support (variable refresh rate, HDR metadata, DP 2.1) are all present without requiring out-of-tree patches.
๐ ๏ธ Developer & Observability
-
๐ Dynamic kernel probes built-in (
KPROBES,KRETPROBES,KPROBE_EVENTS,UPROBE_EVENTS) โbcctools (execsnoop,opensnoop,biolatency),bpftrace, andperf probeall work without additional configuration. Userspace probing viaUPROBE_EVENTSenables tracing Java, Go, Rust, and C++ function calls at runtime with zero source changes. -
๐บ๏ธ BPF sockmap acceleration (
NET_SOCK_MSG,SOCK_MAP) โ Zero-copy socket redirection between sockets, used by Cilium eBPF load balancing, Envoy proxy, and any eBPF-accelerated inter-process network path. -
๐ Modern NIC page recycling (
PAGE_POOL) โ NICs that support it (Intel igc/i225, Mellanox, AMD/Pensando) now reuse receive pages instead of allocating and freeing on every packet. Essential for XDP zero-copy receive and line-rate performance. -
๐ง Netlink-native ethtool (
ETHTOOL_NETLINK) โ Required by ethtool 5.x+, NetworkManager, and iproute2 for ring size tuning, coalesce settings, and RSS configuration. The legacy ioctl path still works; the new path adds structured, race-free updates. -
๐ BLAKE2b/BLAKE2s crypto (
CRYPTO_BLAKE2B,CRYPTO_BLAKE2S) โ Available for BTRFSb2checksums,resticbackups, WireGuard PSK hashing, andsystemd-homed. Faster than SHA-256 in software on x86_64 when AVX2 is available. -
๐ก Per-packet metadata slots (
SKB_EXTENSIONS) โ Lightweight extension mechanism for per-packet timestamps, marks, and offload hints. Required by TC flower, XDP metadata passes, and WireGuard's cookie mechanism.
๐๏ธ I/O & Memory
-
๐๏ธ ZSTD-compressed swap in RAM (
ZSWAP+ZRAM) โ ZSTD at the ZSWAP layer, backed by ZSMALLOC. Pages that would hit disk swap are compressed and held in RAM at roughly 3โ5ร compression ratio. On a 32 GB system under compile+game load, this effectively adds ~6โ8 GB of breathing room before the disk swap queue ever forms. -
๐ก MGLRU MMU-walk mode (
LRU_GEN_WALKS_MMU) โ Multi-generational LRU uses hardware page table access bits rather than a software scan to identify cold pages. More accurate cold-page detection = fewer false evictions of game assets and shader caches under memory pressure. -
โก io_uring built-in โ Every async I/O path in modern storage apps, Proton/Wine file access, and database engines uses this. Built-in means zero module load latency and no missing-uring surprises in stripped initramfs environments.
-
๐ NVMe multipath + auth + TCP built-in โ NVMe-oF initiators and targets are available from first userspace call without any module loading. NVMe over TCP and RDMA are there for NAS/storage cluster scenarios.
๐ Security (Hardened, Not Hobbled)
-
๐ก๏ธ
INIT_STACK_ALL_ZEROโ Every stack variable is zero-initialized on function entry. Kills entire classes of uninitialized-variable info leaks with one GCC flag. One compiler pass, zero runtime branches. -
๐ฒ
RANDOMIZE_KSTACK_OFFSETโ Randomizes the kernel stack pointer offset on every syscall entry. One extra instruction per syscall. Makes stack-layout-dependent exploits significantly harder to reproduce reliably. -
๐ Strict usercopy boundaries (
HARDENED_USERCOPY, fallback=n) โ Kernel-to-user copies that cross object boundaries are rejected outright, not silently truncated. The fallback was the escape hatch that made hardened usercopy somewhat theoretical in practice.
๐ Boot & Build
uname -r โ 6.19.6-Hyperion-2.2.0
uname -v โ #1 SMP PREEMPT Linux 6.19.6-Hyperion-2.2.0 (2026)
make -j$(nproc) LOCALVERSION="-Hyperion-2.2.0"
Recommended cmdline additions (AMD):
preempt=full threadirqs usbcore.autosuspend=-1 usbcore.use_persist=1
usbhid.mousepoll=1 usbhid.kbpoll=1 usbhid.jspoll=1
amd_pstate=active amd_iommu=pt transparent_hugepage=madvise
nohz_full=1-N rcu_nocbs=1-N skew_tick=1
Required companion files (see inline config comments for full content):
/etc/udev/rules.d/99-usb-power.rulesโ class-basedpower/control=on/etc/modprobe.d/usbcore.confโoptions usbcore autosuspend=-1/etc/modprobe.d/snd-usb-audio.confโoptions snd-usb-audio implicit_fb=1/etc/sysctl.d/99-hyperion.confโ vm/net tuning
All changes retain full DKMS compatibility. External modules (NVIDIA, v4l2loopback, xpadneo) continue to build and load normally against this tree.