Questions tagged [iommu]

IOMMU is a memory management unit that connects a direct memory access-capable I/O bus to the main memory.

Description

In computing, an input/output memory management unit (IOMMU) is a memory management unit (MMU) that connects a direct memory access-capable (DMA-capable) I/O bus to the main memory. Like a traditional MMU, which translates CPU-visible virtual addresses to physical addresses, the IOMMU maps device-visible virtual addresses (also called device addresses or I/O addresses in this context) to physical addresses. Some units also provide memory protection from faulty devices.

An example IOMMU is the graphics address remapping table (GART) used by AGP and PCI Express graphics cards.

I/O virtualization is not performed by the CPU, but instead by the chipset.

Link

IOMMU Wiki

33 questions
11
votes
1 answer

IOMMU initialization without BIOS support

NOTE: if you have an AMD A55 chipset on a motherboard that support IOMMU, please send me a copy of your /sys/firmware/acpi/tables/DMAR (or whatever the name is that describes IOMMU). There is no risk of any sort for you. Thanks! Most motherboard…
Eric
  • 818
  • 8
  • 21
11
votes
1 answer

intel_iommu , what is it?

One of my customers had a problem with a Xeon E5 machine: they were having one gpu (I believe it was an NVIDIA one) hanging and they solved by adding the intel_iommu = igfx_off in the grub loader. What is this value and what does it? I read around…
user3498783
  • 183
  • 1
  • 1
  • 4
10
votes
3 answers

Check if VT-D / IOMMU has been enabled in the BIOS/UEFI

To check if Intel's VT-X or AMD's AMD-V is enabled in the BIOS/UEFI, I use: if systool -m kvm_amd -v &> /dev/null || systool -m kvm_intel -v &> /dev/null ; then echo "AMD-V / VT-X is enabled in the BIOS/UEFI." else echo "AMD-V / VT-X is not…
Forivin
  • 12,200
  • 21
  • 77
  • 171
9
votes
1 answer

check for IOMMU support on linux

I'd like to verify on any given Linux machine if PCI passthrough is supported. After a bit of googling, I found that I should rather check if IOMMU is supported, and I did so by running: dmesg | grep IOMMU If it supports IOMMU (and not IOMMUv2),…
Ricky Robinson
  • 17,881
  • 35
  • 113
  • 172
8
votes
1 answer

What is the difference between DMA and IOMMU?

What is DMA and IOMMU ? How DMA and IOMMU used ? What if architecture does not support IOMMU ? How to use DMA without IOMMU ?
6
votes
3 answers

Is there a Linux cpu flag for Intel vPro technology?

Does the Linux kernel provide a CPU flag in /proc/cpuinfo that indicates the processor supports Intel vPro technology? Specifically, I'd like to tell from within the operating system if the physical hardware supports Intel AMT, and then if its…
Dustin Kirkland
  • 4,877
  • 3
  • 33
  • 34
5
votes
1 answer

Using the Linux IOMMU API with userspace addresses

I've got a pci device driver that currently uses dma_map_page to map a userspace address to a dma address. This is working fine but I'm trying to port this to the iommu api to get some of the benefits using groups and domains give. Current Code:…
Robert
  • 203
  • 1
  • 8
5
votes
2 answers

Linux IOMMU page tables

I've been reading about IOMMU support in Linux and have some questions regarding page tables in IOMMU: Does the IOMMU uses the CPU MMU page tables for storing the VA → PA mapping? If not, i.e. the virtual addresses are different, then are the…
user6400335
  • 51
  • 1
  • 4
4
votes
1 answer

Linux 4.4 PCIe DMA into userspace pages not working - highmem not usable for DMA?

I am updating an older linux driver that transfers data via DMA to userspace pages which are passed down from the application via get_user_pages(). My hardware is a new x86 Xeon based board with 12GB of RAM. The driver gets data from a VME to PCIe…
Thomas S.
  • 61
  • 4
3
votes
0 answers

How exactly does "intel_iommu=igfx_off" affect the passthrough of an Intel IGD?

How exactly does "intel_iommu=igfx_off" affect the passthrough of an Intel IGD? Does it prevent the detachment of Intel IGD from host altogether so that the emulator such as qemu-kvm won't even see the assigned GPU in the first place as one of the…
geekie12
  • 1
  • 11
2
votes
0 answers

How to attach my device with IOMMU framework?

I'm adding IOMMU support in my linux driver and notice the IOMMU groups are assigned to the device during boot: [ 0.942274] iommu: Adding device 0000:03:00.0 to group 28 Although, when I try to iommu_attach_device() inside the driver, it fails.…
JustCoding
  • 21
  • 1
  • 4
2
votes
1 answer

INTEL VT-D Root table and context table relationship

I am trying to learn about INTEL VT-D, I've read that root table has 256 entries, with each root table points to furhter context table with 256 entries each, where each context table contains second level translation. Unfortunately I am unable to…
2
votes
2 answers

Find the devices of an iommu group

I am using the IOMMU API for linux and I would like to get a specific device that belongs to a specific group of a known group ID. The iommu_group structure has a field for the device list but it is not accessible. Is there a way to get it?
John Vardas
  • 21
  • 1
  • 3
2
votes
0 answers

Different functionality between ARM SMMU and x86 IOMMU?

I have survey some I/O virtualization things. And I found that IOMMU is a key hardware component for hardware-assisted I/O virtaulization. How about the ARM SMMU? Is there any difference between ARM SMMU and x86 IOMMU? Thanks!
user3337215
  • 53
  • 1
  • 4
2
votes
2 answers

AMD-V interrupt virtualiztion (AVIC): hw support and IOMMU interaction

I've came across Advanced Virtual Interrupt Controller (AVIC) in the AMD64 Architecture Programming Manual (APM), Volume 2. Some bits were unclear to me, so I've quickly skimmed through the popular open-source hypervisors (Qemu/KVM and Xen, to name…
vsinitsyn
  • 113
  • 7
1
2 3