Virtualizing IOMMU for VM Memory Protection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In computer systems, especially virtual machine environments, input/output (I/O) devices use physical addresses, which lacks address translation and memory protection, leading to reduced security and inefficient virtualization of I/O activity, as rogue devices can access memory unchecked and I/O operations cannot be intercepted or restarted like processor activities.

Innovation Solution

Implementing an I/O Memory Management Unit (IOMMU) that provides address translation for I/O device-initiated memory requests, coupled with a virtual machine monitor (VMM) to virtualize the IOMMU, enabling the creation of virtual IOMMUs for each virtual machine, and using control logic to manage translation data and cache not-present translation table entries.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If I/O devices use physical addresses directly, then device operation is simple and fast, but system security is reduced and memory protection is lost

Engineering Contradiction:
Improvesystem securityVSAvoidaddress translation complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent introduces an IOMMU as an intermediary device between I/O devices and system memory. The IOMMU translates I/O device addresses to system addresses and provides memory protection, preventing rogue devices from accessing memory unchecked while maintaining simple device operation through automatic translation

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If address translation is implemented for I/O devices, then memory protection is improved, but I/O operation efficiency is reduced

Engineering Contradiction:
Improvememory protectionVSAvoidI/O operation efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent implements preliminary action by pre-configuring translation tables in the IOMMU before I/O operations begin. The IOMMU caches translation entries and maintains translation state, so that during actual I/O operations, address translation occurs automatically without interrupting the I/O flow, thus maintaining efficiency while providing protection

Inventive Principle:
Principle #10Preliminary action

3Reliability

If I/O activity is virtualized with multiple virtual IOMMUs, then security and control are improved, but system complexity is increased

Engineering Contradiction:
Improvevirtualization securityVSAvoidvirtual IOMMU complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent segments the IOMMU functionality into multiple virtual IOMMUs, each associated with a specific virtual machine. Each virtual IOMMU maintains its own translation tables and protection domains, allowing independent security policies per VM while sharing the physical IOMMU hardware resource through the VMM

Inventive Principle:
Principle #1Segmentation

4Adaptability or versatility

If I/O operations can be intercepted and restarted like processor activities, then virtualization control is improved, but I/O operation complexity is increased

Engineering Contradiction:
Improvevirtualization controlVSAvoidI/O interception complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements feedback mechanisms where the IOMMU monitors I/O operations and provides information to the VMM about translation events, protection violations, and operation status. The VMM uses this feedback to make control decisions, intercept operations when necessary, and restart or modify I/O activities based on virtualization requirements

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS7882330B2Virtualizing an IOMMU
Publication Date: 2011.02.01 GLOBALFOUNDRIES US INC
  • US7882330B2 patent drawing
  • US7882330B2 patent drawing
  • US7882330B2 patent drawing

AI summary

In one embodiment, a system comprises one or more input/output (I/O) devices; an I/O memory management unit (IOMMU) coupled to receive memory requests sourced by the I/O devices and configured to provide address translation for the memory requests; and a virtual machine monitor (VMM) configured to manage one or more virtual machines on the system, wherein the VMM is configured to virtualize the IOMMU, providing one or more virtual IOMMUs for use by one or more virtual machines.