Reviewed-by: Andrey Grodzovsky <andrey.grodzovsky@xxxxxxx> Andrey On 8/9/19 2:59 PM, Alex Deucher wrote: > It's large and doesn't need contiguous memory. Fixes > allocation failures in some cases. > > v2: kvfree the memory. > > Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > drivers/gpu/drm/amd/display/dc/core/dc.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c > index 252b621d93a9..21fb7ee17c9c 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c > @@ -23,6 +23,7 @@ > */ > > #include <linux/slab.h> > +#include <linux/mm.h> > > #include "dm_services.h" > > @@ -1183,8 +1184,8 @@ bool dc_post_update_surfaces_to_stream(struct dc *dc) > > struct dc_state *dc_create_state(struct dc *dc) > { > - struct dc_state *context = kzalloc(sizeof(struct dc_state), > - GFP_KERNEL); > + struct dc_state *context = kvzalloc(sizeof(struct dc_state), > + GFP_KERNEL); > > if (!context) > return NULL; > @@ -1204,11 +1205,11 @@ struct dc_state *dc_create_state(struct dc *dc) > struct dc_state *dc_copy_state(struct dc_state *src_ctx) > { > int i, j; > - struct dc_state *new_ctx = kmemdup(src_ctx, > - sizeof(struct dc_state), GFP_KERNEL); > + struct dc_state *new_ctx = kvmalloc(sizeof(struct dc_state), GFP_KERNEL); > > if (!new_ctx) > return NULL; > + memcpy(new_ctx, src_ctx, sizeof(struct dc_state)); > > for (i = 0; i < MAX_PIPES; i++) { > struct pipe_ctx *cur_pipe = &new_ctx->res_ctx.pipe_ctx[i]; > @@ -1242,7 +1243,7 @@ static void dc_state_free(struct kref *kref) > { > struct dc_state *context = container_of(kref, struct dc_state, refcount); > dc_resource_state_destruct(context); > - kfree(context); > + kvfree(context); > } > > void dc_release_state(struct dc_state *context) _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx