From: "Christian König" <christian.koenig@amd.com>
To: Demi Marie Obenour <demiobenour@gmail.com>,
dri-devel@lists.freedesktop.org,
Xen developer discussion <xen-devel@lists.xenproject.org>,
linux-media@vger.kernel.org
Cc: Val Packett <val@invisiblethingslab.com>,
Suwit Semal <sumit.semwal@linaro.org>
Subject: Re: Pinned, non-revocable mappings of VRAM: will bad things happen?
Date: Fri, 17 Apr 2026 09:53:52 +0200 [thread overview]
Message-ID: <4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com> (raw)
In-Reply-To: <c7865b27-6bf1-4df1-9520-c9ef6b3ef368@gmail.com>
On 4/16/26 18:13, Demi Marie Obenour wrote:
> On 4/16/26 05:57, Christian König wrote:
>> On 4/16/26 01:27, Demi Marie Obenour wrote:
>>> Is it safe to assume that if a dmabuf exporter cannot handle
>>> non-revocable, pinned importers, it will fail the import? Or is
>>> using dma_buf_pin() unsafe if one does not know the exporter?
>>
>> Neither.
>>
>> dma_buf_pin() makes sure that the importer doesn't get any invalidation notifications because the exporter moves the backing store of the buffer around for memory management.
>>
>> But what is still possible is that the exporter is hot removed, in which case the importer should basically terminate it's DMA operation as soon as possible.
>>
>> GPU drivers usually reject pin requests to VRAM from DMA-buf importers when that isn't restricted by cgroups for example, because that can otherwise easily result in a deny of service.
>>
>> Amdgpu only recently started to allow pinning into VRAM to support RDMA without ODP (I think it was ODP, but could be that I mixed up the RDMA three letter code for that feature).
>>
>>> For context, Xen grant tables do not support revocation. One can ask
>>> the guest to unmap the grants, but if the guest doesn't obey the only
>>> recourse is to ungracefully kill it. They also do not support page
>>> faults, so the pages must be pinned. Right now, grant tables don't
>>> support PCI BAR mappings, but that's fixable.
>>
>> That sounds like an use case for the DMA-buf pin interface.
>>
>>> How badly is this going to break with dGPU VRAM, if at all? I know
>>> that AMDGPU has a fallback when the BAR isn't mappable. What about
>>> other drivers? Supporting page faults the way KVM does is going to
>>> be extremely hard, so pinned mappings and DMA transfers are vastly
>>> preferable.
>>
>> Well if you only want to share a fixed amount of VRAM then that is pretty much ok.
>>
>> But when the client VM can trigger pinning on demand without any limitation you can pretty easily have deny of service against the host. That is usually a rather bad idea.
>
> Is there a reasonable way to choose such an amount?
Not really.
> Unless I am
> mistaken, client workloads are highly non-uniform: a single game or
> compute job might well use more VRAM than every other program on the
> system combined.
Yeah, perfectly correct.
> Are these workloads impossible to make work well with pinning?
No, as long as you don't know the workload beforehand, e.g. when you define the limit.
I mean that's why basically everybody avoids pinning and assigning fixed amounts of resources.
Even if you can make it work technically pinning usually results in a rather bad end user experience.
Regards,
Christian.
next prev parent reply other threads:[~2026-04-17 7:54 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-15 23:27 Pinned, non-revocable mappings of VRAM: will bad things happen? Demi Marie Obenour
2026-04-16 9:57 ` Christian König
2026-04-16 16:13 ` Demi Marie Obenour
2026-04-17 7:53 ` Christian König [this message]
2026-04-17 19:35 ` Demi Marie Obenour
2026-04-20 8:49 ` Christian König
2026-04-20 17:03 ` Demi Marie Obenour
2026-04-20 17:58 ` Christian König
2026-04-20 18:46 ` Demi Marie Obenour
2026-04-20 18:53 ` Christian König
2026-04-20 19:12 ` Demi Marie Obenour
2026-04-21 16:55 ` Val Packett
2026-04-21 17:43 ` Christian König
2026-04-22 1:27 ` Demi Marie Obenour
2026-04-22 2:03 ` Alex Deucher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4751cf03-d3c1-4d5d-af8e-39ad7c8ffb84@amd.com \
--to=christian.koenig@amd.com \
--cc=demiobenour@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-media@vger.kernel.org \
--cc=sumit.semwal@linaro.org \
--cc=val@invisiblethingslab.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox