Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d60ec2e7 authored by Rob Clark's avatar Rob Clark Committed by Greg Kroah-Hartman
Browse files

drm/msm: fix handling of cmdstream offset



[ Upstream commit 47e7f506ee6590ceb2efa1f08aca7f9f2ee5c1d3 ]

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: 78b8e5b8 drm/msm: dump a rd GPUADDR header for all buffers in the command
Reviewed-by: default avatarKristian H. Kristensen <hoegsberg@google.com>
Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 7de82186
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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);