aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2462-amdgpu-dc-convert-dc_stream_state-to-kref.patch
diff options
context:
space:
mode:
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.patch74
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
+