diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2463-amdgpu-dc-convert-dc_sink-to-kref.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2463-amdgpu-dc-convert-dc_sink-to-kref.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2463-amdgpu-dc-convert-dc_sink-to-kref.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2463-amdgpu-dc-convert-dc_sink-to-kref.patch new file mode 100644 index 00000000..7729755d --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2463-amdgpu-dc-convert-dc_sink-to-kref.patch @@ -0,0 +1,71 @@ +From 1fd19ee9fe9870bb5bd2b6bfc561ad18c3376272 Mon Sep 17 00:00:00 2001 +From: Dave Airlie <airlied@redhat.com> +Date: Tue, 3 Oct 2017 12:39:01 +1000 +Subject: [PATCH 2463/4131] amdgpu/dc: convert dc_sink to kref. + +Refcounts use krefs. + +Signed-off-by: Dave Airlie <airlied@redhat.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc_sink.c | 20 ++++++++++---------- + drivers/gpu/drm/amd/display/dc/dc.h | 2 +- + 2 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_sink.c b/drivers/gpu/drm/amd/display/dc/core/dc_sink.c +index 3d620d3..25fae38 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_sink.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_sink.c +@@ -63,19 +63,19 @@ static bool construct(struct dc_sink *sink, const struct dc_sink_init_data *init + + void dc_sink_retain(struct dc_sink *sink) + { +- ASSERT(atomic_read(&sink->ref_count) > 0); +- atomic_inc(&sink->ref_count); ++ kref_get(&sink->refcount); + } + +-void dc_sink_release(struct dc_sink *sink) ++static void dc_sink_free(struct kref *kref) + { +- ASSERT(atomic_read(&sink->ref_count) > 0); +- atomic_dec(&sink->ref_count); ++ struct dc_sink *sink = container_of(kref, struct dc_sink, refcount); ++ destruct(sink); ++ kfree(sink); ++} + +- if (atomic_read(&sink->ref_count) == 0) { +- destruct(sink); +- kfree(sink); +- } ++void dc_sink_release(struct dc_sink *sink) ++{ ++ kref_put(&sink->refcount, dc_sink_free); + } + + struct dc_sink *dc_sink_create(const struct dc_sink_init_data *init_params) +@@ -88,7 +88,7 @@ struct dc_sink *dc_sink_create(const struct dc_sink_init_data *init_params) + if (false == construct(sink, init_params)) + goto construct_fail; + +- atomic_inc(&sink->ref_count); ++ kref_init(&sink->refcount); + + return sink; + +diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h +index 542ba05..9967d4a 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc.h ++++ b/drivers/gpu/drm/amd/display/dc/dc.h +@@ -983,7 +983,7 @@ struct dc_sink { + struct dc_context *ctx; + + /* private to dc_sink.c */ +- atomic_t ref_count; ++ struct kref refcount; + }; + + void dc_sink_retain(struct dc_sink *sink); +-- +2.7.4 + |