Skip to content

Commit 180c511

Browse files
author
Jocelyn Falempe
committed
drm/ast: Fix start address computation
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2166219 Upstream Status: git://anongit.freedesktop.org/drm/drm-misc commit 7484a5b Author: Jocelyn Falempe <jfalempe@redhat.com> AuthorDate: Thu Feb 9 10:44:17 2023 +0100 Commit: Jocelyn Falempe <jfalempe@redhat.com> CommitDate: Fri Feb 10 14:32:57 2023 +0100 During the driver conversion to shmem, the start address for the scanout buffer was set to the base PCI address. In most cases it works because only the lower 24bits are used, and due to alignment it was almost always 0. But on some unlucky hardware, it's not the case, and some uninitialized memory is displayed on the BMC. With shmem, the primary plane is always at offset 0 in GPU memory. * v2: rewrite the patch to set the offset to 0. (Thomas Zimmermann) * v3: move the change to plane_init() and also fix the cursor plane. (Jammy Huang) Tested on a sr645 affected by this bug. Fixes: f2fa5a9 ("drm/ast: Convert ast to SHMEM") Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Jammy Huang <jammy_huang@aspeedtech.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230209094417.21630-1-jfalempe@redhat.com Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
1 parent 96792af commit 180c511

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

drivers/gpu/drm/ast/ast_mode.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ static int ast_primary_plane_init(struct ast_private *ast)
716716
struct ast_plane *ast_primary_plane = &ast->primary_plane;
717717
struct drm_plane *primary_plane = &ast_primary_plane->base;
718718
void __iomem *vaddr = ast->vram;
719-
u64 offset = ast->vram_base;
719+
u64 offset = 0; /* with shmem, the primary plane is always at offset 0 */
720720
unsigned long cursor_size = roundup(AST_HWC_SIZE + AST_HWC_SIGNATURE_SIZE, PAGE_SIZE);
721721
unsigned long size = ast->vram_fb_available - cursor_size;
722722
int ret;
@@ -974,7 +974,7 @@ static int ast_cursor_plane_init(struct ast_private *ast)
974974
return -ENOMEM;
975975

976976
vaddr = ast->vram + ast->vram_fb_available - size;
977-
offset = ast->vram_base + ast->vram_fb_available - size;
977+
offset = ast->vram_fb_available - size;
978978

979979
ret = ast_plane_init(dev, ast_cursor_plane, vaddr, offset, size,
980980
0x01, &ast_cursor_plane_funcs,

0 commit comments

Comments
 (0)