lkml.org 
[lkml]   [2017]   [Jul]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.12 097/196] drm/etnaviv: Expose our reservation object when exporting a dmabuf.
    Date
    4.12-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Eric Anholt <eric@anholt.net>

    commit 8555137e26618490cbeb12c243818539875d12f4 upstream.

    Without this, polling on the dma-buf (and presumably other devices
    synchronizing against our rendering) would return immediately, even
    while the BO was busy.

    Signed-off-by: Eric Anholt <eric@anholt.net>
    Cc: Lucas Stach <l.stach@pengutronix.de>
    Cc: Russell King <linux+etnaviv@armlinux.org.uk>
    Cc: Christian Gmeiner <christian.gmeiner@gmail.com>
    Cc: etnaviv@lists.freedesktop.org
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/gpu/drm/etnaviv/etnaviv_drv.c | 1 +
    drivers/gpu/drm/etnaviv/etnaviv_drv.h | 1 +
    drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 7 +++++++
    3 files changed, 9 insertions(+)

    --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
    +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
    @@ -495,6 +495,7 @@ static struct drm_driver etnaviv_drm_dri
    .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
    .gem_prime_export = drm_gem_prime_export,
    .gem_prime_import = drm_gem_prime_import,
    + .gem_prime_res_obj = etnaviv_gem_prime_res_obj,
    .gem_prime_pin = etnaviv_gem_prime_pin,
    .gem_prime_unpin = etnaviv_gem_prime_unpin,
    .gem_prime_get_sg_table = etnaviv_gem_prime_get_sg_table,
    --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.h
    +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.h
    @@ -80,6 +80,7 @@ void *etnaviv_gem_prime_vmap(struct drm_
    void etnaviv_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr);
    int etnaviv_gem_prime_mmap(struct drm_gem_object *obj,
    struct vm_area_struct *vma);
    +struct reservation_object *etnaviv_gem_prime_res_obj(struct drm_gem_object *obj);
    struct drm_gem_object *etnaviv_gem_prime_import_sg_table(struct drm_device *dev,
    struct dma_buf_attachment *attach, struct sg_table *sg);
    int etnaviv_gem_prime_pin(struct drm_gem_object *obj);
    --- a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
    +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
    @@ -150,3 +150,10 @@ fail:

    return ERR_PTR(ret);
    }
    +
    +struct reservation_object *etnaviv_gem_prime_res_obj(struct drm_gem_object *obj)
    +{
    + struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
    +
    + return etnaviv_obj->resv;
    +}

    \
     
     \ /
      Last update: 2017-07-25 21:54    [W:4.233 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site