On 10/16/26 22:26, Karl Mehltretter wrote:
On Tue, Feb 17, 2026 at 08:11:34PM -0400, Jason Gunthorpe wrote:
- match_args.attach = attach;
- if (dmabuf->ops->match_mapping) {
ret = dmabuf->ops->match_mapping(&match_args);- }
- attach->dmabuf = dmabuf; attach->importer_ops = importer_ops; attach->importer_priv = importer_priv;
I may misunderstand the intended contract. match_mapping() runs while the attachment is still zeroed and without dmabuf->resv held.
Patch 11's amdgpu callback needs importer_ops and importer_priv, so its XGMI match cannot work here. Patch 12's VFIO callback asserts dmabuf->resv and reads priv->vdev, which cleanup changes under that lock.
Should the core initialize the attachment and hold dmabuf->resv for match_mapping(), or should callbacks avoid attachment and lock-protected state?
Right. This completely misplaced.
The matching can't be done at attachment time, but rather needs to be done before creating a mapping while holding the resv lock so that the matching decision can't change.
Regards, Christian.
Thanks, Karl