<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pedro Tolvo</title>
    <description>The latest articles on DEV Community by Pedro Tolvo (@tolvo).</description>
    <link>https://dev.to/tolvo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3923859%2Fbd2fb133-f7a6-450d-82ad-1ebe4ad6dc0c.jpg</url>
      <title>DEV Community: Pedro Tolvo</title>
      <link>https://dev.to/tolvo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tolvo"/>
    <language>en</language>
    <item>
      <title>Fixing NVIDIA BadTLP PCIe Freezes on Linux - or an ASUS TUF gaming laptop odyssey</title>
      <dc:creator>Pedro Tolvo</dc:creator>
      <pubDate>Sun, 10 May 2026 22:59:09 +0000</pubDate>
      <link>https://dev.to/tolvo/fixing-nvidia-badtlp-pcie-freezes-on-linux-or-an-asus-tuf-gaming-laptop-odyssey-hp9</link>
      <guid>https://dev.to/tolvo/fixing-nvidia-badtlp-pcie-freezes-on-linux-or-an-asus-tuf-gaming-laptop-odyssey-hp9</guid>
      <description>&lt;h3&gt;
  
  
  Preface
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;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.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A word before you proceed:&lt;/em&gt; 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.&lt;/p&gt;

&lt;h3&gt;
  
  
  System specs
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Fedora 44 | Kernel 7.0.4-200.fc44.x86_64 | NVIDIA RTX 3050 Laptop&lt;/p&gt;

&lt;p&gt;No integrated graphic card&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Logs
&lt;/h3&gt;

&lt;p&gt;The kernel logs made the root cause clear:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;kernel: nouveau 0000:01:00.0: PCIe Bus Error: severity=Correctable, type=Data Link Layer
kernel: nouveau 0000:01:00.0: [ 6] BadTLP
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These BadTLP errors were appearing dozens of times per second, flooding the journal continuously from the moment the desktop loaded. &lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configs
&lt;/h3&gt;

&lt;p&gt;Add to GRUB_CMDLINE_LINUX: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;pcie_aspm=off&lt;br&gt;
nvidia.NVreg_PreserveVideoMemoryAllocations=1&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;GRUB_CMDLINE_LINUX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"rhgb quiet pcie_aspm=off rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia.NVreg_PreserveVideoMemoryAllocations=1"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  What Each Parameter Does — and What It Fixed
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;pcie_aspm=off&lt;/strong&gt; fixed: BadTLP flood, system freezes, GNOME crashes&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;nvidia.NVreg_PreserveVideoMemoryAllocations=1&lt;/strong&gt;: 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.&lt;/p&gt;
&lt;h3&gt;
  
  
  Apply
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dracut &lt;span class="nt"&gt;--force&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;grub2-mkconfig &lt;span class="nt"&gt;-o&lt;/span&gt; /etc/default/grub &lt;span class="c"&gt;# in fedora 44 - to others distro, the path can be different&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Validation
&lt;/h3&gt;

&lt;p&gt;After rebooting:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;journalctl &lt;span class="nt"&gt;-k&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;BadTLP  &lt;span class="c"&gt;# should return nothing&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;journalctl &lt;span class="nt"&gt;-kf&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"BadTLP&lt;/span&gt;&lt;span class="se"&gt;\|&lt;/span&gt;&lt;span class="s2"&gt;AER"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If nothing shows up after a few minutes of normal use, you're good.&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>linux</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
