diff options
author | Rob Clark <robdclark@gmail.com> | 2018-10-15 11:22:57 -0400 |
---|---|---|
committer | Sean Paul <seanpaul@chromium.org> | 2018-11-30 11:38:45 -0500 |
commit | 47e7f506ee6590ceb2efa1f08aca7f9f2ee5c1d3 (patch) | |
tree | c262b7f5e000975f50d4dbcec072f0e00e7d9e86 /drivers/gpu | |
parent | 51270de91412b819f654b849db3bf92dac0a0855 (diff) | |
download | linux-stable-47e7f506ee6590ceb2efa1f08aca7f9f2ee5c1d3.tar.gz linux-stable-47e7f506ee6590ceb2efa1f08aca7f9f2ee5c1d3.tar.bz2 linux-stable-47e7f506ee6590ceb2efa1f08aca7f9f2ee5c1d3.zip |
drm/msm: fix handling of cmdstream offset
Userspace hasn't used submit cmds with submit_offset != 0 for a while,
but this starts cropping up again with cmdstream sub-buffer-allocation
in libdrm_freedreno.
Doesn't do much good to increment the buf ptr before assigning it.
Fixes: 78b8e5b847b4 drm/msm: dump a rd GPUADDR header for all buffers in the command
Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
Signed-off-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/msm/msm_rd.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/msm/msm_rd.c b/drivers/gpu/drm/msm/msm_rd.c index cca933458439..0c2c8d2c631f 100644 --- a/drivers/gpu/drm/msm/msm_rd.c +++ b/drivers/gpu/drm/msm/msm_rd.c @@ -316,10 +316,11 @@ static void snapshot_buf(struct msm_rd_state *rd, uint64_t iova, uint32_t size) { struct msm_gem_object *obj = submit->bos[idx].obj; + unsigned offset = 0; const char *buf; if (iova) { - buf += iova - submit->bos[idx].iova; + offset = iova - submit->bos[idx].iova; } else { iova = submit->bos[idx].iova; size = obj->base.size; @@ -340,6 +341,8 @@ static void snapshot_buf(struct msm_rd_state *rd, if (IS_ERR(buf)) return; + buf += offset; + rd_write_section(rd, RD_BUFFER_CONTENTS, buf, size); msm_gem_put_vaddr(&obj->base); |