blob: 4b9a7c19dc83973a9ec1bef49e9c5886169b403e [file] [log] [blame]
.. _OPAL_NPU2:
OPAL NPU2 calls
================
There are three OPAL calls for interacting with NPU2 devices: ::
#define OPAL_NPU_INIT_CONTEXT 146
#define OPAL_NPU_DESTROY_CONTEXT 147
#define OPAL_NPU_MAP_LPAR 148
These are used to setup and configure address translation services
(ATS) for a given NVLink2 device. Note that in some documentation this
is also referred to as extended translation services (XTS).
Each NVLink2 supports multiple processes running on a GPU which issues
requests for address translation. The NPU2 is responsible for
completing the request by forwarding it to the Nest MMU (NMMU) along
with the appropriate translation context (MSR/LPCR) bits. These bits
are keyed off a 20-bit process ID (PASID/PID) which is identical to
the PID used on the processor.
The OPAL calls documented here are used to setup/destroy the
appropriate context for a given process on a given NVLink2 device.
.. _OPAL_NPU_INIT_CONTEXT:
OPAL_NPU_INIT_CONTEXT
---------------------
Parameters: ::
uint64_t phb_id
int pasid
uint64_t msr
uint64_t lpid
Allocates a new context ID and sets up the given PASID/PID to be
associated with the supplied MSR on for the given LPID. MSR should
only contain bits set requried for NPU2 address lookups - ie. MSR
DR/HV/PR/SF.
Returns the context ID on success or ``OPAL_RESOURCE`` if no more
contexts are available or ``OPAL_UNSUPPORTED`` in the case of
unsupported MSR bits.
.. _OPAL_NPU_DESTROY_CONTEXT:
OPAL_NPU_DESTROY_CONTEXT
------------------------
Parameters: ::
uint64_t phb_id
uint64_t id
Destroys a previously allocated context ID. This may cause further
translation requests from the GPU to fail.
.. _OPAL_NPU_MAP_LPAR:
OPAL_NPU_MAP_LPAR
-----------------
Parameters: ::
uint64_t phb_id
uint64_t bdf
uint64_t lparid
uint64_t lpcr
Associates the given GPU BDF with a particular LPAR and LPCR
bits. Hash mode ATS is currently unsupported so lpcr should be set
to 0.