IP Library Granted Patent US 10,503,537
Granted Patent B2
US 10,503,537 · App. 15/875,903 · Granted Dec 10, 2019

Hypervisor direct memory access

Inventors: Aditya Bhandari (Seattle, WA); Bruce J. Sherwin, Jr. (Woodinville, WA); Xin David Zhang (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/45558G06F12/1009G06F12/1027G06F12/1036G06F12/1081G06F13/10G06F13/28G06F13/42G06F21/53G06F2009/45566G06F2009/45579G06F2009/45583G06F2009/45587G06F2212/152G06F2212/206G06F2212/303G06F2212/65G06F2212/651G06F2212/68G06F2212/682G06F2212/683G06F2213/0026G06F2221/2149
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 10,503,537
App. No.
15/875,903
Granted
Dec 10, 2019
Kind
B2
Abstract

This disclosure generally relates to hypervisor memory virtualization. Techniques disclosed herein improve peripheral component interconnect express (PCI-e) device interoperability with a virtual machine. As an example, when a direct-memory access request is received from a PCI-e device but the target memory is currently unmapped, an indication may be provided to a memory paging processor so as to page-in the memory, such that the PCI-e device may continue to function normally. In some examples, the access request may be buffered and replayed once the memory is paged-in, or the access request may be retried, among other examples.

Claims (43)

1. A system comprising:

at least one processor; and

a first memory storing instructions that, when executed by the at least one processor, perform a method for providing direct memory access, comprising:

identifying a direct memory access request for one or more pages of a second memory by a peripheral device;

communicating with a memory paging processor to determine whether the requested one or more pages are unmapped in the second memory;

based on determining that the requested one or more pages are unmapped in the second memory:

storing at least a part of the direct memory access request in a third memory as a buffered the direct memory access request; and

generating a request to the memory paging processor to page-in the one or more pages;

receiving, from the memory paging processor, an indication that the one or more pages are available in the second memory; and

in response to the indication that the one or more pages are available in the second memory, using the buffered direct memory access request, without requiring a retry direct memory access request from the peripheral device, to resume direct memory access by the peripheral device.

2. The system of claim 1 , wherein the direct memory access request is identified based on an indication received from an input-output memory management unit.

3. The system of claim 1 , wherein, based on resuming the direct memory access request, a retry direct memory access request for the one or more pages of memory is not received from the peripheral device.

4. The system of claim 1 , wherein the second memory and the third memory are subparts of a fourth memory.

5. The system of claim 1 , wherein the peripheral device is a peripheral component interconnect express device.

6. The system of claim 1 , wherein the request to the memory paging processor comprises at least one memory address associated with the one or more pages.

7. The system of claim 1 , wherein the direct memory access request is identified as a result of a virtual machine interacting with the peripheral device.

8. A method for providing direct memory access for a device in use by a virtual machine, comprising:

identifying, as a result of a transaction between the device and the virtual machine, a memory access request for one or more pages of a first memory by the device;

communicating with a memory paging processor to determine whether the requested one or more pages are unmapped in the first memory;

based on determining that the requested one or more pages are unmapped in the first memory:

buffering at least a part of the memory access request in a second memory as a buffered memory access request; and

generating a request to the memory paging processor to page-in the one or more pages;

receiving, from the memory paging processor, an indication that the one or more pages are available in the first memory;

in response to the indication that the one or more pages are available in the first memory, continuing the transaction based on the buffered memory access request without requiring a retry memory access request from the device.

9. The method of claim 8 , wherein the memory access request is identified based on an indication received from an input-output memory management unit.

10. The method of claim 8 , wherein, based on continuing the transaction, a retry memory access request for the one or more pages of memory is not received from the device.

11. The method of claim 8 , wherein the first memory and the second memory are subparts of a third memory.

12. The method of claim 8 , wherein the request to the memory paging processor comprises at least one memory address associated with the one or more pages.

13. The method of claim 8 , wherein the device is a peripheral component interconnect express device.

14. A method for providing direct memory access, comprising:

identifying a memory access request for one or more pages of a first memory by a peripheral device;

communicating with a memory paging processor to determine whether the requested one or more pages are unmapped in the first memory;

based on determining that the requested one or more pages are unmapped in the first memory:

storing at least a part of the memory access request in a second memory as a buffered memory access request; and

generating a request to the memory paging processor to page-in the one or more pages;

receiving, from the memory paging processor, an indication that the one or more pages are available in the first memory; and

in response to the indication that the one or more pages are available in the first memory, using the buffered memory access request, without requiring a retry memory access request from the peripheral device, to resume the memory access request for the one or more pages of the first memory.

15. The method of claim 14 , wherein the memory access request is identified based on an indication received from an input-output memory management unit.

16. The method of claim 14 , wherein the first memory and the second memory are subparts of a third memory.

17. The method of claim 14 , wherein the peripheral device is a peripheral component interconnect express device.

18. The method of claim 15 , wherein the request to the memory paging processor comprises at least one memory address associated with the one or more pages.

19. The method of claim 18 , wherein the at least one memory address is a physical memory address or a virtual memory address.

20. The method of claim 14 , wherein the memory access request is identified as a result of a virtual machine interacting with the peripheral device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2018
From: BHANDARI, ADITYA; SHERWIN, BRUCE J., JR.; ZHANG, XIN DAVID
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 044686/0719 →
Continuity (2)
Provisional Application 62560578 · Sep 19, 2017
Related Publication 20190087368A1 · Mar 21, 2019