On Sat, Jan 4, 2020 at 2:23 PM Dor Askayo <dor.askayo@xxxxxxxxx> wrote: > > This allocation isn't required and can fail when resuming from suspend. > > Bug: https://gitlab.freedesktop.org/drm/amd/issues/1009 > Signed-off-by: Dor Askayo <dor.askayo@xxxxxxxxx> > --- > drivers/gpu/drm/amd/display/dc/core/dc.c | 17 +++++++++-------- > 1 file changed, 9 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c > index dd4731ab935c..83ebb716166b 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c > @@ -2179,12 +2179,7 @@ void dc_set_power_state( > enum dc_acpi_cm_power_state power_state) > { > struct kref refcount; > - struct display_mode_lib *dml = kzalloc(sizeof(struct display_mode_lib), > - GFP_KERNEL); > - > - ASSERT(dml); > - if (!dml) > - return; > + struct display_mode_lib *dml; > > switch (power_state) { > case DC_ACPI_CM_POWER_STATE_D0: > @@ -2206,6 +2201,12 @@ void dc_set_power_state( > * clean state, and dc hw programming optimizations will not > * cause any trouble. > */ > + dml = kzalloc(sizeof(struct display_mode_lib), > + GFP_KERNEL); > + > + ASSERT(dml); > + if (!dml) > + return; > > /* Preserve refcount */ > refcount = dc->current_state->refcount; > @@ -2219,10 +2220,10 @@ void dc_set_power_state( > dc->current_state->refcount = refcount; > dc->current_state->bw_ctx.dml = *dml; > > + kfree(dml); > + > break; > } > - > - kfree(dml); > } > > void dc_resume(struct dc *dc) > -- > 2.24.1 > I've been running with this fix applied on top of Fedora's 5.3.16-300.fc31.x86_64 kernel for the past two weeks, suspending and resuming often. This the first time since I bought my RX 580 8GB more than a year ago that I can suspend and resume reliably. I'd appreciate a quick review for the above, it really is a trivial change. Thanks, Dor _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel