Reverse order queue updates by virtual devices
First Claim
1. A system comprising:
- a memory including a ring buffer having a plurality of slots;
a processor in communication with the memory;
a guest operating system; and
a hypervisor, wherein the hypervisor is configured to;
detect a request associated with a memory entry,retrieve up to a predetermined quantity of memory entries in the ring buffer from an original slot to an end slot,test a respective descriptor of each successive slot from the original slot through the end slot while the respective descriptor of each successive slot in the ring buffer remains unchanged,responsive to determining the respective descriptor is a valid descriptor, execute the request associated with the memory entry and the respective descriptor,walk the ring buffer backwards from the end slot to the original slot, andclear the valid descriptor in each slot between the end slot and the original slot.
1 Assignment
0 Petitions
Accused Products
Abstract
A system includes a memory including a ring buffer having a plurality of slots, a processor in communication with the memory, a guest operating system, and a hypervisor. The hypervisor is configured to detect a request associated with a memory entry, retrieve up to a predetermined quantity of memory entries in the ring buffer from an original slot to an end slot, and test a respective descriptor of each successive slot from the original slot through the end slot while the respective descriptor of each successive slot in the ring buffer remains unchanged. Additionally, the hypervisor is configured to execute the request associated with the memory entries and respective valid descriptors. The hypervisor is also configured to walk the ring buffer backwards from the end slot to the original slot while clearing the valid descriptors.
7 Citations
20 Claims
-
1. A system comprising:
-
a memory including a ring buffer having a plurality of slots; a processor in communication with the memory; a guest operating system; and a hypervisor, wherein the hypervisor is configured to; detect a request associated with a memory entry, retrieve up to a predetermined quantity of memory entries in the ring buffer from an original slot to an end slot, test a respective descriptor of each successive slot from the original slot through the end slot while the respective descriptor of each successive slot in the ring buffer remains unchanged, responsive to determining the respective descriptor is a valid descriptor, execute the request associated with the memory entry and the respective descriptor, walk the ring buffer backwards from the end slot to the original slot, and clear the valid descriptor in each slot between the end slot and the original slot. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method comprising:
-
detecting, by a hypervisor, a request to associated with a memory entry; retrieving, by the hypervisor, up to a predetermined quantity of memory entries in the ring buffer from an original slot to an end slot; testing, by the hypervisor, a respective descriptor of each successive slot from the original slot through the end slot while the respective descriptor of each successive slot in the ring buffer remains unchanged; responsive to determining the respective descriptor is a valid descriptor, executing, by the hypervisor, the request associated with the memory entry and the respective descriptor; walking, by the hypervisor, the ring buffer backwards from the end slot to the original slot; and clearing, by the hypervisor, the valid descriptor in each slot between the end slot and the original slot. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A method comprising:
-
receiving, by a hypervisor, a request associated with a memory entry; storing, by the hypervisor, a location of an original slot in hypervisor memory; testing, by the hypervisor, a respective descriptor of each successive slot from the original slot through an end slot while the respective descriptor of each successive slot in the ring buffer remains unchanged; responsive to determining the respective descriptor is a valid descriptor, executing, by the hypervisor, the request associated with the memory entry and the respective descriptor; responsive to executing the requests associated with each of the respective descriptors in the original slot through the end slot, incrementing, by the hypervisor, a counter from an original value to an end value; and clearing, by the hypervisor, the valid descriptor in each slot between the end slot and the original slot while walking the ring buffer backwards. - View Dependent Claims (20)
-
Specification