Low-latency events across a virtual machine boundary

US10929167B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10929167-B2
Application numberUS-201916243938-A
CountryUS
Kind codeB2
Filing dateJan 9, 2019
Priority dateJan 9, 2019
Publication dateFeb 23, 2021
Grant dateFeb 23, 2021

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.

Communicating a low-latency event across a virtual machine boundary. Based on an event signaling request by a first process running at a first virtual machine, the first virtual machine updates a shared register that is accessible by a second virtual machine. Updating the shared register includes updating a signal stored in the shared register. The first virtual machine sends an event signal message, which includes a register identifier, through a virtualization fabric to the second virtual machine. The second virtual machine receives the event signaling message and identifies the register identifier from the message. Based on the register identifier, the second virtual machine reads the shared register, identifying a value of the signal stored in the shared register. Based at least on the value of the signal comprising a first value, the second virtual machine signals a second process running at the second virtual machine.

First claim

Opening claim text (preview).

What is claimed: 1. A method, implemented at a computer system that includes one or more processors, the computer system providing a virtualization fabric hosting a plurality of virtual machines including a first virtual machine and a second virtual machine, the method for communicating a low-latency event across a virtual machine boundary, the method comprising: at the first virtual machine: based on an event signaling request by a first process running at the first virtual machine, updating a shared register that is accessible by the second virtual machine, updating the shared register including updating a signal and a first wake cookie stored in the shared register; and sending an event signal message through the virtualization fabric to the second virtual machine, the event signal message including a register identifier of the shared register; and at the second virtual machine: receiving the event signal message sent by the first virtual machine and identifying the register identifier from the event signal message; based on the register identifier, reading the shared register, including identifying a value of the signal stored in the shared register and identifying a first value of the first wake cookie stored in the shared register; comparing the first value of the first wake cookie with a second value of a second wake cookie stored at the second virtual machine; and based at least on the value of the signal, and only when the first value of the first wake cookie is different from the second value of the second wake cookie, signaling a second process running at the second virtual machine. 2. The method of claim 1 , the method further comprising: the first virtual machine synchronizing a first event signaling object at the first virtual machine with the shared register; and the second virtual machine synchronizing a second event signaling object at the second virtual machine with the shared register. 3. The method of claim 1 , further comprising: the first process running at the first virtual machine synchronizing with shared memory prior to sending the event signal message; and the second process running at the second virtual machine synchronizing with the shared memory based on the second process having been signaled. 4. The method of claim 1 , the method further comprising: at the first virtual machine: communicating an event identifier to the second virtual machine over a first communications channel; creating a first event signaling object corresponding to the event identifier; associating the shared register with the first event signaling object; receiving the event identifier from the second virtual machine over a second communications channel; authenticating the event identifier; and after authenticating the event identifier, sending the register identifier to the second virtual machine over the second communications channel; and at the second virtual machine: receiving the event identifier from the first virtual machine over the first communications channel; creating a second event signaling object corresponding the event identifier; sending the event identifier to the first virtual machine over the second communications channel; and receiving the register identifier from the first virtual machine over the second communications channel. 5. The method of claim 4 , wherein the first communications channel is an operating system-level communications channel, and wherein the second communications channel is a hypervisor-level communications channel. 6. The method of claim 4 , wherein the first and second processes comprise user mode processes, and wherein the first and second event signaling objects comprise kernel mode data structures. 7. A computer system, comprising: one or more processors; and one or more computer-readable media having stored thereon computer-executable instructions that are executable by the one or more processors to cause the computer system to provide a virtualization fabric hosting a plurality of virtual machines including a first virtual machine and a second virtual machine, and to facilitate communication of a low-latency event across a virtual machine boundary, the computer-executable instructions including instructions that are executable to cause the computer system to perform at least: at the first virtual machine: based on an event signaling request by a first process running at the first virtual machine, update a shared register that is accessible by the second virtual machine, updating the shared register including updating a signal and a first wake cookie stored in the shared register; and send an event signal message through the virtualization fabric to the second virtual machine, the event signal message including a register identifier of the shared register; and at the second virtual machine: receive the event signal message sent by the first virtual machine and identifying the register identifier from the event signal message; based on the register identifier, read the shared register, including identifying a value of the signal stored in the shared register and identifying a first value of the first wake cookie stored in the shared register; compare the first value of the first wake cookie with a second value of a second wake cookie stored at the second virtual machine; and based at least on the value of the signal, and only when the first value of the first wake cookie is different from the second value of the second wake cookie, signal a second process running at the second virtual machine. 8. The computer system of claim 7 , wherein the first virtual machine synchronizes a first event signaling object at the first virtual machine with the shared register, and the second virtual machine synchronizes a second event signaling object at the second virtual machine with the shared register. 9. The computer system of claim 7 , wherein the first process running at the first virtual machine synchronizes with shared memory prior to sending the event signal message, and the second process running at the second virtual machine synchronizes with the shared memory based on the second process having been signaled. 10. The computer system of claim 7 , the computer-executable instructions also including instructions that are executable to cause the computer system to: at the first virtual machine: communicate an event identifier to the second virtual machine over a first communications channel; create a first event signaling object corresponding to the event identifier; associate the shared register with the first event signaling object; receive the event identifier from the second virtual machine over a second communications channel; authenticate the event identifier; and after authenticating the event identifier, send the register identifier to the second virtual machine over the second communications channel; and at the second virtual machine: receive the event identifier from the first virtual machine over the first communications channel; create a second event signaling object corresponding the event identifier; send the event identifier to the first virtual machine over the second communications channel; and receive the register identifier from the first virtual machine over the second communications channel. 11. The computer system of claim 10 , wherein the first communications channel is an operating system-level communications channel, and wherein the second communications channel is a hypervisor-level communications channel. 12. The computer system of claim 10 , wherein the first and second processes comprise user mode processes, and wherein the first and secon

Assignees

Inventors

Classifications

  • Hypervisor-specific management and integration aspects · CPC title

  • Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455) · CPC title

  • Isolation or security of virtual machine instances · CPC title

  • Memory management, e.g. access or allocation · CPC title

  • I/O management, e.g. providing access to device drivers or storage · 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 US10929167B2 cover?
Communicating a low-latency event across a virtual machine boundary. Based on an event signaling request by a first process running at a first virtual machine, the first virtual machine updates a shared register that is accessible by a second virtual machine. Updating the shared register includes updating a signal stored in the shared register. The first virtual machine sends an event signal me…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F9/45558. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Feb 23 2021 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 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).