Local access DMA with shared memory pool
First Claim
Patent Images
1. A method comprising:
- receiving, by a processing device executing a hypervisor, a first request from a virtual machine to register a memory region with a hardware device, wherein registering the memory region comprises pinning one or more underlying memory pages of the memory region and generating a key for the memory region;
generating, by the processing device executing the hypervisor, a first key for the memory region, wherein the memory region is not registered with the hardware device;
generating, by the processing device, a second key to access a shared memory pool, the shared memory pool being pinned and registered to the hardware device;
generating a mapping of the first key to the second key;
in response to generating the mapping of the first key to the second key, sending a response to the virtual machine that the memory region has been registered to the hardware device, the response comprising the first key that has been mapped to the second key, the first key comprising an indication that the first key is a virtual key that is to be replaced with the second key that is mapped to the first key;
receiving a second request for the hardware device to perform an operation associated with the memory region, wherein the request identifies the first key; and
copying data from a first memory location associated with the first key to a second memory location associated with the second key, wherein the operation is to be performed by the hardware device with the data at the second memory location.
1 Assignment
0 Petitions
Accused Products
Abstract
A processing device receives a first request from a virtual machine to register a memory region to a hardware device. The processing device generates a first key for the memory region, wherein the memory region is not registered to the hardware device. The processing device generates a second key for a shared memory pool that is pinned and registered to the hardware device. The processing device generates a mapping of the first key to the second key. The processing device sends a response to the virtual machine that the memory region has been registered to the hardware device, the notification comprising the first key.
-
Citations
20 Claims
-
1. A method comprising:
-
receiving, by a processing device executing a hypervisor, a first request from a virtual machine to register a memory region with a hardware device, wherein registering the memory region comprises pinning one or more underlying memory pages of the memory region and generating a key for the memory region; generating, by the processing device executing the hypervisor, a first key for the memory region, wherein the memory region is not registered with the hardware device; generating, by the processing device, a second key to access a shared memory pool, the shared memory pool being pinned and registered to the hardware device; generating a mapping of the first key to the second key; in response to generating the mapping of the first key to the second key, sending a response to the virtual machine that the memory region has been registered to the hardware device, the response comprising the first key that has been mapped to the second key, the first key comprising an indication that the first key is a virtual key that is to be replaced with the second key that is mapped to the first key; receiving a second request for the hardware device to perform an operation associated with the memory region, wherein the request identifies the first key; and copying data from a first memory location associated with the first key to a second memory location associated with the second key, wherein the operation is to be performed by the hardware device with the data at the second memory location. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A non-transitory computer readable storage medium comprising instructions that, when executed by a processing device executing a hypervisor, cause the processing device to:
-
receive, by the processing device executing the hypervisor, a first request from a virtual machine to register a memory region with a hardware device, wherein registering the memory region comprises pinning one or more underlying memory pages of the memory region and generating a key for the memory region; generate, by the processing device executing the hypervisor, a first key for the memory region, wherein the memory region is not registered with the hardware device; generate, by the processing device, a second key to access a shared memory pool, the shared memory pool being pinned and registered to the hardware device; generate a mapping of the first key to the second key; in response to generating the mapping of the first key to the second key, send a response to the virtual machine that the memory region has been registered to the hardware device, the response comprising the first key that has been mapped to the second key, the first key comprising an indication that the first key is a virtual key that is to be replaced with the second key that is mapped to the first key; receive a second request for the hardware device to perform an operation associated with the memory region, wherein the request identifies the first key; and copy data from a first memory location associated with the first key to a second memory location associated with the second key, wherein the operation is to be performed by the hardware device with the data at the second memory location. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A system comprising:
-
a memory; a network interface controller (NIC) coupled to the memory; and a processing device, operatively coupled with the memory and the NIC, the processing device to; receive a first request from a virtual machine to register a memory region to the NIC, wherein registering the memory region comprises pinning one or more underlying memory pages of the memory region and generating a key for the memory region; generate a first key for the memory region, wherein the memory region is not registered with the NIC; generate a second key to access a shared memory pool, the shared memory pool being pinned and registered to the NIC; generate a mapping of the first key to the second key; in response to generating the mapping of the first key to the second key, send a response to the virtual machine that the memory region has been registered with the NIC, the response comprising the first key that has been mapped to the second key, the first key comprising an indication that the first key is a virtual key that is to be replaced with the second key that is mapped to the first key; receive a second request for the NIC to perform an operation associated with the memory region, wherein the request identifies the first key; and copy data from a first memory location associated with the first key to a second memory location associated with the second key, wherein the operation is to be performed by the NIC with the data at the second memory location.
-
Specification