Late Attach

NvSciBuf provides a mechanism for an application to allocate an NvSciBufObj that is shared with other peer NvSciIpcEndpoints after allocation of NvSciBufObj, without requiring each peer NvSciIpcEndpoint to send an unreconciled NvSciBufAttrList during initial reconciliation of unreconciled NvSciBufAttrList and allocation of NvSciBufObj.

To ensure that the allocated NvSciBufObj satisfies the memory requirements of the late peer NvSciIpcEndpoint, Application must create a proxy unreconciled NvSciBufAttrList representing the memory requirements of the late peer NvSciIpcEndpoint. This proxy unreconciled NvSciBufAttrList must be involved during initial reconciliation of the unreconciled NvSciBufAttrList. NvSciBuf provides attribute keys such as NvSciBufAttrKey_PeerLocationInfo that should be specified in the proxy unreconciled NvSciBufAttrList during initial reconciliation.

NvSciBuf also allows remote late peer NvSciIpcEndpoint to gain access to already allocated NvSciBufObj, provided the allocated NvSciBufObj satisfies the constraints of the unreconciled NvSciBufAttrList, received from remote late peer NvSciIpcEndpoint, through the NvSciBufObjAttachPeer() API.

NvSciBuf may allocate a buffer of greater than the requested size to compensate for hardware engines that may gain access to memory after allocation of NvSciBufObj. NvSciBuf may also choose appropriate carveout memory location, which is accessible to hardware engines that may gain access to memory after allocation of NvSciBufObj.

Note: Detailed descriptions of the attribute keys and the APIs are in the NVIDIA DRIVE® OS API Reference.