lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 0093/1157] drm/tegra: Fix vmapping of prime buffers
    Date
    From: Dmitry Osipenko <dmitry.osipenko@collabora.com>

    commit c7860cbee9989882d2908682526a5ef617523cfe upstream.

    The code assumes that Tegra GEM is permanently vmapped, which is not
    true for the scattered buffers. After converting Tegra video decoder
    driver to V4L API, we're now getting a BUG_ON from dma-buf core on playing
    video using libvdpau-tegra on T30+ because tegra_gem_prime_vmap() sets
    vaddr to NULL. Older pre-V4L video decoder driver wasn't vmapping dma-bufs.
    Fix it by actually vmapping the exported GEMs.

    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/gpu/drm/tegra/gem.c | 11 ++++++++++-
    1 file changed, 10 insertions(+), 1 deletion(-)

    --- a/drivers/gpu/drm/tegra/gem.c
    +++ b/drivers/gpu/drm/tegra/gem.c
    @@ -704,14 +704,23 @@ static int tegra_gem_prime_vmap(struct d
    {
    struct drm_gem_object *gem = buf->priv;
    struct tegra_bo *bo = to_tegra_bo(gem);
    + void *vaddr;

    - iosys_map_set_vaddr(map, bo->vaddr);
    + vaddr = tegra_bo_mmap(&bo->base);
    + if (IS_ERR(vaddr))
    + return PTR_ERR(vaddr);
    +
    + iosys_map_set_vaddr(map, vaddr);

    return 0;
    }

    static void tegra_gem_prime_vunmap(struct dma_buf *buf, struct iosys_map *map)
    {
    + struct drm_gem_object *gem = buf->priv;
    + struct tegra_bo *bo = to_tegra_bo(gem);
    +
    + tegra_bo_munmap(&bo->base, map->vaddr);
    }

    static const struct dma_buf_ops tegra_gem_prime_dmabuf_ops = {

    \
     
     \ /
      Last update: 2022-08-16 00:14    [W:2.833 / U:27.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site