diff mbox series

drm/msm: fix handling of cmdstream offset

Message ID 20181015173321.22635-1-robdclark@gmail.com (mailing list archive)
State New, archived
Headers show
Series drm/msm: fix handling of cmdstream offset | expand

Commit Message

Rob Clark Oct. 15, 2018, 5:33 p.m. UTC
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
Signed-off-by: Rob Clark <robdclark@gmail.com>
---
 drivers/gpu/drm/msm/msm_rd.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Kristian Høgsberg Oct. 16, 2018, 8:09 p.m. UTC | #1
On Mon, Oct 15, 2018 at 10:33 AM Rob Clark <robdclark@gmail.com> wrote:
>
> 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.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>

> Fixes: 78b8e5b847b4 drm/msm: dump a rd GPUADDR header for all buffers in the command
> Signed-off-by: Rob Clark <robdclark@gmail.com>
> ---
>  drivers/gpu/drm/msm/msm_rd.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> 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);
> --
> 2.17.2
>
> _______________________________________________
> Freedreno mailing list
> Freedreno@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/freedreno
diff mbox series

Patch

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);