IP Library Granted Patent US 12,079,141
Granted Patent B2
US 12,079,141 · App. 18/170,093 · Granted Sep 3, 2024

Hardware offloading for an emulated IOMMU device

Inventors: Gal Hammer (Ra'anana, IL); Marcel Apfelbaum (Ra'anana, IL)
Assignee: Red Hat, Inc.
G06F12/1036G06F9/45558G06F12/0646G06F12/1009G06F12/1072G06F2009/45583
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,079,141
App. No.
18/170,093
Granted
Sep 3, 2024
Kind
B2
Abstract

Disclosed is a method of managing memory of a virtual machine (VM), including providing a physical IOMMU device on a host, and performing a memory translation using the physical IOMMU device on the host.

Claims (29)

1. A method of managing memory of a virtual machine (VM), the method comprising:

providing a physical input-output memory management unit (IOMMU) device on a host of the VM, the physical IOMMU to perform memory translations for peripheral component interconnect (PCI) devices; and

in response to receiving at the physical IOMMU device, a request from a VM IOMMU of the VM for VM memory address translation for a VM peripheral component interconnect (PCI) device, performing a memory translation using the physical IOMMU device to generate a VM memory address translation result based on the request as received and a memory translation table.

2. The method of claim 1 , further comprising transmitting, by the physical IOMMU device to the VM IOMMU, the VM memory address translation result to service the request for VM memory address translation for the VM PCI device.

3. The method of claim 2 , further comprising generating, by the physical IOMMU device, the memory translation table based on instructions from the VM IOMMU.

4. The method of claim 3 , wherein the memory translation table comprises translations from VM virtual memory addresses to corresponding VM physical memory addresses.

5. The method of claim 3 , wherein generating the memory translation table comprises configuring, by the VM IOMMU, the physical IOMMU to generate a discrete memory translation table for each VM PCI device created on the VM.

6. The method of claim 2 , wherein the VM memory address translation result comprises a VM physical memory address corresponding to a VM virtual memory address indicated in the request for VM memory address translation for the VM PCI device.

7. The method of claim 2 , wherein the VM PCI device comprises a network interface controller (NIC), a graphics card (GPU), or a storage controller generated by the VM.

8. A memory management system comprising:

a memory;

a processing device operatively coupled to the memory, the processing device to execute a virtual machine (VM), the VM including VM memory; and

a physical input-output memory management unit (IOMMU) device operatively coupled to the processing device, wherein the physical IOMMU is to perform memory translations for peripheral component interconnect (PCI) devices, wherein the processing device is to:

in response to receiving at the physical IOMMU device, a request from a VM IOMMU of the VM for VM memory address translation for a VM peripheral component interconnect (PCI) device, perform a memory translation using the physical IOMMU device to generate a VM memory address translation result based on the request as received and a memory translation table.

9. The memory management system of claim 8 , wherein the physical IOMMU device is further to generate the memory translation table based on instructions from the VM IOMMU.

10. The memory management system of claim 9 , wherein the memory translation table comprises translations from VM virtual memory addresses to corresponding VM physical memory addresses.

11. The memory management system of claim 9 , wherein to generate the memory translation table, the physical IOMMU is to generate a discrete memory translation table for each VM PCI device created on the VM, wherein the physical IOMMU is configured to generate the discrete memory translation table for each VM PCI device created on the VM by the VM IOMMU.

12. The memory management system of claim 11 , wherein the request is generated by the VM PCI device and intercepted by the VM IOMMU for transmission to the physical IOMMU, and

wherein the request is a VM memory access request comprising a VM virtual memory address associated with the VM PCI device to be translated into a corresponding VM physical memory address.

13. The memory management system of claim 12 , wherein the VM memory address translation result comprises the corresponding VM physical memory address.

14. The memory management system of claim 11 , wherein the VM PCI device comprises a network interface controller (NIC), a graphics card (GPU), or a storage controller generated by the VM.

15. A non-transitory computer-readable storage medium including instructions that, when executed by a processing device operating a virtual machine (VM), cause the processing device to:

provide a physical input-output memory management unit (IOMMU) device on a host of the VM, the physical IOMMU to perform memory translations for peripheral component interconnect (PCI) devices; and

in response to receiving at the physical IOMMU device, a request from a VM IOMMU of the VM for VM memory address translation for a VM peripheral component interconnect (PCI) device, perform a memory translation using the physical IOMMU device to generate a VM memory address translation result based on the request as received and a memory translation table.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the processing device is further to transmit, by the physical IOMMU device to the VM IOMMU, the VM memory address translation result to service the request for VM memory address translation for the VM PCI device.

17. The non-transitory computer-readable storage medium of claim 15 , wherein the processing device is further to generate, using the physical IOMMU, the memory translation table based on instructions from the VM IOMMU.

18. The non-transitory computer-readable storage medium of claim 17 , wherein the memory translation table comprises translations from VM virtual memory addresses to corresponding VM physical memory addresses.

19. The non-transitory computer-readable storage medium of claim 16 , wherein the VM IOMMU is to configure the physical IOMMU to generate a discrete memory translation table for each VM PCI device created on the VM.

20. The non-transitory computer-readable storage medium of claim 16 , wherein the corresponding VM memory address translation result comprises a VM physical memory address corresponding to a VM virtual memory address indicated in the request for VM memory address translation for the VM PCI device.

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2026
From: RED HAT, INC.
To: RED HAT, LLC
Reel/Frame 074913/0759 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2023
From: HAMMER, GAL; APFELBAUM, MARCEL
To: RED HAT, INC.
Reel/Frame 065667/0336 →