# US 2021/0342182 A1 · System, apparatus and method for accessing multiple address spaces via a data mover

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2021/0342182 A1
- Document ID: US20210342182A1
- Status: Published application
- Kind: A1
- Application number: 16/909,084
- Filed: 2020-06-23
- Published: 2021-11-04
- Earliest claimed: 2020-04-30
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: SANJAY K. KUMAR; PHILIP LANTZ; RAJESH SANKARAN; NARAYAN RANGANATHAN; SAURABH GAYEN; DAVID A. KOUFATY; UTKARSH Y. KAKAIYA
- Web page: https://patentgrep.com/patent/US20210342182A1

## CPC

- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/342: {Extension of operand address space}
- G06F 9/4875: {with migration policy, e.g. auction, contract negotiation}
- G06F 12/10: Address translation
- G06F 12/109: for multiple virtual address spaces, e.g. segmentation (G06F12/1036 takes precedence)
- G06F 12/1441: {for a range}
- G06F 12/145: {the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism}
- G06F 12/1475: {in a virtual system, e.g. with translation means}
- G06F 12/1483: {using an access-table, e.g. matrix or list}
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F 2212/1016: Performance improvement
- G06F 2212/152: Virtualized environment, e.g. logically partitioned system
- G06F 2212/656: Address space sharing
- G06F 2212/657: Virtual address space management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In one embodiment, a data mover accelerator is to receive, from a first agent having a first address space and a first process address space identifier (PASID) to identify the first address space, a first job descriptor comprising a second PASID selector to specify a second PASID to identify a second address space. In response to the first job descriptor, the data mover accelerator is to securely access the first address space and the second address space. Other embodiments are described and claimed.

## Claims

### Claim 1

An apparatus comprising:
a data mover accelerator comprising:
a control circuit; and
an execution circuit coupled to the control circuit, wherein the execution circuit, based on a first job descriptor from a first agent having a first address space and a first process address space identifier (PASID) to identify the first address space, to securely access the first address space and a second address space, the first job descriptor comprising a second PASID selector to specify a second PASID to identify the second address space space.

### Claim 2 (depends on 1)

The apparatus of claim 1, further comprising a permissions table coupled to the data mover accelerator, wherein the permissions table comprises a plurality of entries.

### Claim 3 (depends on 2)

The apparatus of claim 2, wherein the first job descriptor further comprises a third PASID selector to specify a third PASID to identify a third address space, wherein in response to the first job descriptor, the data mover accelerator is further to securely access the third address space.

### Claim 4 (depends on 3)

The apparatus of claim 3, wherein the second PASID selector comprises a destination PASID selector, and wherein the data mover accelerator, in response to the first job descriptor, is to move data to the second address space.

### Claim 5 (depends on 4)

The apparatus of claim 4, wherein the third PASID selector comprises a source PASID selector, and wherein the data mover accelerator, in response to the first job descriptor, is to move the data from the third address space to the second address space.

### Claim 6 (depends on 4)

The apparatus of claim 4, wherein the data mover accelerator is to send a completion to a first address of the first address space after the data is written to the second address space, according to a completion record address of the first job descriptor.

### Claim 7 (depends on 4)

The apparatus of claim 4, wherein the data mover accelerator is to send a notification to a destination address of the second address space after the data is moved to the second address space, according to a destination notification address of the first job descriptor.

### Claim 8 (depends on 1)

The apparatus of claim 1, further comprising a central processing unit coupled to the data mover accelerator, wherein the central processing unit is to offload the first job descriptor to the data mover accelerator.

### Claim 9

At least one computer readable storage medium having stored thereon instructions, which if performed by a machine cause the machine to perform a method comprising:
receiving, in an offload engine, a first job descriptor from a first client, the first job descriptor comprising a first process address space identifier (PASID) associated with a first address space of the first client and a second PASID selector associated with an address space of a second client;
accessing a permissions table using the second PASID selector to determine whether the first client is permitted to access the second address space; and
in response to determining that the first client is permitted to access the second address space, performing, by the offload engine, a memory operation requested in the first job descriptor within the second address space, and thereafter writing a completion notification to the first address space.

### Claim 10 (depends on 9)

The at least one computer readable storage medium of claim 9, wherein the first job descriptor further comprises a third PASID selector associated with a third address space of a third client, the method further comprising:
accessing the permissions table using the third PASID selector to determine whether the first client is permitted to access the third address space; and
in response to determining that the first client is permitted to access the third address space, further performing, by the offload engine, the memory operation within the third address space.

### Claim 11 (depends on 9)

The at least one computer readable storage medium of claim 9, wherein the method further comprises in response to determining that the first client is not permitted to access the second address space, aborting the memory operation.

### Claim 12 (depends on 9)

The at least one computer readable storage medium of claim 9, wherein the method further comprises receiving the first job descriptor from a virtual machine monitor comprising the first client and performing the memory operation within the second address space comprising a data move operation, wherein the second client comprises a virtual machine.

### Claim 13 (depends on 9)

The at least one computer readable storage medium of claim 9, wherein the method further comprises:
determining whether an address of the first job descriptor is within an address range of the second address space to which the first client is permitted access; and
in response to determining that the address of the first job descriptor is within the address range of the second address space to which the first client is permitted access, performing the memory operation at the address within the second address space.

### Claim 14 (depends on 9)

The at least one computer readable storage medium of claim 9, wherein the method further comprises:
receiving a permissions table entry setup job descriptor from the second client, the permissions table entry setup job descriptor comprising one or more updated permissions and a fourth PASID selector;
accessing the permissions table using the fourth PASID selector to determine whether the second client is permitted to update an entry of the permissions table; and
updating the entry of the permissions table in response to the permissions table entry setup job descriptor, wherein the second client comprises an unprivileged client.

### Claim 15

An apparatus comprising:
an execution circuit to execute a data access operation comprising secure access to first data stored in a first address space associated with a first agent and secure access to a second address space associated with a second agent; and
a control circuit coupled to the execution circuit, wherein the control circuit is to receive a first job descriptor from the second agent, the first job descriptor comprising a first process address space identifier (PASID) selector to specify a first PASID for the first address space and a submitter PASID to identify a second PASID for the second address space and, in response to the first job descriptor, to cause the execution circuit to execute the data access operation.

### Claim 16 (depends on 15)

The apparatus of claim 15, wherein the apparatus comprises a data mover accelerator.

### Claim 17 (depends on 16)

The apparatus of claim 16, wherein the data mover accelerator further comprises a permissions table coupled to the control circuit.

### Claim 18 (depends on 17)

The apparatus of claim 17, wherein the permissions table comprises a plurality of entries each to store a submitter PASID, one or more permissions of an agent associated with the submitter PASID, and an access PASID corresponding to an address space associated with another agent.

### Claim 19 (depends on 18)

The apparatus of claim 18, wherein a first entry of the plurality of entries comprises an address range field to indicate an address range of the address space owned by the another agent for which the one or more permissions is provided.

### Claim 20 (depends on 18)

The apparatus of claim 18, wherein the control circuit is to receive a permissions table entry setup job descriptor from the another agent and in response to the permissions table entry setup job descriptor, to update the first entry to modify the one or more permissions and/or an accessible address range for the agent associated with the submitter PASID.
