Enable IOMMU by turning on VT-d (Intel) or AMD-Vi (AMD) in BIOS/UEFI, then adding the correct kernel boot parameter on Linux.
If you need IOMMU for PCI passthrough, virtualization, or anti-cheat compatibility, enabling it takes two steps: first in your motherboard’s firmware, then on Linux with a kernel boot parameter. These instructions cover the Intel and AMD variations, so you can get it right the first time.
What Is IOMMU And Why Enable It?
IOMMU (Input‑Output Memory Management Unit) is a hardware feature that lets the operating system control how devices access memory. Intel calls it VT‑d; AMD calls it AMD‑Vi. Enabling IOMMU is required for passing PCI devices to virtual machines and for some anti‑cheat systems that rely on DMA protection.
Step 1: Enable IOMMU In Your UEFI/BIOS
Reboot and enter your motherboard’s UEFI firmware (usually by pressing Del, F2, or F10 during startup). The IOMMU setting is typically under Advanced, Chipset, or System Agent menus. On Intel systems look for VT‑d; on AMD look for IOMMU or AMD‑Vi. The table below lists common paths from vendor documentation.
| Platform | BIOS Path | Setting |
|---|---|---|
| Intel – EMAC guide | System Agent (SA) Configuration | VT‑d → Enabled |
| Intel – Akros guide | Chipset Configuration | VT‑d → Enabled |
| Intel – EMAC optional | Control IOMMU Pre‑boot behavior | Enable IOMMU during boot |
| Intel – Akros optional | Control IOMMU Pre‑boot behavior | Enable IOMMU during boot |
| AMD – FACEIT guide | Advanced CPU Configuration → AMD CBS | IOMMU → Enabled |
| AMD – FACEIT optional | AMD CBS | DMA Protection → Enabled |
| AMD – FACEIT optional | AMD CBS | DMAr Support → Enabled |
Once you’ve enabled the setting, save changes and reboot.
Step 2: Add The Kernel Boot Parameter On Linux
On Linux you must append the correct vendor parameter to the kernel command line. For Intel add intel_iommu=on; for AMD add amd_iommu=on. Red Hat’s Virtualization installation guide describes this exact process for both CPU brands.
Edit /etc/default/grub as root. Find the line GRUB_CMDLINE_LINUX and add the parameter inside the quotes, e.g., GRUB_CMDLINE_LINUX="intel_iommu=on". Save the file, then regenerate your bootloader configuration:
- Ubuntu/Debian/Proxmox:
sudo update-grub - Red Hat / CentOS / Fedora:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Proxmox users: the process is identical to Debian because Proxmox is Debian‑based. After updating, reboot.
Step 3: Verify IOMMU Is Active
After rebooting, open a terminal and run dmesg | grep -e DMAR -e IOMMU. You should see lines like DMAR: IOMMU enabled (Intel) or IOMMU enabled (AMD). If nothing appears, the setting was lost or the kernel parameter didn’t take effect.
Troubleshooting Common IOMMU Problems
If IOMMU doesn’t work, the most common causes are a missing BIOS setting, an incorrect or missing kernel parameter, or hardware that doesn’t support IOMMU. The table below covers the typical issues.
| Issue | Likely Cause | Solution |
|---|---|---|
| IOMMU option not found in BIOS | Motherboard/CPU doesn’t support IOMMU | Check CPU and chipset specifications. If unsupported, upgrade. |
dmesg shows no DMAR/IOMMU after reboot |
Kernel parameter wasn’t applied | Re‑check /etc/default/grub and regenerate boot config. |
intel_iommu=on ignored on AMD |
Wrong parameter for the CPU vendor | Use amd_iommu=on instead. |
| VFIO devices not working | VFIO modules not loaded | Add vfio, vfio_iommu_type1, vfio_pci, vfio_virqfd to /etc/modules. |
| Anti‑cheat still fails (e.g., FACEIT) | Extra BIOS settings required | Enable DMA Protection and DMAr Support if available. |
| IOMMU enabled but performance issues | Some hardware needs additional tuning | Try adding iommu=pt to the kernel parameter for pass‑through mode. |
| Can’t find VT‑d but have Intel CPU | Option hidden or named differently | Look for “Intel Virtualization Technology” under CPU features; if found, VT‑d is likely active by default. |
Enable IOMMU In Three Steps
- BIOS/UEFI: Enable VT‑d (Intel) or AMD‑Vi/IOMMU (AMD) in the firmware, plus optional DMA protection if needed.
- Kernel parameter: Add the vendor‑specific boot parameter to
GRUB_CMDLINE_LINUXand rebuild the bootloader config. - Verify: Reboot and run
dmesg | grep -e DMAR -e IOMMUto confirm the feature is active.
References & Sources
- Red Hat. Configuring a Hypervisor Host for PCI Pass‑Through. Official guide for Intel and AMD IOMMU kernel parameters.
- Proxmox VE. PCI Passthrough Wiki. Verification command and VFIO module guidance.
