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