Memory-mapped input/output (I/O) channel
AssigneeRed Hat Israel, Ltd.
InventorsMarcel Apfelbaum, Gal Hammer
Life of this patent
Estimating the term…
Abstract
Various examples are directed to systems and methods for utilizing a memory-mapped I/O channel. A first application may request that a message be sent to a channel counterparty. A message driver may receive from the first application the request to send the message, where the request comprises payload data from the message. The message driver may write a work request to a send queue of a first queue pair at the first memory location. An emulated channel adapter may poll a physical address at a memory device corresponding to the first memory location; determine that the work request is present at the send queue, and send the payload data to the channel counterparty.
Claims19
A method for sending a message, comprising:
- sending, by a first application of a first virtual machine executing at a host computing device and to an Infiniband (IB) driver, a request for a first queue pair, wherein the request comprises an indication of a channel counterparty, wherein the first queue pair comprises a send queue for sending messages to the channel counterparty and a receive queue for receiving messages from the channel counterparty;
- receiving, by the IB driver, the request for the first queue pair;
- requesting, by the IB driver and from a guest operating system (OS) of the first virtual machine, a first memory location;
- receiving, by the IB driver, a first virtual machine physical address of the first memory location;
- sending, by the IB driver and to an emulated channel adapter, the first virtual machine physical address of the first memory location;
- determining, by the emulated channel adapter, a host computing device physical memory address for the first memory location, wherein the emulated channel adapter comprises a thread executed at and bound to a first processor core of the host computing device;
- and
- periodically polling, by the emulated channel adapter, the first memory location for at least one work request written to the first queue pair.
A host computing device, comprising:
- a plurality of processor cores;
- a memory device comprising instructions stored thereon that, when executed by one or more of the plurality of processor cores, causes the host computing device to:
- execute a first application programmed to request that a message be sent to a channel counterparty;
- execute a message driver programmed to:
- receive from the first application a request to send the message, wherein the request comprises payload data from the message;
- request, from an operating system, a first memory location in a virtual address space of the first application;
- receive, from the operating system, a virtual address for the first memory location;
- write a work request to a send queue of a first queue pair at the first memory location in the virtual address space of the first application, wherein the work request comprises the payload data;
- send the virtual address for the first memory location to an emulated channel adapter;
- execute the emulated channel adapter programmed to:
- poll a physical address at the memory device corresponding to the first memory location;
- determine that the work request is present at the send queue;
- and
- send the payload data to the channel counterparty associated with the first queue pair.
A host computing device, comprising:
- a plurality of processor cores;
- a memory device comprising instructions stored thereon that, when executed by one or more of the plurality of processor cores, causes the host computing device to:
- execute a first application programmed to request that a message be sent to a channel counterparty;
- execute a message driver programmed to:
- receive from the first application a request to send the message, wherein the request comprises payload data from the message;
- write a work request to a send queue of a first queue pair at a first memory location in a virtual address space of the first application, wherein the work request comprises the payload data, and wherein the first queue pair also comprises a receive queue;
- execute an emulated channel adapter programmed to:
- poll a physical address at the memory device corresponding to the first memory location;
- determine that the work request is present at the send queue;
- send the payload data to the channel counterparty associated with the first queue pair;
- receive an incoming message directed to the first application from the channel counterparty;
- write the incoming message to the receive queue;
- and
- send a notification of the incoming message to the first application.
Dependencies are inferred from the claim text.