From: Junrui Luo via B4 Relay <devnull+moonafterrain.outlook.com@kernel.org>
To: "Alex Deucher" <alexander.deucher@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Jammy Zhou" <Jammy.Zhou@amd.com>,
"Madhav Chauhan" <madhav.chauhan@amd.com>,
"Felix Kuehling" <Felix.Kuehling@amd.com>
Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org,
Junrui Luo <moonafterrain@outlook.com>,
Yuhao Jiang <danisjiang@gmail.com>
Subject: [PATCH 3/3] drm/amdgpu: add the BO-va mapping offset when kmapping an IB
Date: Thu, 06 Aug 2026 12:45:26 +0800 [thread overview]
Message-ID: <20260806-amdgpu-fixes-v1-3-ce247012d4da@outlook.com> (raw)
In-Reply-To: <20260806-amdgpu-fixes-v1-0-ce247012d4da@outlook.com>
From: Junrui Luo <moonafterrain@outlook.com>
amdgpu_cs_patch_ibs() derives the CPU-side view of a UVD/VCE/VCN
indirect buffer from the BO returned by amdgpu_cs_find_mapping():
r = amdgpu_bo_kmap(aobj, (void **)&kptr);
kptr += va_start - (m->start * AMDGPU_GPU_PAGE_SIZE);
amdgpu_bo_kmap() returns the start of the BO, so only the displacement
of va_start inside the mapping is added. The page tables, however, are
programmed from mapping->offset (see amdgpu_vm_bo_update()), which
records the offset_in_bo the client passed to AMDGPU_GEM_VA. The GPU
therefore resolves va_start to BO byte
m->offset + (va_start - m->start * AMDGPU_GPU_PAGE_SIZE)
while the kernel inspects the byte m->offset lower. Whenever an IB is
submitted through a mapping created with a non-zero offset_in_bo, the
two views disagree.
Add the missing term so the kmapped pointer describes the same bytes the
page tables do.
Every other CPU-side consumer of amdgpu_cs_find_mapping() omits
mapping->offset in the same way.
Fixes: 4802ce117786 ("drm/amdgpu: fix UVD/VCE VM emulation")
Reported-by: Yuhao Jiang <danisjiang@gmail.com>
Assisted-by: Claude:claude-opus-5
Signed-off-by: Junrui Luo <moonafterrain@outlook.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index 9c514cb01096..a72cee871af3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -1047,7 +1047,7 @@ static int amdgpu_cs_patch_ibs(struct amdgpu_cs_parser *p,
if (r)
return r;
- kptr += va_start - (m->start * AMDGPU_GPU_PAGE_SIZE);
+ kptr += m->offset + va_start - (m->start * AMDGPU_GPU_PAGE_SIZE);
if (ring->funcs->parse_cs) {
memcpy(ib->ptr, kptr, ib->length_dw * 4);
--
2.51.2
WARNING: multiple messages have this Message-ID (diff)
From: Junrui Luo <moonafterrain@outlook.com>
To: "Alex Deucher" <alexander.deucher@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Jammy Zhou" <Jammy.Zhou@amd.com>,
"Madhav Chauhan" <madhav.chauhan@amd.com>,
"Felix Kuehling" <Felix.Kuehling@amd.com>
Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org,
Junrui Luo <moonafterrain@outlook.com>,
Yuhao Jiang <danisjiang@gmail.com>
Subject: [PATCH 3/3] drm/amdgpu: add the BO-va mapping offset when kmapping an IB
Date: Thu, 06 Aug 2026 12:45:26 +0800 [thread overview]
Message-ID: <20260806-amdgpu-fixes-v1-3-ce247012d4da@outlook.com> (raw)
In-Reply-To: <20260806-amdgpu-fixes-v1-0-ce247012d4da@outlook.com>
amdgpu_cs_patch_ibs() derives the CPU-side view of a UVD/VCE/VCN
indirect buffer from the BO returned by amdgpu_cs_find_mapping():
r = amdgpu_bo_kmap(aobj, (void **)&kptr);
kptr += va_start - (m->start * AMDGPU_GPU_PAGE_SIZE);
amdgpu_bo_kmap() returns the start of the BO, so only the displacement
of va_start inside the mapping is added. The page tables, however, are
programmed from mapping->offset (see amdgpu_vm_bo_update()), which
records the offset_in_bo the client passed to AMDGPU_GEM_VA. The GPU
therefore resolves va_start to BO byte
m->offset + (va_start - m->start * AMDGPU_GPU_PAGE_SIZE)
while the kernel inspects the byte m->offset lower. Whenever an IB is
submitted through a mapping created with a non-zero offset_in_bo, the
two views disagree.
Add the missing term so the kmapped pointer describes the same bytes the
page tables do.
Every other CPU-side consumer of amdgpu_cs_find_mapping() omits
mapping->offset in the same way.
Fixes: 4802ce117786 ("drm/amdgpu: fix UVD/VCE VM emulation")
Reported-by: Yuhao Jiang <danisjiang@gmail.com>
Assisted-by: Claude:claude-opus-5
Signed-off-by: Junrui Luo <moonafterrain@outlook.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index 9c514cb01096..a72cee871af3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -1047,7 +1047,7 @@ static int amdgpu_cs_patch_ibs(struct amdgpu_cs_parser *p,
if (r)
return r;
- kptr += va_start - (m->start * AMDGPU_GPU_PAGE_SIZE);
+ kptr += m->offset + va_start - (m->start * AMDGPU_GPU_PAGE_SIZE);
if (ring->funcs->parse_cs) {
memcpy(ib->ptr, kptr, ib->length_dw * 4);
--
2.51.2
next prev parent reply other threads:[~2026-08-06 4:45 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-06 4:45 [PATCH 0/3] drm/amdgpu: three independent fixes in the CS and VM paths Junrui Luo via B4 Relay
2026-08-06 4:45 ` Junrui Luo
2026-08-06 4:45 ` [PATCH 1/3] drm/amdgpu: disallow multiple FENCE chunks in one submit Junrui Luo via B4 Relay
2026-08-06 4:45 ` Junrui Luo
2026-08-06 11:54 ` Christian König
2026-08-06 20:25 ` Alex Deucher
2026-08-06 4:45 ` [PATCH 2/3] drm/amdgpu: fix VM update overrun on non-4K page kernels Junrui Luo via B4 Relay
2026-08-06 4:45 ` Junrui Luo
2026-08-06 5:00 ` sashiko-bot
2026-08-06 11:59 ` Christian König
2026-08-08 17:03 ` Junrui Luo
2026-08-10 13:07 ` Christian König
2026-08-06 4:45 ` Junrui Luo via B4 Relay [this message]
2026-08-06 4:45 ` [PATCH 3/3] drm/amdgpu: add the BO-va mapping offset when kmapping an IB Junrui Luo
2026-08-06 5:06 ` sashiko-bot
2026-08-06 12:05 ` Christian König
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260806-amdgpu-fixes-v1-3-ce247012d4da@outlook.com \
--to=devnull+moonafterrain.outlook.com@kernel.org \
--cc=Felix.Kuehling@amd.com \
--cc=Jammy.Zhou@amd.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=danisjiang@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=madhav.chauhan@amd.com \
--cc=moonafterrain@outlook.com \
--cc=simona@ffwll.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.