From: "Timur Kristóf" <timur.kristof@gmail.com>
To: amd-gfx@lists.freedesktop.org, alexander.deucher@amd.com,
christian.koenig@amd.com
Cc: "Timur Kristóf" <timur.kristof@gmail.com>
Subject: [PATCH 7/7] drm/amdgpu/vce1: Align VCPU BO GART address to nearest power of two
Date: Mon, 20 Apr 2026 14:10:44 +0200 [thread overview]
Message-ID: <20260420121044.155030-8-timur.kristof@gmail.com> (raw)
In-Reply-To: <20260420121044.155030-1-timur.kristof@gmail.com>
VCE accesses memory, including its firmware, through a BAR.
It works slightly differently on each generation.
In case of VCE1, the start address of this BAR is zero
and we can't change it due to the firmware validation mechanism.
Align the GART address of the VCPU BO like the VRAM address,
in order to prevent it from crossing the boundaries of its BAR.
This fixes VCE1 initialization failure after suspend/resume.
Fixes: 66a80158aa2a ("amdgpu/vce: use amdgpu_gtt_mgr_alloc_entries")
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
---
drivers/gpu/drm/amd/amdgpu/vce_v1_0.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v1_0.c
index 100aa48204c77..9ddd635449873 100644
--- a/drivers/gpu/drm/amd/amdgpu/vce_v1_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/vce_v1_0.c
@@ -527,11 +527,17 @@ static int vce_v1_0_early_init(struct amdgpu_ip_block *ip_block)
* To accomodate that, we put GART to the LOW address range
* and reserve some GART pages where we map the VCPU BO,
* so that it gets a 32-bit address.
+ *
+ * VCE accesses memory, including its firmware, through a BAR.
+ * It works slightly differently on each generation.
+ * In case of VCE1, the start address of this BAR is zero
+ * and we can't change it due to the firmware validation mechanism.
*/
static int vce_v1_0_ensure_vcpu_bo_32bit_addr(struct amdgpu_device *adev)
{
u64 bo_size = amdgpu_bo_size(adev->vce.vcpu_bo);
- u64 max_vcpu_bo_addr = 0x0fffffff - bo_size;
+ u64 aligned_size = roundup_pow_of_two(bo_size);
+ u64 max_vcpu_bo_addr = 0x0fffffff - aligned_size;
u64 num_pages = ALIGN(bo_size, AMDGPU_GPU_PAGE_SIZE) / AMDGPU_GPU_PAGE_SIZE;
u64 pa = amdgpu_gmc_vram_pa(adev, adev->vce.vcpu_bo);
u64 flags = AMDGPU_PTE_READABLE | AMDGPU_PTE_WRITEABLE | AMDGPU_PTE_VALID;
@@ -543,7 +549,8 @@ static int vce_v1_0_ensure_vcpu_bo_32bit_addr(struct amdgpu_device *adev)
if (!drm_mm_node_allocated(&adev->vce.gart_node)) {
r = amdgpu_gtt_mgr_alloc_entries(&adev->mman.gtt_mgr,
- &adev->vce.gart_node, num_pages, 0,
+ &adev->vce.gart_node, num_pages,
+ aligned_size >> AMDGPU_GPU_PAGE_SHIFT,
DRM_MM_INSERT_LOW);
if (r)
return r;
--
2.53.0
next prev parent reply other threads:[~2026-04-20 12:10 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-20 12:10 [PATCH 0/7] VCE1 fixes Timur Kristóf
2026-04-20 12:10 ` [PATCH 1/7] drm/amdgpu: Add alignment to amdgpu_gtt_mgr_alloc_entries() Timur Kristóf
2026-04-20 12:16 ` Christian König
2026-04-20 12:10 ` [PATCH 2/7] drm/amdgpu/vce: Align VCPU BO to nearest power of two Timur Kristóf
2026-04-20 13:52 ` Christian König
2026-04-20 12:10 ` [PATCH 3/7] drm/amdgpu/vce1: Correct firmware offset mask Timur Kristóf
2026-04-20 12:23 ` Christian König
2026-04-20 13:49 ` Timur Kristóf
2026-04-20 12:10 ` [PATCH 4/7] drm/amdgpu/vce1: Remove superfluous address check Timur Kristóf
2026-04-20 12:23 ` Christian König
2026-04-20 12:10 ` [PATCH 5/7] drm/amdgpu/vce1: Check if VRAM address is lower than GART Timur Kristóf
2026-04-20 12:25 ` Christian König
2026-04-20 12:10 ` [PATCH 6/7] drm/amdgpu/vce1: Don't repeat GTT MGR node allocation Timur Kristóf
2026-04-20 12:25 ` Christian König
2026-04-20 12:10 ` Timur Kristóf [this message]
2026-04-20 12:27 ` [PATCH 7/7] drm/amdgpu/vce1: Align VCPU BO GART address to nearest power of two 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=20260420121044.155030-8-timur.kristof@gmail.com \
--to=timur.kristof@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox