IP Library Granted Patent US 8,615,614
Granted Patent B2
US 8,615,614 · App. 13/307,271 · Granted Dec 24, 2013

Message passing using direct memory access unit in a data processing system

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,615,614
App. No.
13/307,271
Granted
Dec 24, 2013
Kind
B2
Abstract

A method includes generating, by a first software process of the data processing system, a source partition descriptor for a DMA job which requires access to a first partition of a memory which is assigned to a second software process of the data processing system and not assigned to the first software process. The source partition descriptor comprises a partition identifier which identifies the first partition of the memory. The DMA unit receives the source partition descriptor and generates a destination partition descriptor for the DMA job. Generating the destination partition descriptor includes translating, by the DMA unit, the partition identifier to a buffer pool identifier which identifies a physical address within the first partition of the memory which is assigned to the second software process; and storing, by the DMA unit, the buffer pool identifier in the destination partition descriptor.

Claims (52)

1. In a data processing system having a direct memory access (DMA) unit coupled to a memory, the method comprising:

generating, by a first software process of the data processing system, a source partition descriptor for a DMA job which requires access to a first partition of the memory which is assigned to a second software process of the data processing system and not assigned to the first software process, wherein the source partition descriptor comprises a partition identifier which identifies the first partition of the memory;

receiving, by the DMA unit, the source partition descriptor for the DMA job; and

generating, by the DMA unit, a destination partition descriptor for the DMA job,

wherein the generating the destination partition descriptor comprises:

translating, by the DMA unit, the partition identifier to a buffer pool identifier which identifies a physical address within the first partition of the memory which is assigned to the second software process; and

storing the buffer pool identifier in the destination partition descriptor,

wherein the DMA job requires transfer of message data from a second partition of memory which is assigned to the first software process and not assigned to the second software process to the second partition of memory, the method further comprising:

transferring, by the DMA unit, the message data from the second partition to the first partition at the physical address identified by the buffer pool identifier.

2. The method of claim 1 , wherein the source partition descriptor comprises a message mode indicator which indicates that the message data is to be transferred across a partition boundary.

3. The method of claim 1 , further comprising:

after generating the source partition descriptor, queuing the source partition descriptor in a source partition descriptor queue accessible by the DMA unit, wherein the receiving the source partition descriptor comprises:

dequeuing, by the DMA unit, the source partition descriptor from the source partition descriptor queue.

4. The method of claim 1 , wherein the first software process executes on a first processor of the data processing system, and the second software process executes on a second processor of the data processing system, wherein the first partition is assigned to the second processor and not the first processor, and the second partition is assigned to the first processor and not the second processor.

5. The method of claim 1 , wherein each of the first software process and the second software process execute on a same processor of the data processing system.

6. The method of claim 1 , wherein the generating the destination partition descriptor comprises:

using the partition identifier to obtain a set of access permissions for the first partition.

7. The method of claim 1 , further comprising:

queuing the destination partition descriptor to a destination completion queue accessible by the second software process; and

dequeuing, by the second software process, the destination partition descriptor and processing the DMA job.

8. The method of claim 1 , wherein the translating, by the DMA unit, the partition identifier to the buffer pool identifier comprises accessing secure mapping circuitry.

9. The method of claim 8 , wherein the secure mapping circuitry is configurable only by a hypervisor of the data processing system.

10. The method of claim 1 , wherein the source partition descriptor comprises a completion enqueue indicator, wherein the method further comprises:

queuing the destination partition descriptor to a destination completion queue accessible by the second software process when the completion enqueue indicator has a first value;

queuing the destination partition descriptor to a source completion queue accessible by the first software process when the completion enqueue indicator has a second value; and

queuing the destination partition descriptor in each of the destination completion queue and the source completion queue when the completion enqueue indicator has a third value.

11. The method of claim 10 , wherein the generating the source partition descriptor comprises storing a completion enqueue disable indicator, wherein, when the completion enqueue disable indictor has a first value, the destination partition descriptor is not queued to the destination completion queue or the source completion queue, regardless of the value of the completion enqueue indicator of the source partition descriptor.

12. A data processing system configured to execute a first software process and a second software process, the data processing system comprising:

a DMA unit coupled to a memory;

a DMA unit configured to receive a source partition descriptor for a DMA job, wherein the DMA unit comprises secure mapping circuitry, and wherein:

the source partition descriptor is generated by the first software process and the DMA job requires transfer of message data from a first partition of a memory which is assigned to the first software process and not assigned to the second software process to a second partition of the memory which is assigned to the second software process and not the first software process, the source partition descriptor comprising a partition identifier which identifies the second partition of the memory as a destination partition for the DMA job; and

when the DMA unit receives the source partition descriptor, the DMA unit generates a destination partition descriptor in which the DMA unit uses the secure mapping circuitry to translate the partition identifier to a buffer pool identifier which identifies a physical address within the second partition of the memory and stores the buffer pool identifier in the destination partition descriptor, and transfers the message data from the first partition to the second partition at the physical address identified by the buffer pool identifier.

13. The data processing system of claim 12 , wherein the source partition descriptor comprises a message mode indicator which indicates that the message data is to be transferred across a partition boundary.

14. The data processing system of claim 12 , wherein the data processing further comprises:

a first processor, coupled to the memory, which executes the first software process; and

a second processor, coupled to the memory, which executes the second software process.

15. The data processing system of claim 12 , wherein the DMA unit uses the partition identifier to obtain a set of access permissions for the first partition for storage into the destination partition descriptor.

16. The data processing system of claim 12 , further comprising a queue manager which comprises a destination completion queue and a source completion queue, wherein:

the source partition descriptor comprises a completion enqueue indicator, wherein:

when the completion enqueue indicator has a first value, the queue manager queues the destination partition descriptor to the destination completion queue;

when the completion enqueue indicator has a second value, the queue manager queues the destination partition descriptor to the source completion queue; and

when the completion enqueue indicator has a third value, the queue manager queues the destination partition descriptor to each of the destination completion queue and the source completion queue.

17. The data processing system of claim 16 , wherein the source partition descriptor comprises a completion enqueue disable indicator, wherein, when the completion enqueue disable indictor has a first value, the queue manager does not queue the destination partition descriptor to the destination completion queue or the source completion queue, regardless of the value of the completion enqueue indicator of the source partition descriptor.

18. In a data processing system a first processor, a second processor, and a direct memory access (DMA) unit, each coupled to a memory, the method comprising:

generating, by the first processor, a source partition descriptor for a DMA job which requires transfer of message data from a first partition of the memory which is assigned to the first processor and not assigned to the second processor to a second partition of the memory which is assigned to the second processor and not assigned to the first processor, wherein the source partition descriptor comprises a partition identifier which identifies the first partition of the memory;

receiving, by the DMA unit, the source partition descriptor for the DMA job; and

generating, by the DMA unit, a destination partition descriptor for the DMA job, wherein the generating the destination partition descriptor comprises:

translating, by the DMA unit, the partition identifier to a buffer pool identifier which identifies a physical address within the second partition of the memory which is assigned to the second processor and a set of access permissions for the second partition; and

storing the buffer pool identifier and the set of access permissions in the destination partition descriptor; and

transferring the message data from the first partition to the second partition at the physical address identified by the buffer pool identifier.

19. The method of claim 18 , wherein the source partition descriptor comprises a completion enqueue indicator and a completion enqueue disable indicator, the method further comprising:

based on values of the completion enqueue indicator and the completion enqueue disable indicator, storing the destination partition descriptor into a source completion queue, into a destination completion queue, into both the destination partition descriptor queue and the source partition descriptor queue, or into neither the destination partition descriptor queue nor the source partition descriptor queue.

Assignments (20)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0241. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 5, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041260/0850 →
MERGER Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040652/0241 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0439 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0379 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0447 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Mar 7, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027821/0967 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Mar 7, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027821/0982 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Mar 7, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027821/0662 →