Message ID | 20190725132655.11951-4-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | RESEND: ditch gem_prime_res_obj hook | expand |
Am 25.07.19 um 15:26 schrieb Daniel Vetter: > That way we can ditch our gem_prime_res_obj implementation. Since ttm > absolutely needs the right reservation object all the boilerplate is > already there and we just have to wire it up correctly. > > Note that gem/prime doesn't care when we do this, as long as we do it > before the bo is registered and someone can call the handle2fd ioctl > on it. > > Aside: ttm_buffer_object.ttm_resv could probably be ditched in favour > of always passing a non-NULL resv to ttm_bo_init(). At least for gem > drivers that would avoid having two of these, on in ttm_buffer_object > and the other in drm_gem_object, one just there for confusion. > > Acked-by: Gerd Hoffmann <kraxel@redhat.com> > Cc: Gerd Hoffmann <kraxel@redhat.com> > Reviewed-by: Emil Velikov <emil.velikov@collabora.com> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > Cc: Alex Deucher <alexander.deucher@amd.com> > Cc: "Christian König" <christian.koenig@amd.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: "Michel Dänzer" <michel.daenzer@amd.com> > Cc: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Huang Rui <ray.huang@amd.com> > Cc: Felix Kuehling <Felix.Kuehling@amd.com> > Cc: Andrey Grodzovsky <andrey.grodzovsky@amd.com> > Cc: Evan Quan <evan.quan@amd.com> > Cc: Sonny Jiang <sonny.jiang@amd.com> > Cc: Amber Lin <Amber.Lin@amd.com> > Cc: "Michał Mirosław" <mirq-linux@rere.qmqm.pl> > Cc: Junwei Zhang <Jerry.Zhang@amd.com> > Cc: Thomas Zimmermann <contact@tzimmermann.org> > Cc: Samuel Li <Samuel.Li@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 17 +---------------- > drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 - > drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 2 ++ > 4 files changed, 3 insertions(+), 18 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c > index 4809d4a5d72a..02cd845e77b3 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c > @@ -267,20 +267,6 @@ static void amdgpu_dma_buf_map_detach(struct dma_buf *dma_buf, > drm_gem_map_detach(dma_buf, attach); > } > > -/** > - * amdgpu_gem_prime_res_obj - &drm_driver.gem_prime_res_obj implementation > - * @obj: GEM BO > - * > - * Returns: > - * The BO's reservation object. > - */ > -struct reservation_object *amdgpu_gem_prime_res_obj(struct drm_gem_object *obj) > -{ > - struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj); > - > - return bo->tbo.resv; > -} > - > /** > * amdgpu_dma_buf_begin_cpu_access - &dma_buf_ops.begin_cpu_access implementation > * @dma_buf: Shared DMA buffer > @@ -339,8 +325,7 @@ const struct dma_buf_ops amdgpu_dmabuf_ops = { > * @gobj: GEM BO > * @flags: Flags such as DRM_CLOEXEC and DRM_RDWR. > * > - * The main work is done by the &drm_gem_prime_export helper, which in turn > - * uses &amdgpu_gem_prime_res_obj. > + * The main work is done by the &drm_gem_prime_export helper. > * > * Returns: > * Shared DMA buffer representing the GEM BO from the given device. > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h > index 7f73a4f94204..5012e6ab58f1 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h > @@ -34,7 +34,6 @@ struct dma_buf *amdgpu_gem_prime_export(struct drm_gem_object *gobj, > int flags); > struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev, > struct dma_buf *dma_buf); > -struct reservation_object *amdgpu_gem_prime_res_obj(struct drm_gem_object *); > void *amdgpu_gem_prime_vmap(struct drm_gem_object *obj); > void amdgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); > int amdgpu_gem_prime_mmap(struct drm_gem_object *obj, > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > index f67b5baed441..98df55534a6d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > @@ -1397,7 +1397,6 @@ static struct drm_driver kms_driver = { > .prime_fd_to_handle = drm_gem_prime_fd_to_handle, > .gem_prime_export = amdgpu_gem_prime_export, > .gem_prime_import = amdgpu_gem_prime_import, > - .gem_prime_res_obj = amdgpu_gem_prime_res_obj, > .gem_prime_get_sg_table = amdgpu_gem_prime_get_sg_table, > .gem_prime_import_sg_table = amdgpu_gem_prime_import_sg_table, > .gem_prime_vmap = amdgpu_gem_prime_vmap, > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > index bea6f298dfdc..19ec775b7aa8 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > @@ -509,6 +509,8 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev, > if (unlikely(r != 0)) > return r; > > + bo->gem_base.resv = bo->tbo.resv; > + > if (!amdgpu_gmc_vram_full_visible(&adev->gmc) && > bo->tbo.mem.mem_type == TTM_PL_VRAM && > bo->tbo.mem.start < adev->gmc.visible_vram_size >> PAGE_SHIFT)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c index 4809d4a5d72a..02cd845e77b3 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c @@ -267,20 +267,6 @@ static void amdgpu_dma_buf_map_detach(struct dma_buf *dma_buf, drm_gem_map_detach(dma_buf, attach); } -/** - * amdgpu_gem_prime_res_obj - &drm_driver.gem_prime_res_obj implementation - * @obj: GEM BO - * - * Returns: - * The BO's reservation object. - */ -struct reservation_object *amdgpu_gem_prime_res_obj(struct drm_gem_object *obj) -{ - struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj); - - return bo->tbo.resv; -} - /** * amdgpu_dma_buf_begin_cpu_access - &dma_buf_ops.begin_cpu_access implementation * @dma_buf: Shared DMA buffer @@ -339,8 +325,7 @@ const struct dma_buf_ops amdgpu_dmabuf_ops = { * @gobj: GEM BO * @flags: Flags such as DRM_CLOEXEC and DRM_RDWR. * - * The main work is done by the &drm_gem_prime_export helper, which in turn - * uses &amdgpu_gem_prime_res_obj. + * The main work is done by the &drm_gem_prime_export helper. * * Returns: * Shared DMA buffer representing the GEM BO from the given device. diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h index 7f73a4f94204..5012e6ab58f1 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.h @@ -34,7 +34,6 @@ struct dma_buf *amdgpu_gem_prime_export(struct drm_gem_object *gobj, int flags); struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev, struct dma_buf *dma_buf); -struct reservation_object *amdgpu_gem_prime_res_obj(struct drm_gem_object *); void *amdgpu_gem_prime_vmap(struct drm_gem_object *obj); void amdgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); int amdgpu_gem_prime_mmap(struct drm_gem_object *obj, diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index f67b5baed441..98df55534a6d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -1397,7 +1397,6 @@ static struct drm_driver kms_driver = { .prime_fd_to_handle = drm_gem_prime_fd_to_handle, .gem_prime_export = amdgpu_gem_prime_export, .gem_prime_import = amdgpu_gem_prime_import, - .gem_prime_res_obj = amdgpu_gem_prime_res_obj, .gem_prime_get_sg_table = amdgpu_gem_prime_get_sg_table, .gem_prime_import_sg_table = amdgpu_gem_prime_import_sg_table, .gem_prime_vmap = amdgpu_gem_prime_vmap, diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index bea6f298dfdc..19ec775b7aa8 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -509,6 +509,8 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev, if (unlikely(r != 0)) return r; + bo->gem_base.resv = bo->tbo.resv; + if (!amdgpu_gmc_vram_full_visible(&adev->gmc) && bo->tbo.mem.mem_type == TTM_PL_VRAM && bo->tbo.mem.start < adev->gmc.visible_vram_size >> PAGE_SHIFT)