# # DarkForge Linux — Kernel Configuration # Target: Linux 6.19.8 # Hardware: AMD Ryzen 9 9950X3D / ASUS ROG CROSSHAIR X870E HERO / RTX 5090 # Generated: 2026-03-19 # # Every non-default choice has a comment explaining WHY it was set. # This config is hardware-specific — it targets exactly one machine. # # Usage: # cp config /path/to/linux-6.19.8/.config # cd /path/to/linux-6.19.8 # make olddefconfig # fill in any new options with defaults # make -j32 # # ============================================================================= # GENERAL SETUP # ============================================================================= CONFIG_LOCALVERSION="-darkforge" # Tag the kernel so we can identify our build in uname -r CONFIG_DEFAULT_HOSTNAME="darkforge" # Matches the system hostname from rc.conf CONFIG_SYSVIPC=y # Required by many applications (wine, steam, etc.) CONFIG_POSIX_MQUEUE=y # POSIX message queues — needed by some build systems and dbus CONFIG_AUDIT=n # Disable audit subsystem — not needed for a single-user gaming/dev machine CONFIG_CGROUPS=y # Control groups — needed by gamemode, containers, and some system tools CONFIG_NAMESPACES=y CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_UTS_NS=y CONFIG_IPC_NS=y # Namespaces — required by dpack build sandboxing (bubblewrap) CONFIG_CHECKPOINT_RESTORE=n # CRIU not needed CONFIG_BPF_SYSCALL=y # Extended BPF — useful for performance tools (perf, bpftrace) CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y # Embed the .config in the kernel and expose via /proc/config.gz # Invaluable for debugging and rebuilding # ============================================================================= # BUS & BLOCK LAYER — Required by NVMe, GPU, NIC, USB # ============================================================================= CONFIG_PCI=y CONFIG_PCI_MSI=y # PCI Express bus — required by NVMe, GPU (RTX 5090), NIC (RTL8125BN), USB # MSI/MSI-X interrupts required for modern PCIe devices CONFIG_BLOCK=y # Block device layer — required by NVMe, loop devices, and all storage CONFIG_PHYLIB=y # PHY (Physical Layer) library — required by R8169 Ethernet driver # Automatically selects REALTEK_PHY CONFIG_NET=y # Networking support — top-level dependency for all network drivers # ============================================================================= # CPU — AMD Ryzen 9 9950X3D (Zen 5, 16C/32T, 3D V-Cache) # ============================================================================= CONFIG_PROCESSOR_SELECT=y CONFIG_CPU_SUP_AMD=y CONFIG_CPU_SUP_INTEL=n # Only AMD support needed — no Intel CPUs on this system # CONFIG_MZEN5 if available in 6.19, otherwise fall back to MZEN4 # TODO: Verify CONFIG_MZEN5 exists in 6.19 kernel headers. # GCC 15.2.0 supports znver5 but kernel CONFIG symbol may still be MZEN4. CONFIG_MZEN4=y # Zen 4 is the closest available optimization level in most 6.19 builds. # The kernel's internal CPU model selection; compiler flags (-march=znver5) # are set separately in CFLAGS and provide the real Zen 5 optimization. CONFIG_X86_X2APIC=y # Extended APIC — required for >8 core AMD systems CONFIG_NR_CPUS=64 # Support up to 64 logical CPUs (9950X3D has 32 threads) # Slightly over-provisioned for future flexibility CONFIG_SMP=y # Symmetric Multi-Processing — obviously needed for 16 cores CONFIG_SCHED_MC=y # Multi-core scheduler support — aware of CCD/CCX topology CONFIG_X86_MCE=y CONFIG_X86_MCE_AMD=y # Machine Check Exception — hardware error reporting CONFIG_MICROCODE=y CONFIG_MICROCODE_AMD=y # AMD CPU microcode loading — critical for stability and security patches # Loaded early via initramfs CONFIG_AMD_MEM_ENCRYPT=y # Secure Memory Encryption (SME) — available on Zen 5 CONFIG_AMD_PMC=y # Platform Management Controller — power state management CONFIG_X86_AMD_PSTATE=y CONFIG_X86_AMD_PSTATE_DEFAULT_MODE=3 # AMD P-State EPP driver — preferred over acpi-cpufreq for Zen 5 # Mode 3 = guided autonomous mode (best for gaming — lets firmware optimize) CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y # CPU frequency scaling — schedutil is the default (integrates with scheduler) # Performance governor available for benchmarks, powersave for idle # ============================================================================= # SCHEDULER # ============================================================================= # EEVDF is the default scheduler in 6.19 (replaced CFS in 6.6) # No CONFIG option needed — it's the only option unless BORE patch is applied # If BORE is desired later, apply the patch and rebuild CONFIG_PREEMPT=y # Full kernel preemption — critical for low-latency gaming # Trades throughput for responsiveness, which is exactly what we want CONFIG_HZ_1000=y # 1000Hz timer tick — lowest latency scheduler tick rate # Important for gaming input responsiveness CONFIG_NO_HZ_FULL=y # Full tickless mode — no timer interrupts on idle cores # Reduces power and latency when cores aren't busy CONFIG_HIGH_RES_TIMERS=y # High-resolution timers — sub-millisecond precision for game loops # ============================================================================= # MEMORY # ============================================================================= CONFIG_TRANSPARENT_HUGEPAGE=y CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y # THP via madvise only — let applications opt in (games often benefit) # Not always-on to avoid fragmentation issues CONFIG_KSM=y # Kernel Same-page Merging — useful for VMs and wine prefixes CONFIG_ZSWAP=y CONFIG_ZSWAP_DEFAULT_ON=y CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD=y # Compressed swap cache — reduces swap I/O for the 96GB swap partition # Zstd gives best compression ratio for swap data CONFIG_HIBERNATION=y # Hibernate support — requires the 96GB swap partition >= RAM size # ============================================================================= # STORAGE — Samsung 9100 PRO NVMe (PCIe 5.0 x4) # ============================================================================= CONFIG_BLK_DEV_NVME=y # NVMe driver built-in (not module) — root filesystem is on NVMe # Must be built-in for EFISTUB boot without initramfs CONFIG_NVME_MULTIPATH=n # Single NVMe drive — no multipath needed CONFIG_BLK_DEV_LOOP=y # Loop devices — needed for ISO mounting and squashfs CONFIG_BLK_DEV_DM=n # Device mapper — not needed (no LVM, no LUKS) # ============================================================================= # FILESYSTEM # ============================================================================= CONFIG_EXT4_FS=y # ext4 built-in — root filesystem, must not be a module CONFIG_EXT4_FS_POSIX_ACL=y # POSIX ACLs on ext4 — needed by some applications CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y # tmpfs for /tmp, /run, and build sandboxes CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_UTF8=y # FAT/VFAT for the EFI System Partition CONFIG_FUSE_FS=y # FUSE — needed for NTFS3, appimage, and user-space filesystems CONFIG_SQUASHFS=y CONFIG_SQUASHFS_XZ=y CONFIG_SQUASHFS_ZSTD=y # Squashfs for the live ISO root filesystem CONFIG_PROC_FS=y CONFIG_SYSFS=y CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y # Essential virtual filesystems — devtmpfs auto-mount required for eudev CONFIG_EFI_PARTITION=y CONFIG_EFIVAR_FS=y CONFIG_EFI_STUB=y # *** CRITICAL *** — EFI stub enables the kernel to boot directly via UEFI # This is how DarkForge boots: no bootloader, kernel IS the EFI binary CONFIG_EFI=y CONFIG_EFI_MIXED=n # Pure 64-bit UEFI — no 32-bit EFI compatibility needed # ============================================================================= # GPU — NVIDIA RTX 5090 (Blackwell, GB202) # ============================================================================= CONFIG_DRM=y CONFIG_DRM_KMS_HELPER=y # Direct Rendering Manager — base graphics subsystem CONFIG_DRM_NOUVEAU=n # Disable nouveau — we use nvidia-open kernel modules exclusively # Nouveau doesn't support RTX 5090 and would conflict CONFIG_DRM_SIMPLEDRM=y # Simple framebuffer driver — provides console output before nvidia loads # This gives us a visible boot console via UEFI framebuffer CONFIG_FB=y CONFIG_FB_EFI=y # EFI framebuffer — early boot display before nvidia-drm takes over # nvidia-open modules (nvidia, nvidia-modeset, nvidia-drm, nvidia-uvm) # are built out-of-tree and loaded via /etc/rc.conf MODULES array # Minimum driver version: 570.86.16+ for RTX 5090 # ============================================================================= # NETWORK — Realtek RTL8125BN (2.5GbE on X870E Hero) # ============================================================================= CONFIG_NETDEVICES=y CONFIG_ETHERNET=y CONFIG_NET_VENDOR_REALTEK=y CONFIG_R8169=y # Realtek RTL8125BN 2.5GbE controller — the only NIC on this board # R8169 driver handles the entire RTL8125/8169 family CONFIG_INET=y CONFIG_IPV6=y CONFIG_PACKET=y CONFIG_UNIX=y # Basic networking stack — IPv4, IPv6, raw sockets, Unix domain sockets CONFIG_NETFILTER=y CONFIG_NF_CONNTRACK=y CONFIG_NF_TABLES=y CONFIG_NFT_NAT=y CONFIG_NFT_MASQ=y # Netfilter with nftables — basic firewall capabilities # Needed for NAT if running VMs or containers CONFIG_WIRELESS=n CONFIG_WLAN=n # No WiFi — ethernet only (per user decision) # ============================================================================= # USB — X870E has USB 3.2 Gen2x2 and USB4 # ============================================================================= CONFIG_USB=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_PCI=y # xHCI for USB 3.x/4.x host controller CONFIG_USB4=y CONFIG_THUNDERBOLT=y # USB4/Thunderbolt support — X870E has USB4 ports CONFIG_USB_STORAGE=y # USB mass storage — for USB drives and the live installer CONFIG_USB_HID=y CONFIG_HID=y CONFIG_HID_GENERIC=y # HID for USB keyboards, mice, and game controllers # ============================================================================= # INPUT — Gaming controllers # ============================================================================= CONFIG_INPUT_JOYSTICK=y CONFIG_JOYSTICK_XPAD=y CONFIG_JOYSTICK_XPAD_FF=y CONFIG_JOYSTICK_XPAD_LEDS=y # Xbox controller support with force feedback and LED control CONFIG_HID_SONY=y # PlayStation controller support (DualShock/DualSense) CONFIG_HID_STEAM=y # Steam controller support CONFIG_INPUT_FF_MEMLESS=y CONFIG_INPUT_JOYDEV=y CONFIG_INPUT_EVDEV=y # Force feedback, joydev, and evdev — required by SDL and gaming CONFIG_INPUT_TOUCHSCREEN=n # No touchscreen # ============================================================================= # SOUND — Onboard Realtek ALC4082 # ============================================================================= CONFIG_SOUND=y CONFIG_SND=y CONFIG_SND_HDA_INTEL=y CONFIG_SND_HDA_CODEC_REALTEK=y CONFIG_SND_HDA_CODEC_HDMI=y # HD Audio for onboard Realtek codec and HDMI audio out via GPU # PipeWire handles the userspace audio routing CONFIG_SND_USB_AUDIO=y # USB audio class — for USB DACs, headsets, microphones CONFIG_SOUND_OSS_CORE=n # No OSS emulation — ALSA only, PipeWire handles the rest # ============================================================================= # IOMMU — AMD-Vi (for potential GPU passthrough) # ============================================================================= CONFIG_AMD_IOMMU=y CONFIG_AMD_IOMMU_V2=y CONFIG_IOMMU_DEFAULT_DMA_LAZY=y # AMD IOMMU enabled for DMA remapping # Lazy mode is fine for single-GPU, no passthrough currently # Enables future VFIO/GPU passthrough if needed # ============================================================================= # VIRTUALIZATION (minimal — for potential future VM use) # ============================================================================= CONFIG_KVM=y CONFIG_KVM_AMD=y CONFIG_KVM_AMD_SEV=n # KVM for AMD — enables running VMs if needed # SEV not needed for a gaming workstation CONFIG_VFIO=y CONFIG_VFIO_PCI=y # VFIO for potential GPU passthrough # ============================================================================= # SECURITY (minimal — single-user system) # ============================================================================= CONFIG_SECURITY=y CONFIG_SECCOMP=y CONFIG_SECCOMP_FILTER=y # Seccomp — required by bubblewrap (dpack sandbox), Chrome, Steam CONFIG_SECURITY_SELINUX=n CONFIG_SECURITY_APPARMOR=n CONFIG_SECURITY_TOMOYO=n # No MAC — unnecessary overhead for a single-user system # ============================================================================= # DISABLE — Things we definitely don't need # ============================================================================= CONFIG_BLUETOOTH=n # Disabled per user decision CONFIG_PCMCIA=n CONFIG_ISDN=n CONFIG_INFINIBAND=n CONFIG_PARPORT=n CONFIG_I2O=n CONFIG_TELEPHONY=n CONFIG_HAMRADIO=n CONFIG_CAN=n CONFIG_ATALK=n CONFIG_X25=n CONFIG_DECNET=n CONFIG_ECONET=n CONFIG_WAN=n CONFIG_FDDI=n CONFIG_ATM=n # Legacy subsystems — none of this hardware exists CONFIG_DRM_RADEON=n CONFIG_DRM_AMDGPU=n CONFIG_DRM_I915=n # Disable other GPU drivers — only NVIDIA (out-of-tree) on this system CONFIG_IWLWIFI=n CONFIG_NET_VENDOR_INTEL=n CONFIG_NET_VENDOR_BROADCOM=n CONFIG_NET_VENDOR_QUALCOMM=n # Disable unused network drivers CONFIG_INPUT_TABLET=n CONFIG_INPUT_MISC=n # Disable unused input devices (INPUT_TOUCHSCREEN already set above) # ============================================================================= # MISC # ============================================================================= CONFIG_PRINTK=y CONFIG_MAGIC_SYSRQ=y # SysRq for emergency debugging CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y # Kernel modules — needed for nvidia-open and other out-of-tree modules CONFIG_KALLSYMS=y CONFIG_FUTEX=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_AIO=y CONFIG_IO_URING=y # Essential syscalls needed by modern applications CONFIG_PERF_EVENTS=y # Performance monitoring — useful for profiling games and builds CONFIG_DNOTIFY=y CONFIG_INOTIFY_USER=y CONFIG_FANOTIFY=y # Filesystem notifications — needed by many desktop applications CONFIG_EXPERT=y # Enable expert mode to access all configuration options # ============================================================================= # KERNEL COMMAND LINE # ============================================================================= CONFIG_CMDLINE_BOOL=y CONFIG_CMDLINE="console=tty0 console=ttyS0,115200n8" CONFIG_CMDLINE_OVERRIDE=n # Embedded default command line for EFISTUB boot: # - console=tty0: keep framebuffer console for real hardware # - console=ttyS0: serial console for QEMU testing and debugging # CMDLINE_OVERRIDE=n allows efibootmgr to append/override at boot time # Root device is set per-boot: # Live ISO: root= is handled by the initramfs (mounts squashfs) # Installed: efibootmgr -u "root=/dev/nvme0n1p2 rootfstype=ext4" CONFIG_BLK_DEV_INITRD=y # Initramfs support — needed for live ISO boot (squashfs overlay) # Installed system boots without initramfs (NVMe + ext4 are built-in) CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y # Serial console support — needed for QEMU testing and remote debugging