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
.