On Mon, Aug 10, 2020, at 17:38, Alex Deucher wrote:
> On Sat, Aug 8, 2020 at 4:51 PM Daniel Kolesa <[email protected]> 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 <[email protected]>
> 
> We should probably find a way to pre-allocate this, but in the
> meantime, I'll apply the patch.

Indeed. But this should work as an immediate solution for people experiencing 
issues. For me it completely stopped dmesg noise on ppc64le and aarch64, and 
seemingly even fixed the screen flicker problem on POWER that I had to formerly 
work around by forcing the clocks to high (been running it for days and it's 
worked perfectly fine with adaptive during the time).

Daniel

> 
> 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
> > [email protected]
> > https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to