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

43 questions
15
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
  • 14,780
  • 27
  • 106
  • 199
12
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 ?
12
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
  • 21,798
  • 42
  • 129
  • 185
12
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
  • 1,138
  • 11
  • 24
12
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
  • 193
  • 1
  • 1
  • 4
7
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
  • 5,323
  • 3
  • 36
  • 34
6
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
  • 61
  • 1
  • 4
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
  • 9
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
3 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
  • 31
  • 1
  • 1
  • 3
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
  • 11
  • 12
3
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
  • 83
  • 1
  • 4
2
votes
0 answers

I'm a bit confused how memory mapped I/O works on a Raspberry pi

In memory mapped io for the raspberry pi, does the cpu write to ram and doe the io device then read that section of ram the cpu wrote to using dma? I'm getting this impression by looking at the diagram from the BCM2835 ARM Peripherals guide. Can…
2
votes
0 answers

how is 'stream ID' or 'iommu specifier' determined in PCIe root complex mode?

This is from Documentation/devicetree/bindings/pci/pci-iommu.txt (linux-5.10.0) PCI root complex ================ Optional properties ------------------- - iommu-map: Maps a Requester ID to an IOMMU and associated IOMMU specifier data. The…
Chan Kim
  • 5,177
  • 12
  • 57
  • 112
2
votes
1 answer

What's the purpose of bypassing remapping in Thunderbolt driver?

My question is just for curiosity, I'm not a developer of MacOS Thunderbolt drivers so I have no experience with that. I've come across this page about thunderbolt drivers and IOMMU on MacOS. From what I've understood, when the driver asks for a…
namerand
  • 43
  • 3
1
2 3