|
|
@@ -0,0 +1,75 @@
|
|
|
+From 4d70c74659d9746502b23d055dba03d1d28ec388 Mon Sep 17 00:00:00 2001
|
|
|
+From: Andy Shevchenko <[email protected]>
|
|
|
+Date: Wed, 30 Nov 2022 15:48:35 +0200
|
|
|
+Subject: [PATCH] i915: Move list_count() to list.h as list_count_nodes() for
|
|
|
+ broader use
|
|
|
+
|
|
|
+Some of the existing users, and definitely will be new ones, want to
|
|
|
+count existing nodes in the list. Provide a generic API for that by
|
|
|
+moving code from i915 to list.h.
|
|
|
+
|
|
|
+Reviewed-by: Lucas De Marchi <[email protected]>
|
|
|
+Acked-by: Jani Nikula <[email protected]>
|
|
|
+Signed-off-by: Andy Shevchenko <[email protected]>
|
|
|
+Link: https://lore.kernel.org/r/[email protected]
|
|
|
+Signed-off-by: Greg Kroah-Hartman <[email protected]>
|
|
|
+---
|
|
|
+ drivers/gpu/drm/i915/gt/intel_engine_cs.c | 15 ++-------------
|
|
|
+ include/linux/list.h | 15 +++++++++++++++
|
|
|
+ 2 files changed, 17 insertions(+), 13 deletions(-)
|
|
|
+
|
|
|
+--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
|
|
|
++++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
|
|
|
+@@ -1639,17 +1639,6 @@ static void print_request_ring(struct dr
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+-static unsigned long list_count(struct list_head *list)
|
|
|
+-{
|
|
|
+- struct list_head *pos;
|
|
|
+- unsigned long count = 0;
|
|
|
+-
|
|
|
+- list_for_each(pos, list)
|
|
|
+- count++;
|
|
|
+-
|
|
|
+- return count;
|
|
|
+-}
|
|
|
+-
|
|
|
+ static unsigned long read_ul(void *p, size_t x)
|
|
|
+ {
|
|
|
+ return *(unsigned long *)(p + x);
|
|
|
+@@ -1824,8 +1813,8 @@ void intel_engine_dump(struct intel_engi
|
|
|
+ spin_lock_irqsave(&engine->sched_engine->lock, flags);
|
|
|
+ engine_dump_active_requests(engine, m);
|
|
|
+
|
|
|
+- drm_printf(m, "\tOn hold?: %lu\n",
|
|
|
+- list_count(&engine->sched_engine->hold));
|
|
|
++ drm_printf(m, "\tOn hold?: %zu\n",
|
|
|
++ list_count_nodes(&engine->sched_engine->hold));
|
|
|
+ spin_unlock_irqrestore(&engine->sched_engine->lock, flags);
|
|
|
+
|
|
|
+ drm_printf(m, "\tMMIO base: 0x%08x\n", engine->mmio_base);
|
|
|
+--- a/include/linux/list.h
|
|
|
++++ b/include/linux/list.h
|
|
|
+@@ -628,6 +628,21 @@ static inline void list_splice_tail_init
|
|
|
+ pos = n, n = pos->prev)
|
|
|
+
|
|
|
+ /**
|
|
|
++ * list_count_nodes - count nodes in the list
|
|
|
++ * @head: the head for your list.
|
|
|
++ */
|
|
|
++static inline size_t list_count_nodes(struct list_head *head)
|
|
|
++{
|
|
|
++ struct list_head *pos;
|
|
|
++ size_t count = 0;
|
|
|
++
|
|
|
++ list_for_each(pos, head)
|
|
|
++ count++;
|
|
|
++
|
|
|
++ return count;
|
|
|
++}
|
|
|
++
|
|
|
++/**
|
|
|
+ * list_entry_is_head - test if the entry points to the head of the list
|
|
|
+ * @pos: the type * to cursor
|
|
|
+ * @head: the head for your list.
|