Hi Dmitry, > Subject: Re: [PATCH v4 4/5] drm/virtio: Import prime buffers from other > devices as guest blobs > > > struct drm_gem_object *virtgpu_gem_prime_import(struct drm_device > *dev, > > struct dma_buf *buf) > > { > > + struct virtio_gpu_device *vgdev = dev->dev_private; > > + struct dma_buf_attachment *attach; > > + struct virtio_gpu_object *bo; > > struct drm_gem_object *obj; > > + int ret; > > > > if (buf->ops == &virtgpu_dmabuf_ops.ops) { > > obj = buf->priv; > > @@ -275,7 +304,32 @@ struct drm_gem_object > *virtgpu_gem_prime_import(struct drm_device *dev, > > } > > } > > > > - return drm_gem_prime_import(dev, buf); > > + if (!vgdev->has_resource_blob || vgdev->has_virgl_3d) > > + return drm_gem_prime_import(dev, buf); > > + > > + bo = kzalloc(sizeof(*bo), GFP_KERNEL); > > + if (!bo) > > + return ERR_PTR(-ENOMEM); > > + > > + obj = &bo->base.base; > > + obj->funcs = &virtgpu_gem_dma_buf_funcs; > > + drm_gem_private_object_init(dev, obj, buf->size); > > + > > + attach = dma_buf_dynamic_attach(buf, dev->dev, > > + &virtgpu_dma_buf_attach_ops, obj); > > + if (IS_ERR(attach)) { > > + kfree(bo); > > + return ERR_CAST(attach); > > + } > > + > > + obj->import_attach = attach; > > + get_dma_buf(buf); > > + > > + ret = virtgpu_dma_buf_init_obj(dev, bo, attach); > > + if (ret < 0) > > + return ERR_PTR(ret); > > Perhaps for a future improvement. Think we can defer > virtgpu_dma_buf_init_obj() until first use of the object in a case where I believe it might be possible to do that. I think I started out that way but figured we would need the addresses/backing in order to create a guest blob resource. Anyway, I'll try to test this idea again when I get a chance. > exporter supports dynamic attachment. Otherwise, we're pinning object at > the import time, partially defeating the purpose of the dynamic > attachment, AFAICT. I.e. if importer never uses object, then there is no > need to bother the exporter with the pinning. Yeah, I agree. It makes sense to defer the initialization until first usage. Thanks, Vivek > > -- > Best regards, > Dmitry