On Thu, 18 Oct 2018 at 17:00, Gerd Hoffmann <kraxel@xxxxxxxxxx> 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. _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel