Tools: Ultimate Guide: Fixing NVIDIA BadTLP PCIe Freezes on Linux - or an ASUS TUF gaming laptop odyssey
Preface
System specs
Configs
What Each Parameter Does — and What It Fixed
Validation Firstly, I truly hope this little article could help someone with similar problem. And if anyone feels that they can contribute by improving the informations here, I will be happy to see it in comments. I was setting up Fedora 44 on an ASUS TUF Gaming laptop (AMD Ryzen 7 7435HS, NVIDIA RTX 3050). Everything seemed fine until, about an hour into normal use, the system started falling apart. GNOME would restart itself out of nowhere, dropping every open window mid-work. Firefox crashed taking the session with it. Sometimes, at boot time, a scary kernel panic happened or the entire screen started freeze, forcing me to hold the power button for a hard reset every single time. Switching drivers, reinstalling, updating the BIOS — nothing helped. The BIOS was already at the latest available version. This is apparently a known pain point with ASUS TUF laptops running Linux. And i could see it happen with my own eyes in Debian 13, Ubuntu 26.04 and CachyOS too. It's not a distro problem, not a driver problem, and not a firmware problem. From what I could understand, it's a combination of circumstances such as a kernel-level PCIe power management issue in a specific hardware/firmware that can to be bypassed through simple configurations. A word before you proceed: this is my personal experience on a specific machine. The configurations below solved the problem completely on my setup, but Linux hardware support varies a lot — different ASUS TUF models, GPU variants, kernel versions, or driver combinations may behave differently. Treat this as a starting point, not a guaranteed fix. If something doesn't apply to your setup or makes things worse, revert and investigate from there. Always back up your GRUB config before editing it. Fedora 44 | Kernel 7.0.4-200.fc44.x86_64 | NVIDIA RTX 3050 Laptop No integrated graphic card The kernel logs made the root cause clear: These BadTLP errors were appearing dozens of times per second, flooding the journal continuously from the moment the desktop loaded. Each one is a failed communication between the GPU and the PCIe bus — individually "correctable", but in this volume they overwhelm the error handling and destabilize everything that touches the GPU. The culprit is PCIe ASPM (Active State Power Management) — the mechanism that puts the PCIe link into low-power states between data transfers. On this hardware combination, the ASPM handshake between the AMD platform and the NVIDIA GPU breaks down, producing the BadTLP flood. The fix is in the kernel and driver configuration, not the driver choice itself. Add to GRUB_CMDLINE_LINUX: pcie_aspm=off
nvidia.NVreg_PreserveVideoMemoryAllocations=1 pcie_aspm=off fixed: BadTLP flood, system freezes, GNOME crashes
Disables PCIe power state negotiation globally. ASPM puts the PCIe link into low-power states between transfers. This was the single most impactful change. Downside: ~30–60 min less battery life. This broken my laptop "poweroff" capacity, but the next config fix it. nvidia.NVreg_PreserveVideoMemoryAllocations=1: fixed: system hanging on shutdown/reboot. Tells the NVIDIA driver to preserve GPU memory allocations and coordinate state properly during any power transition — shutdown, reboot, suspend, hibernate. Without this, the kernel sends the shutdown signal and then waits for the GPU to confirm it has released its resources. The GPU never responds cleanly, so the system sits at a blank screen indefinitely. The only way out is a hard power cut. This parameter makes the driver handle that transition gracefully instead of leaving the kernel waiting forever. If nothing shows up after a few minutes of normal use, you're good. Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse