Enabling both Intel and AMD iommu

Firstly, I need to describe problem I had to solve today. I decided to install virtualized Ubuntu, because Neverwineter Nights: EE display broken Polish letters. I decided to passthrought an amd cart to it. But my system freeze after running VM. I discovered that I probably removed amd_iommu=1 kernel parameter and keeps only intel_iommu=1 .

I read I need to match iommu to CPU vendor and cannot enable AMD iommu if I had intel CPU. My questions are:

  • Can I enable AMD iommu, when I have intel CPU, Intel integrated GPU and AMD discrete GPU?
  • Can I enable both intel and amd iommu and passthrought AMD dedicated GPU to VM?

Although I posted the following about a year and a half ago, it points to “live documentation” that should be the latest and current for most common virtualization.


In the future,
You’ll likely get a better response and find answers on your own if you post or search the Virtualization Forum for anything related to virtualization or isolation (like containers).


I read post pointed by your link and some articles about setup. If I understood everything, to makes things works, I need to make my GPU invisible to X and any graphics driver in system. Am I right?

I used also:

And indedev-dettach command, which two cases:

  1. When I „dettach” only pci_0000_01_00_0 (Amd Topaz Graphic) my system freezes,
  2. When I do this with pci_0000_00_1c_0 and next pci_0000_01_00_0 my system freezes (that’s odd, because I think child node will be detached, when parent is)

  +- net_lo_00_00_00_00_00_00
  +- net_virbr0_nic_52_54_00_f9_c6_ef
  +- pci_0000_00_00_0
  +- pci_0000_00_02_0
  |   |
  |   +- drm_card0
  |   +- drm_renderD128
  +- pci_0000_00_04_0
  +- pci_0000_00_08_0
  +- pci_0000_00_14_0
  |   |
  |   +- usb_usb1
  |   |   |
  |   |   +- usb_1_0_1_0
  |   |   +- usb_1_2
  |   |   |   |
  |   |   |   +- usb_1_2_1_0
  |   |   |   +- usb_1_2_1_1
  |   |   |     
  |   |   +- usb_1_4
  |   |   |   |
  |   |   |   +- usb_1_4_1_0
  |   |   |   +- usb_1_4_1_1
  |   |   |     
  |   |   +- usb_1_5
  |   |       |
  |   |       +- usb_1_5_1_0
  |   |       +- usb_1_5_1_1
  |   |         
  |   +- usb_usb2
  |       |
  |       +- usb_2_0_1_0
  +- pci_0000_00_14_2
  +- pci_0000_00_16_0
  +- pci_0000_00_17_0
  |   |
  |   +- scsi_host0
  |   |   |
  |   |   +- scsi_target0_0_0
  |   |       |
  |   |       +- scsi_0_0_0_0
  |   |           |
  |   |           +- block_sda_WDC_WD10SPCX_24HWST1_WD_WXN1A56D4FZJ
  |   |           +- scsi_generic_sg0
  |   |             
  |   +- scsi_host1
  |   |   |
  |   |   +- scsi_target1_0_0
  |   |       |
  |   |       +- scsi_1_0_0_0
  |   |           |
  |   |           +- block_sr0_hp_DVDRW_GUE1N_KLFH4724620
  |   |           +- scsi_generic_sg1
  |   |             
  |   +- scsi_host2
  +- pci_0000_00_1c_0
  |   |
  |   +- pci_0000_01_00_0
  |       |
  |       +- drm_card1
  |       +- drm_renderD129
  +- pci_0000_00_1c_4
  |   |
  |   +- pci_0000_02_00_0
  |       |
  |       +- net_eno1_f4_30_b9_53_a2_77
  +- pci_0000_00_1c_5
  |   |
  |   +- pci_0000_03_00_0
  |       |
  |       +- net_wlo1_10_f0_05_cd_7f_85
  +- pci_0000_00_1f_0
  +- pci_0000_00_1f_2
  +- pci_0000_00_1f_3
  +- pci_0000_00_1f_4

My lspci output:

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 02)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02)
00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 02)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:17.0 SATA controller: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] (rev 21)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #1 (rev f1)
00:1c.4 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 (rev f1)
00:1c.5 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #6 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Intel(R) 100 Series Chipset Family LPC Controller/eSPI Controller - 9D4E (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
01:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Topaz XT [Radeon R7 M260/M265 / M340/M360 / M440/M445] (rev 83)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
03:00.0 Network controller: Intel Corporation Dual Band Wireless-AC 3168NGW [Stone Peak] (rev 10)

I use intel_iommu=on kernel parameter.

That Fedora article is a bit weird… even after thinking about that for a few minutes, it’s an odd amalgam of methods and my guess won’t give you want you want, which is likely hardware pass through. The Fedora article appears to configure a dedicated GPU, but uses virtualization drivers instead of direct hardware access. Is that what you want?

Before going any further,
You should clarify your objectives…
Do you simply want to configure a specific GPU or do you really want to set up direct hardware access?
If you’re perhaps not entirely clear on the above essential question, you should state your non-technical requirement… What kind of application or use do you need to set up in your Guest that it can’t share the GPU the Host is using?
Libvirt’s vm-manager can be used with a multitude of different virtualization technologies, which virtualization are you trying to set up?
If you are installing KVM, Xen or LXC, did you use the YaST Virtualization module to install (your should)? That’s the easiest way to install these virtualization technologies so that you are starting with a known configuration and generally common functionality. Otherwise, you will have to install and configure several things on your own manually.


If you didn’t already know, you can’t do a pass-through for any devices that your Host system requires, and that applies in particular to the GPU.
When you do a hardware pass-through, the Guest will have monopoly use of that device, and that includes no access by the HostOS.
I see that you have both an Intel and an AMD GPUs.
Whichever one your Host is using you should <not> “pass through” that to your Guest.

A hardware pass-through is generally considered an advanced topic for special cases… Are you an advanced user of Virtualization, or is this your first setup?


Re-reading your original post more closely,
Are you trying to address “broken Polish letters?”

If that is the case, you should provide a link to the advice you’re getting to resolve the issue.
Generally speaking, I cannot think of any way IOMMU likely has anything to do with display characters.

Usually characters are displayed by a configuration of pixels, and depending on the font often is related to the Unicode Transformation format (UTF), eg eg using UTF-8 instead of ANSI to display Polish characters.

The following is a short article describing configuring support for Polish characters (there are probably others)


Thank for reply.
I decided to use technology giving me good performance in games on my virtualized Ubuntu system. Reason is: many titles doesn’t support different os than Windows, MacOS and Ubuntu/Mint and solving gamming problems on OpenSUSE makes me to be alone with this problems. Ubuntu get support and there’s many Brown-Purple-Whatever penguin’s.

I discovered, when I ran Ubuntu system with Amd Topaz GPU passthrough today and tries to install AMDGPU Pro drivers, but Ubuntu update in the same moment (Ubuntu isn’t much better in update manner than MS :frowning: ), so I rerun VM and my system hang. I think it’s real lottery my system hang or not. I tries in different way and remove display and graphic adapter (not real): VirtIO video and Spice Display - Ubuntu probably runs, but I have only an console. I’m searching a way to use this technique and redirect AMD Topaz output onto HDMI output, so I can connect an second monitor.I remember, there’s command to manage mode (SING/SOURCE) of GPU, but I don’t remember how do this and don’t know it’s exactly that.

Thank for help.

  1. What virtualization are you running?
  2. Which specific guide are you using to set up your GPU pass-through?
  3. Verify that it’s your entire system (HostOS) that sometimes hangs, and not your Guest.
  4. Verify that you’re not really trying to address a problem displaying Polish characters, you’re solely trying to improve gaming performance.


1.QEMU + KVM, but I’m using bios on VM
2.I’m using only Virt-manager with graphical frontend. Config I’m using:

  • VirtIO with SPICE (no listen option set) and both on graphical card and monitor 3d acceleration set (on one I turn on OpenGL) and set my Intel grapgic
  • VirtIO without acceleration, but pass-throught my AMD graphic
  • Maybe other’s confgurations
  1. I don’t know how.