IP Library Granted Patent US 8,250,252
Granted Patent B1
US 8,250,252 · App. 12/826,105 · Granted Aug 21, 2012

System and methods for using a DMA module for a plurality of virtual machines

Assignee: QLOGIC, Corporation
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 8,250,252
App. No.
12/826,105
Granted
Aug 21, 2012
Kind
B1
Abstract

A system is provided. The system comprises a plurality of virtual machines executed by a computing system for sending and receiving information; and an adapter presented to the plurality of virtual machines as a shared hardware resource; wherein the adapter includes a direct memory access (DMA) module that is used for transferring control blocks to and from a computing system memory to an adapter memory, where the computing system memory has dedicated memory locations for each virtual machine to place the control blocks and the adapter memory has dedicated memory locations for storing the control blocks generated by each of the plurality of virtual machines; wherein the DMA module stores a context for each virtual machine that includes a computing system memory address assigned to each of the virtual machine and a quality of service entry that is used to limit a number of available control blocks that are transferred for a virtual machine at any given time when a control block from another virtual machine is available and there is storage space available to store the available control block for the other virtual machine.

Claims (31)

1. A system, comprising:

a plurality of virtual machines executed by a computing system for sending and receiving information; and

an adapter presented to the plurality of virtual machines as a shared hardware resource;

wherein the adapter includes a direct memory access (DMA) module that is used for transferring control blocks to and from a computing system memory to an adapter memory, where the computing system memory has dedicated memory locations for each virtual machine to place the control blocks and the adapter memory has dedicated memory locations for storing the control blocks generated by each of the plurality of virtual machines; and

wherein the DMA module stores a context for each virtual machine that includes a computing system memory address assigned to each of the virtual machines and a quality of service entry that is used to limit a number of available control blocks that are transferred for a given one of the virtual machines at any given time when a control block from another one of the virtual machines is available and there is storage space available to store the available control block for the other one of the virtual machines.

2. The system of claim 1 , wherein the DMA module maintains a first pointer array that is updated by a virtual machine to indicate that a control block is available for transfer and a second pointer array that is updated by the DMA module when the control block for the virtual machine is transferred.

3. The system of claim 1 , wherein the DMA module maintains a first memory address list that is updated by an adapter processor to indicate to the DMA module that a memory location assigned to a virtual machine is available for storing a control block.

4. The system of claim 3 , wherein the DMA module maintains a second memory address list that is updated by the DMA module to indicate to the adapter processor that a control block from a memory location assigned to a virtual machine has been transferred to a computing system memory location.

5. The system of claim 1 , wherein the DMA module maintains a temporary memory location for temporarily storing a control block that is transferred from a computing system memory location to an adapter memory location assigned to a virtual machine.

6. The system of claim 2 , wherein the DMA module includes logic for monitoring the first pointer array and the second pointer array for determining if a control block for a virtual machine is available for transfer and space to store the control block at the adapter memory is available for storing the control block after the transfer.

7. A method for transferring control blocks using a direct memory access (DMA) module from a computing system memory location assigned to one of a plurality of virtual machines to an adapter memory location assigned to the virtual machine, comprising:

(a) determining if a control block for the virtual machine is available at the assigned location of the computing system memory;

(b) determining if space is available at the assigned adapter memory location;

(c) transferring the control block from the computing system memory to the adapter memory;

(d) updating a first memory address list indicating to an adapter processor that the control block is transferred to the assigned memory location and the assigned memory location is no longer available;

(e) updating a first pointer array indicating to the virtual machine that the control block is transferred;

(f) performing steps (a) to (e) for a next control block for the virtual machine, if a quality of service (QOS) number assigned to the virtual machine has not been exceeded, the QOS number being configured to limit transfer of control blocks for the same virtual machine, if control blocks for other virtual machines are waiting for transfer and space is available to store the control blocks for the other virtual machines.

8. The method of claim 7 , wherein the DMA module maintains the first pointer array that is updated by the virtual machine to indicate that the control block is available for transfer.

9. The method of claim 8 , wherein the DMA module maintains a second pointer array that is updated by the DMA module when the control block for the virtual machine is transferred.

10. The method of claim 7 , wherein the DMA module maintains a second memory address list that is updated by an adapter processor to indicate to the DMA module that a memory location assigned to the virtual machine is available for storing a control block.

11. The method of claim 7 , wherein the DMA module maintains a temporary memory location for temporarily storing a control block that is transferred from a computing system memory location to an adapter memory location assigned to the virtual machine.

12. The method of claim 9 , wherein the DMA module includes logic for monitoring the first pointer array and the second pointer array for determining if a control block for the virtual machine is available for transfer and space to store the control block at the adapter memory is available for storing the control block after the transfer.

13. An adapter, comprising:

a direct memory access (DMA) module that is used for transferring control blocks between a computing system memory and an adapter memory, where the computing system executes a plurality of virtual machines and the adapter is presented to the plurality of virtual machines as a shared hardware resource;

wherein the computing system memory has dedicated memory locations for each virtual machine to place the control blocks, and the adapter memory has dedicated memory locations for storing the control blocks transferred to the adapter;

wherein the DMA module stores a context for each virtual machine that includes a computing system memory address assigned to each of the virtual machines and a quality of service entry that is used to limit a number of available control blocks that are transferred for a given one of the virtual machines at any given time when a control block from another one of the virtual machines is available and there is storage space available to store the available control block for the other one of the virtual machines; and

wherein the DMA module maintains a first pointer array that is updated by one of the virtual machines to indicate that a control block is available for transfer and a second pointer array that is updated by the DMA module when the control block for the one of the virtual machines is transferred.

14. The adapter of claim 13 , wherein the DMA module maintains a first memory address list that is updated by an adapter processor to indicate to the DMA module that a memory location assigned to a virtual machine is available for storing a control block.

15. The system of claim 13 , wherein the DMA module maintains a second memory” address list that is updated by the DMA module to indicate to the adapter processor that a control block from a memory location assigned to a virtual machine has been transferred to a computing system memory location.

16. The system adapter of claim 13 , wherein the DMA module maintains a temporary memory location for temporarily storing a control block that is transferred from a computing system memory location to an adapter memory location assigned to a virtual machine.

17. The system adapter of claim 13 , wherein the DMA module includes logic for monitoring the first pointer array and the second pointer array for determining if a control block for a virtual machine is available for transfer and space to store the control block at the adapter memory is available for storing the control block after the transfer.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 8, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047205/0953 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
MERGER Recorded Oct 18, 2017
From: QLOGIC CORPORATION
To: CAVIUM, INC.
Reel/Frame 044812/0504 →
SECURITY AGREEMENT Recorded Mar 1, 2017
From: QLOGIC CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 041854/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2010
From: KONDA, DHARMA R.; GANDHI, RAJENDRA R.
To: QLOGIC, CORPORATION
Reel/Frame 024610/0565 →