.. _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.