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 and NvSciBufGeneralAttrKey_PeerHwEngineArray 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.

If the NvSciBufGeneralAttrKey_PeerHwEngineArray attribute is not specified in the proxy unreconciled NvSciBufAttrList, thenNvSciBuf allocates a buffer of greater than the requested size to compensate for hardware engines that gain access to memory after allocation of NvSciBufObj. NvSciBuf also chooses the appropriate carveout memory location, which is accessible to hardware engines that 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.
  • Application needs to refer to User Mode Driver (UMD) documentation for details of how to specify theNvSciBufGeneralAttrKey_PeerHwEngineArray key.
  • The NvSciBufGeneralAttrKey_PeerHwEngineArray attribute is experimental in NVIDIA DRIVE OS 6.0.7 and should not be used in a production environment.