mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 07:51:16 -04:00
amdgpu/dc: convert dc_gamma to kref reference counting.
Rolling your own reference counting is frowned upon. Signed-off-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
9305213256
commit
5c58ab0bd6
@@ -129,18 +129,18 @@ void dc_plane_state_release(struct dc_plane_state *plane_state)
|
||||
|
||||
void dc_gamma_retain(struct dc_gamma *gamma)
|
||||
{
|
||||
ASSERT(atomic_read(&gamma->ref_count) > 0);
|
||||
atomic_inc(&gamma->ref_count);
|
||||
kref_get(&gamma->refcount);
|
||||
}
|
||||
|
||||
static void dc_gamma_free(struct kref *kref)
|
||||
{
|
||||
struct dc_gamma *gamma = container_of(kref, struct dc_gamma, refcount);
|
||||
kfree(gamma);
|
||||
}
|
||||
|
||||
void dc_gamma_release(struct dc_gamma **gamma)
|
||||
{
|
||||
ASSERT(atomic_read(&(*gamma)->ref_count) > 0);
|
||||
atomic_dec(&(*gamma)->ref_count);
|
||||
|
||||
if (atomic_read(&(*gamma)->ref_count) == 0)
|
||||
kfree((*gamma));
|
||||
|
||||
kref_put(&(*gamma)->refcount, dc_gamma_free);
|
||||
*gamma = NULL;
|
||||
}
|
||||
|
||||
@@ -151,8 +151,7 @@ struct dc_gamma *dc_create_gamma()
|
||||
if (gamma == NULL)
|
||||
goto alloc_fail;
|
||||
|
||||
atomic_inc(&gamma->ref_count);
|
||||
|
||||
kref_init(&gamma->refcount);
|
||||
return gamma;
|
||||
|
||||
alloc_fail:
|
||||
|
||||
@@ -420,6 +420,7 @@ enum dc_gamma_type {
|
||||
};
|
||||
|
||||
struct dc_gamma {
|
||||
struct kref refcount;
|
||||
enum dc_gamma_type type;
|
||||
unsigned int num_entries;
|
||||
|
||||
@@ -431,9 +432,6 @@ struct dc_gamma {
|
||||
|
||||
/* private to DC core */
|
||||
struct dc_context *ctx;
|
||||
|
||||
/* private to dc_surface.c */
|
||||
atomic_t ref_count;
|
||||
};
|
||||
|
||||
/* Used by both ipp amd opp functions*/
|
||||
|
||||
Reference in New Issue
Block a user