How To Enable IOMMU | Step-By-Step For Intel And AMD

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

  1. BIOS/UEFI: Enable VT‑d (Intel) or AMD‑Vi/IOMMU (AMD) in the firmware, plus optional DMA protection if needed.
  2. Kernel parameter: Add the vendor‑specific boot parameter to GRUB_CMDLINE_LINUX and rebuild the bootloader config.
  3. Verify: Reboot and run dmesg | grep -e DMAR -e IOMMU to confirm the feature is active.

References & Sources