OPAL_NPU_SPA_SETUP

OpenCAPI devices only.

Sets up a Shared Process Area (SPA) with the Shared Process Area Pointer (SPAP) set to the provided address addr, and sets the OTL PE mask (used for PASID to PE handle conversion) to PE_mask.

If addr is NULL, the SPA will be disabled. addr must be 4K aligned.

Parameters

uint64_t phb_id
int bdfn
uint64_t addr
uint64_t PE_mask
phb_id

OPAL ID of PHB

bdfn

Bus-Device-Function number of OpenCAPI AFU

addr

Address of Shared Process Area, or NULL to disable SPA. Must be 4K aligned.

PE_mask

Process Element mask for PASID to PE handle conversion

Return Values

OPAL_SUCCESS

SPAP and PE mask were successfully set

OPAL_PARAMETER

A provided parameter was invalid

OPAL_BUSY

SPA is already enabled (or if addr is NULL, SPA is already disabled)

OPAL_NPU_SPA_CLEAR_CACHE

OpenCAPI devices only.

Invalidates the Process Element with the given PE_handle from the NPU’s SPA cache.

Parameters

uint64_t phb_id
uint32_t bdfn
uint64_t PE_handle
phb_id

OPAL ID of PHB

bdfn

Bus-Device-Function number of OpenCAPI AFU

PE_handle

Handle of Process Element being cleared from SPA cache

Return Values

OPAL_SUCCESS

PE was successfully cleared from SPA cache

OPAL_PARAMETER

A provided parameter was invalid

OPAL_BUSY

XSLO is currently invalidating a previously requested entry

OPAL_NPU_TL_SET

OpenCAPI devices only.

Update the NPU OTL configuration with device capabilities.

Parameters

uint64_t phb_id
uint32_t bdfn
long capabilities
uint64_t rate_phys
int rate_sz
phb_id

OPAL ID of PHB

bdfn

Bus-Device-Function number of OpenCAPI AFU

capabilities

Bitmap of TL templates the device can receive

rate_phys

Physical address of rates buffer

rate_sz

Size of rates buffer (must be equal to 32)

Return Values

OPAL_SUCCESS

OTL configuration was successfully updated

OPAL_PARAMETER

A provided parameter was invalid

OPAL_NPU_MEM_ALLOC

OpenCAPI devices only.

Sets up the NPU memory BAR for Lowest Point of Coherency (LPC) memory.

At present, only one device per CPU can use LPC memory, and a maximum of 4TB can be allocated.

Parameters

uint64_t phb_id
uint32_t bdfn
uint64_t size
uint64_t *bar
phb_id

OPAL ID of PHB

bdfn

Bus-Device-Function number of OpenCAPI AFU

size

Size of requested LPC memory area in bytes

bar

Pointer to variable where base of LPC memory area will be returned

Return Values

OPAL_SUCCESS

BAR setup completed successfully

OPAL_PARAMETER

A provided parameter was invalid

OPAL_RESOURCE

The BAR could not be assigned due to limitations

OPAL_NPU_MEM_RELEASE

OpenCAPI devices only.

Releases NPU memory BAR.

Parameters

uint64_t phb_id
uint32_t bdfn
phb_id

OPAL ID of PHB

bdfn

Bus-Device-Function number of OpenCAPI AFU

Return Values

OPAL_SUCCESS

BAR setup completed successfully

OPAL_PARAMETER

A provided parameter was invalid, or the specified device does not currently have LPC memory assigned