lkml.org 
[lkml]   [2021]   [May]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.12 051/134] drm/amd/display: Align cursor cache address to 2KB
    Date
    From: Joshua Aberback <joshua.aberback@amd.com>

    [ Upstream commit 554ba183b135ef09250b61a202d88512b5bbd03a ]

    [Why]
    The registers for the address of the cursor are aligned to 2KB, so all
    cursor surfaces also need to be aligned to 2KB. Currently, the
    provided cursor cache surface is not aligned, so we need a workaround
    until alignment is enforced by the surface provider.

    [How]
    - round up surface address to nearest multiple of 2048
    - current policy is to provide a much bigger cache size than
    necessary,so this operation is safe

    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Joshua Aberback <joshua.aberback@amd.com>
    Reviewed-by: Jun Lei <Jun.Lei@amd.com>
    Acked-by: Eryk Brol <eryk.brol@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c | 5 ++---
    1 file changed, 2 insertions(+), 3 deletions(-)

    diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c
    index 06dc1e2e8383..07c8d2e2c09c 100644
    --- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c
    +++ b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c
    @@ -848,7 +848,7 @@ bool dcn30_apply_idle_power_optimizations(struct dc *dc, bool enable)

    cmd.mall.cursor_copy_src.quad_part = cursor_attr.address.quad_part;
    cmd.mall.cursor_copy_dst.quad_part =
    - plane->address.grph.cursor_cache_addr.quad_part;
    + (plane->address.grph.cursor_cache_addr.quad_part + 2047) & ~2047;
    cmd.mall.cursor_width = cursor_attr.width;
    cmd.mall.cursor_height = cursor_attr.height;
    cmd.mall.cursor_pitch = cursor_attr.pitch;
    @@ -858,8 +858,7 @@ bool dcn30_apply_idle_power_optimizations(struct dc *dc, bool enable)
    dc_dmub_srv_wait_idle(dc->ctx->dmub_srv);

    /* Use copied cursor, and it's okay to not switch back */
    - cursor_attr.address.quad_part =
    - plane->address.grph.cursor_cache_addr.quad_part;
    + cursor_attr.address.quad_part = cmd.mall.cursor_copy_dst.quad_part;
    dc_stream_set_cursor_attributes(stream, &cursor_attr);
    }

    --
    2.30.2
    \
     
     \ /
      Last update: 2021-05-03 18:40    [W:4.264 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site