I finally made suspend feature work on my Linux laptop with NVME SSD after it gave me a headache the past few days. So how can you do that too?
Suspend failures are not specific to a particular distribution but occur across all Linux distributions, as long as you use an NVME SSD. What we’re going to do here is more of a workaround than a fix.
To fix the broken suspend and system freeze after the laptop resumes, you should add The IOMMU=soft kernel parameter to your Grub configuration file.
What Is IOMMU?
You can consider an input-output memory management unit (IOMMU) as a chipset component that connects a direct-memory-access–capable (DMA-capable) I/O bus (such as a disk drive) to the main memory.

That means the IOMMU helps to filter and remap interrupts from peripheral devices like SSD, for example.
Unfortunately, when you use Linux on NVMe SSD, the IOMMU does not work as it should when your laptop suspends, making it inoperable until you reset the system.
Until the bug is fixed via a Kernel or firmware update, as a workaround, add the kernel parameter “iommu=soft” to prevent the usage of the hardware IOMMU and use a software replacement.
How to Pass the “iommu=soft” Parameter to the Kernel?
To pass the “iommu=soft” parameter to the kernel:
- Open a terminal window and enter the following command line:
sudo nano /etc/default/grub
- Then add the kernel parameter “
iommu=soft” to “GRUB_CMDLINE_LINUX_DEFAULT” line as follow:

- Save the change and update the grub configuration file using the update-grub command as root:
sudo update-grub
- Reboot and enjoy.
💬 Finally, I hope Linux developers will fix this bug in the next release because we need this feature. Don’t we?
🌟 If you like my work you can support it on Liberapay or Buy Me a Coffee.



Linux-Tech&More Comment Policy
Comments are welcomed and encouraged on this blog. Spam, abusive and off-topics comments will be deleted. Please read our Comments policy before commenting.
Join the Discussion!