Messages in this thread | | | From | Dave Airlie <> | Date | Fri, 19 Oct 2018 10:33:15 +1000 | Subject | Re: [PATCH 7/8] drm/virtio: move virtio_gpu_object_{attach, detach} calls. |
| |
On Thu, 18 Oct 2018 at 17:00, Gerd Hoffmann <kraxel@redhat.com> wrote: > > > > > This to me feels more like a bind/unbind operation rather than a > > > > populate/unpopulate operation, > > > > > > > > bind is " Bind the backend pages into the aperture in the location" > > > > > > > > whereas populate is > > > > > > > > allocate pages for a ttm. > > > > > > I ran into that trap too ;) > > > > > > My first attempt was to map this to bind/unbind. But this is not > > > correct and therefore didn't work very well. > > > > > > virtio_gpu_object_attach() will send a scatter list of the pages > > > allocated for the object to the host (so the host knows where to > > > copy from/to when processing the transfer_from/to calls). So IMO > > > it should be done on population not when binding. > > > > Well bind on AGP is the same thing, we'd fill the AGP GART table on > > bind, so that the AGP GPU could access the pages. > > > So I'm interested in why using bind/unbind failed if you have some more info? > > Need to try again to be sure, but IIRC I saw multiple bind/unbind calls > for the same object. ttm probably does it to not waste AGB GART address > space for objects not in use. But for virtio it is pointless overhead. > But maybe it is just a matter of taking a reference and keeping it for > the whole lifetime of the object to make the binding permanent ...
Hmm maybe for the bind/unbind, not sure what would cause unbind except for the object being moved back out of the TT space and into system, it might be worth confirming what happens here, as I really do feel bind/unbind is the correct interface to use here.
Dave.
| |