aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.10/950-0691-drm-vc4-replace-idr_init-by-idr_init_base.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.10/950-0691-drm-vc4-replace-idr_init-by-idr_init_base.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.10/950-0691-drm-vc4-replace-idr_init-by-idr_init_base.patch32
1 files changed, 32 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.10/950-0691-drm-vc4-replace-idr_init-by-idr_init_base.patch b/target/linux/bcm27xx/patches-5.10/950-0691-drm-vc4-replace-idr_init-by-idr_init_base.patch
new file mode 100644
index 0000000000..2e9a8483a5
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.10/950-0691-drm-vc4-replace-idr_init-by-idr_init_base.patch
@@ -0,0 +1,32 @@
+From b19ef92e9e95765bab9b952aa781363fe2917254 Mon Sep 17 00:00:00 2001
+From: Deepak R Varma <mh12gx2825@gmail.com>
+Date: Fri, 6 Nov 2020 01:51:35 +0530
+Subject: [PATCH] drm/vc4: replace idr_init() by idr_init_base()
+
+idr_init() uses base 0 which is an invalid identifier for this driver.
+The idr_alloc for this driver uses VC4_PERFMONID_MIN as start value for
+ID range and it is #defined to 1. The new function idr_init_base allows
+IDR to set the ID lookup from base 1. This avoids all lookups that
+otherwise starts from 0 since 0 is always unused / available.
+
+References: commit 6ce711f27500 ("idr: Make 1-based IDRs more efficient")
+
+Signed-off-by: Deepak R Varma <mh12gx2825@gmail.com>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Signed-off-by: Maxime Ripard <maxime@cerno.tech>
+Link: https://patchwork.freedesktop.org/patch/msgid/20201105202135.GA145111@localhost
+---
+ drivers/gpu/drm/vc4/vc4_perfmon.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_perfmon.c
++++ b/drivers/gpu/drm/vc4/vc4_perfmon.c
+@@ -77,7 +77,7 @@ struct vc4_perfmon *vc4_perfmon_find(str
+ void vc4_perfmon_open_file(struct vc4_file *vc4file)
+ {
+ mutex_init(&vc4file->perfmon.lock);
+- idr_init(&vc4file->perfmon.idr);
++ idr_init_base(&vc4file->perfmon.idr, VC4_PERFMONID_MIN);
+ }
+
+ static int vc4_perfmon_idr_del(int id, void *elem, void *data)