[PATCH 1/1] drm/amdgpu/display: use GFP_ATOMIC in dcn20_validate_bandwidth_internal

Alex Deucher alexdeucher at gmail.com
Mon Aug 10 15:38:22 UTC 2020


On Sat, Aug 8, 2020 at 4:51 PM Daniel Kolesa <daniel at octaforge.org> wrote:
>
> GFP_KERNEL may and will sleep, and this is being executed in
> a non-preemptible context; this will mess things up since it's
> called inbetween DC_FP_START/END, and rescheduling will result
> in the DC_FP_END later being called in a different context (or
> just crashing if any floating point/vector registers/instructions
> are used after the call is resumed in a different context).
>
> Signed-off-by: Daniel Kolesa <daniel at octaforge.org>

We should probably find a way to pre-allocate this, but in the
meantime, I'll apply the patch.

Thanks!

Alex


> ---
>  drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
> index 991eddd10952..c31d1f30e505 100644
> --- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c
> @@ -3141,7 +3141,7 @@ static bool dcn20_validate_bandwidth_internal(struct dc *dc, struct dc_state *co
>         int vlevel = 0;
>         int pipe_split_from[MAX_PIPES];
>         int pipe_cnt = 0;
> -       display_e2e_pipe_params_st *pipes = kzalloc(dc->res_pool->pipe_count * sizeof(display_e2e_pipe_params_st), GFP_KERNEL);
> +       display_e2e_pipe_params_st *pipes = kzalloc(dc->res_pool->pipe_count * sizeof(display_e2e_pipe_params_st), GFP_ATOMIC);
>         DC_LOGGER_INIT(dc->ctx->logger);
>
>         BW_VAL_TRACE_COUNT();
> --
> 2.28.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list