drm/nouveau: embed gem object in nouveau_bo
There is no reason to keep the gem object separately allocated. nouveau is the last user of gem_obj->driver_private, so if we embed it, we can get rid of 8bytes per gem-object. The implementation follows the radeon driver. bo->gem is only valid, iff the bo was created via the gem helpers _and_ iff the user holds a valid gem reference. That is, as the gem object holds a reference to the nouveau_bo. If you use nouveau_ref() to gain a bo reference, you are not guaranteed to also hold a gem reference. The gem object might get destroyed after the last user drops the gem-ref via drm_gem_object_unreference(). Use drm_gem_object_reference() to gain a gem-reference. For debugging, we can use bo->gem.filp != NULL to test whether a gem-bo is valid. However, this shouldn't be used for real functionality to avoid gem-internal dependencies. Note that the implementation follows the previous style. However, we no longer can check for bo->gem != NULL to test for a valid gem object. This wasn't done before, so we should be safe now. Signed-off-by:David Herrmann <dh.herrmann@gmail.com> Acked-by:
Maarten Lankhorst <maarten.lankhorst@canonical.com> Reviewed-by:
Ben Skeggs <bskeggs@redhat.com> Signed-off-by:
Dave Airlie <airlied@redhat.com>
Showing
- drivers/gpu/drm/nouveau/nouveau_abi16.c 2 additions, 2 deletionsdrivers/gpu/drm/nouveau/nouveau_abi16.c
- drivers/gpu/drm/nouveau/nouveau_bo.c 2 additions, 2 deletionsdrivers/gpu/drm/nouveau/nouveau_bo.c
- drivers/gpu/drm/nouveau/nouveau_bo.h 4 additions, 1 deletiondrivers/gpu/drm/nouveau/nouveau_bo.h
- drivers/gpu/drm/nouveau/nouveau_display.c 5 additions, 5 deletionsdrivers/gpu/drm/nouveau/nouveau_display.c
- drivers/gpu/drm/nouveau/nouveau_fbcon.c 1 addition, 1 deletiondrivers/gpu/drm/nouveau/nouveau_fbcon.c
- drivers/gpu/drm/nouveau/nouveau_gem.c 17 additions, 19 deletionsdrivers/gpu/drm/nouveau/nouveau_gem.c
- drivers/gpu/drm/nouveau/nouveau_gem.h 1 addition, 1 deletiondrivers/gpu/drm/nouveau/nouveau_gem.h
- drivers/gpu/drm/nouveau/nouveau_prime.c 6 additions, 4 deletionsdrivers/gpu/drm/nouveau/nouveau_prime.c
Loading
Please register or sign in to comment