Virtual input/output memory management unit within a guest virtual machine

US9424199B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9424199-B2
Application numberUS-201213597575-A
CountryUS
Kind codeB2
Filing dateAug 29, 2012
Priority dateAug 29, 2012
Publication dateAug 23, 2016
Grant dateAug 23, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A virtual input/output memory management unit (IOMMU) is configured to provide a firewall around memory requests associated with an input/output (I/O) device. The virtual IOMMU uses data structures including a guest page table, a host page table and a general control register (i.e., GCR3) table. The guest page table is implemented in hardware to support the speed requirements of the virtual IOMMU. The GCR3 table is indexed using a virtual DeviceID parameter stored in a device table.

First claim

Opening claim text (preview).

What is claimed is: 1. A method, comprising: receiving, by a virtual I/O memory management unit (IOMMU) within a virtual machine (VM), a memory request by an input/output (I/O) device, wherein the memory request includes a guest virtual address and the I/O device is directly assigned to the VM; translating, by the virtual IOMMU, the guest virtual address to a guest physical address using a guest page table, the guest page table being maintained by a guest OS (operating system) and accessed based on an indexed entry associated with a virtual I/O device identification in a device table in the virtual IOMMU, wherein the guest page table is implemented in hardware form and the device table is virtualized using software; and translating, by the virtual IOMMU, the guest physical address to a system physical address using a host page table, the host page table being maintained by a hypervisor; validating, by the virtual IOMMU, the guest virtual address using the guest page table to determine whether the guest virtual address is within a valid range of addresses authorized by the guest OS for the I/O device; and if the guest virtual address is not within a valid range of addresses authorized by the guest OS for the I/O device, precluding the memory request from accessing the guest virtual address. 2. The method of claim 1 , further comprising: identifying an entry in a general control register (GCR3) table indexed by a virtual DeviceID associated with the I/O device, wherein the virtual DeviceID is stored in a device table in the virtual IOMMU. 3. The method of claim 1 , further comprising: virtualizing at least one of a control register, a configuration register, an error reporting register, a log, and an interrupt remapping table associated with the virtual IOMMU using software. 4. The method of claim 1 , further comprising: using an identical format for the host page table and the guest page table; and using a control bit in the device table to distinguish usage of the guest page table as a host table in virtualization mode. 5. The method of claim 1 , further comprising: managing a virtual machine by the hypervisor, the virtual machine configured to support operation of the guest OS. 6. An apparatus, comprising: a virtual I/O memory management unit (IOMMU) within a virtual machine (VM) configured to receive a memory request transmitted by an input/output (I/O) device, wherein the memory request includes a guest virtual address and the I/O device is directly assigned to the VM, and wherein the virtual IOMMU comprises data structures including: a guest page table configured to translate the guest virtual address to a guest physical address, the guest page table being maintained by a guest OS (operating system) and accessed based on an indexed entry associated with a virtual I/O device identification in a device table in the virtual IOMMU, wherein the guest page table is implemented in hardware form and the device table is virtualized using software; and a host page table configured to translate the guest physical address to system physical address, the host page table being maintained by a hypervisor; wherein the virtual IOMMU is configured to validate the guest virtual address using the guest page table to determine whether the guest virtual address is within a valid range of addresses authorized by the guest OS for the I/O device; wherein the guest OS precludes execution of the memory request when the guest virtual address is not within a valid range of addresses authorized by the guest OS for the I/O device. 7. The apparatus of claim 6 , further comprising: a GCR3 table configured to be indexed by a virtual DeviceID associated with the I/O device, wherein the virtual DeviceID is stored in a device table in the virtual IOMMU. 8. The apparatus of claim 6 , wherein at least one of a control register, a configuration register, an error reporting register, a log, and an interrupt remapping table associated with the virtual IOMMU are virtualized using software. 9. The apparatus of claim 6 , wherein: the host page table and the guest page table use an identical format; and the device table uses a control bit to distinguish usage of the guest page table as a host table in virtualization mode. 10. The apparatus of claim 6 , further comprising: a virtual machine configured to support operation of the guest OS, wherein the virtual machines is managed by the hypervisor. 11. A computer-readable storage device having instructions stored thereon, execution of which, by a computing device, causes the computing device to emulate an apparatus comprising: a virtual I/O memory management unit (IOMMU) within a virtual machine (VM) configured to receive a memory request transmitted by an input/output (I/O) device, wherein the memory request includes a guest virtual address and the I/O device is directly assigned to the VM, and wherein the virtual IOMMU comprises data structures including: a guest page table configured to translate the guest virtual address to a guest physical address, the guest page table being maintained by a guest OS (operating system) and accessed based on an indexed entry associated with a virtual I/O device identification in a device table in the virtual IOMMU, wherein the guest page table is implemented in hardware form and the device table is virtualized using software; and a host page table configured to translate the guest physical address to system physical address, the host page table being maintained by a hypervisor; wherein the virtual IOMMU is configured to validate the guest virtual address using the guest page table to determine whether the guest virtual address is within a valid range of addresses authorized by the guest OS for the I/O device; wherein the guest OS precludes execution of the memory request when the guest virtual address is not within a valid range of addresses authorized by the guest OS for the I/O device.

Assignees

Inventors

Classifications

  • for multiple virtual address spaces, e.g. segmentation (G06F12/1045 takes precedence) · CPC title

  • using page tables, e.g. page table structures · CPC title

  • for peripheral access to main memory, e.g. direct memory access [DMA] · CPC title

  • for multiple virtual address spaces, e.g. segmentation (G06F12/1036 takes precedence) · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9424199B2 cover?
A virtual input/output memory management unit (IOMMU) is configured to provide a firewall around memory requests associated with an input/output (I/O) device. The virtual IOMMU uses data structures including a guest page table, a host page table and a general control register (i.e., GCR3) table. The guest page table is implemented in hardware to support the speed requirements of the virtual IOM…
Who is the assignee on this patent?
Kegel Andrew G, Hummel Mark D, Advanced Micro Devices Inc
What technology area does this patent fall under?
Primary CPC classification G06F12/1009. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Aug 23 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).