On 24/08/2021 20:32, Jason Gunthorpe wrote:
On Tue, Aug 24, 2021 at 10:27:23AM -0700, John Hubbard wrote:So are we OK with exporters implementing dma_buf_pin() without migrating the memory?
On 8/24/21 2:32 AM, Christian König wrote:I think it depends on the user, if the user creates memory which is
Am 24.08.21 um 11:06 schrieb Gal Pressman:...
On 23/08/2021 13:43, Christian König wrote:
Am 21.08.21 um 11:16 schrieb Gal Pressman:
On 20/08/2021 17:32, Jason Gunthorpe wrote:
On Fri, Aug 20, 2021 at 03:58:33PM +0300, Gal Pressman wrote:
Well...for many topologies, migrating to host memory will result in aSorry missed your previous reply.I replied to your previous mail, but I'll ask again.IIUC, we're talking about three different exporter "types":Basically none at all in the framework.
- Dynamic with move_notify (requires ODP)
- Dynamic with revoke_notify
- Static
Which changes do we need to make the third one work?
You just need to properly use the dma_buf_pin() function when you start using a
buffer (e.g. before you create an attachment) and the dma_buf_unpin() function
after you are done with the DMA-buf.
Doesn't the pin operation migrate the memory to host memory?
And yes at least for the amdgpu driver we migrate the memory to host
memory as soon as it is pinned and I would expect that other GPU drivers
do something similar.
dramatically slower p2p setup. For that reason, some GPU drivers may
want to allow pinning of video memory in some situations.
Ideally, you've got modern ODP devices and you don't even need to pin.
But if not, and you still hope to do high performance p2p between a GPU
and a non-ODP Infiniband device, then you would need to leave the pinned
memory in vidmem.
So I think we don't want to rule out that behavior, right? Or is the
thinking more like, "you're lucky that this old non-ODP setup works at
all, and we'll make it work by routing through host/cpu memory, but it
will be slow"?
permanently located on the GPU then it should be pinnable in this way
without force migration. But if the memory is inherently migratable
then it just cannot be pinned in the GPU at all as we can't
indefinately block migration from happening eg if the CPU touches it
later or something.
If so, do we still want a move_notify callback for non-dynamic importers? A noop?