diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2462-amdgpu-dc-convert-dc_stream_state-to-kref.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2462-amdgpu-dc-convert-dc_stream_state-to-kref.patch | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2462-amdgpu-dc-convert-dc_stream_state-to-kref.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2462-amdgpu-dc-convert-dc_stream_state-to-kref.patch new file mode 100644 index 00000000..c8e9f48e --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2462-amdgpu-dc-convert-dc_stream_state-to-kref.patch @@ -0,0 +1,74 @@ +From 21ba93045b24b79039ffe5b27134e3a06aa59b66 Mon Sep 17 00:00:00 2001 +From: Dave Airlie <airlied@redhat.com> +Date: Tue, 3 Oct 2017 12:39:00 +1000 +Subject: [PATCH 2462/4131] amdgpu/dc: convert dc_stream_state to kref. + +Signed-off-by: Dave Airlie <airlied@redhat.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 22 +++++++++++----------- + drivers/gpu/drm/amd/display/dc/dc.h | 2 +- + 2 files changed, 12 insertions(+), 12 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +index a9919641..23df7bc 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +@@ -118,20 +118,21 @@ static void destruct(struct dc_stream_state *stream) + + void dc_stream_retain(struct dc_stream_state *stream) + { +- ASSERT(atomic_read(&stream->ref_count) > 0); +- atomic_inc(&stream->ref_count); ++ kref_get(&stream->refcount); ++} ++ ++static void dc_stream_free(struct kref *kref) ++{ ++ struct dc_stream_state *stream = container_of(kref, struct dc_stream_state, refcount); ++ ++ destruct(stream); ++ kfree(stream); + } + + void dc_stream_release(struct dc_stream_state *stream) + { + if (stream != NULL) { +- ASSERT(atomic_read(&stream->ref_count) > 0); +- atomic_dec(&stream->ref_count); +- +- if (atomic_read(&stream->ref_count) == 0) { +- destruct(stream); +- kfree(stream); +- } ++ kref_put(&stream->refcount, dc_stream_free); + } + } + +@@ -149,10 +150,9 @@ struct dc_stream_state *dc_create_stream_for_sink( + + construct(stream, sink); + +- atomic_inc(&stream->ref_count); ++ kref_init(&stream->refcount); + + return stream; +- + } + + struct dc_stream_status *dc_stream_get_status( +diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h +index 857f4d5..542ba05 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc.h ++++ b/drivers/gpu/drm/amd/display/dc/dc.h +@@ -570,7 +570,7 @@ struct dc_stream_state { + struct dc_stream_status status; + + /* from stream struct */ +- atomic_t ref_count; ++ struct kref refcount; + }; + + struct dc_stream_update { +-- +2.7.4 + |