dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use
@ 2022-11-30 13:48 Andy Shevchenko
  2022-11-30 13:48 ` [PATCH v5 2/4] usb: gadget: hid: Convert to use list_count_nodes() Andy Shevchenko
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Andy Shevchenko @ 2022-11-30 13:48 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Andy Shevchenko, Mathias Nyman, intel-gfx,
	dri-devel, linux-kernel, linux-usb
  Cc: Tvrtko Ursulin, Kevin Cernekee, Mathias Nyman, Jani Nikula,
	Lucas De Marchi, Rodrigo Vivi

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 <lucas.demarchi@intel.com>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v5: added tag (Lucas), renamed API to list_count_nodes() (LKP)
v4: fixed prototype when converting to static inline
v3: added tag (Jani), changed to be static inline (Mike)
v2: dropped the duplicate code in i915 (LKP)
 drivers/gpu/drm/i915/gt/intel_engine_cs.c | 15 ++-------------
 include/linux/list.h                      | 15 +++++++++++++++
 2 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index 1f7188129cd1..370164363b0d 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -2004,17 +2004,6 @@ static void print_request_ring(struct drm_printer *m, struct i915_request *rq)
 	}
 }
 
-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);
@@ -2189,8 +2178,8 @@ void intel_engine_dump(struct intel_engine_cs *engine,
 	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);
diff --git a/include/linux/list.h b/include/linux/list.h
index 61762054b4be..f10344dbad4d 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -655,6 +655,21 @@ static inline void list_splice_tail_init(struct list_head *list,
 	     !list_is_head(pos, (head)); \
 	     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
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v5 2/4] usb: gadget: hid: Convert to use list_count_nodes()
  2022-11-30 13:48 [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use Andy Shevchenko
@ 2022-11-30 13:48 ` Andy Shevchenko
  2022-11-30 13:48 ` [PATCH v5 3/4] usb: gadget: udc: bcm63xx: " Andy Shevchenko
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2022-11-30 13:48 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Andy Shevchenko, Mathias Nyman, intel-gfx,
	dri-devel, linux-kernel, linux-usb
  Cc: Tvrtko Ursulin, Kevin Cernekee, Mathias Nyman, Rodrigo Vivi

The list API provides the list_count_nodes() to help with counting
existing nodes in the list. Utilise it.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v5: used renamed API (LKP)
v4: no change
v3: fixed typo in the commit message (Fabio)                                                                     
v2: no change
 drivers/usb/gadget/legacy/hid.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/usb/gadget/legacy/hid.c b/drivers/usb/gadget/legacy/hid.c
index 1187ee4f316a..133daf88162e 100644
--- a/drivers/usb/gadget/legacy/hid.c
+++ b/drivers/usb/gadget/legacy/hid.c
@@ -133,14 +133,11 @@ static struct usb_configuration config_driver = {
 static int hid_bind(struct usb_composite_dev *cdev)
 {
 	struct usb_gadget *gadget = cdev->gadget;
-	struct list_head *tmp;
 	struct hidg_func_node *n = NULL, *m, *iter_n;
 	struct f_hid_opts *hid_opts;
-	int status, funcs = 0;
-
-	list_for_each(tmp, &hidg_func_list)
-		funcs++;
+	int status, funcs;
 
+	funcs = list_count_nodes(&hidg_func_list);
 	if (!funcs)
 		return -ENODEV;
 
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v5 3/4] usb: gadget: udc: bcm63xx: Convert to use list_count_nodes()
  2022-11-30 13:48 [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use Andy Shevchenko
  2022-11-30 13:48 ` [PATCH v5 2/4] usb: gadget: hid: Convert to use list_count_nodes() Andy Shevchenko
@ 2022-11-30 13:48 ` Andy Shevchenko
  2022-11-30 13:48 ` [PATCH v5 4/4] xhci: " Andy Shevchenko
  2022-12-08 12:54 ` [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use Andy Shevchenko
  3 siblings, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2022-11-30 13:48 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Andy Shevchenko, Mathias Nyman, intel-gfx,
	dri-devel, linux-kernel, linux-usb
  Cc: Tvrtko Ursulin, Kevin Cernekee, Mathias Nyman, Rodrigo Vivi

The list API provides the list_count_nodes() to help with counting
existing nodes in the list. Utilise it.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v5: used renamed API (LKP)
v4: no change
v3: no change
v2: no change
 drivers/usb/gadget/udc/bcm63xx_udc.c | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/drivers/usb/gadget/udc/bcm63xx_udc.c b/drivers/usb/gadget/udc/bcm63xx_udc.c
index 2cdb07905bde..771ba1ffce95 100644
--- a/drivers/usb/gadget/udc/bcm63xx_udc.c
+++ b/drivers/usb/gadget/udc/bcm63xx_udc.c
@@ -2172,7 +2172,6 @@ static int bcm63xx_iudma_dbg_show(struct seq_file *s, void *p)
 
 	for (ch_idx = 0; ch_idx < BCM63XX_NUM_IUDMA; ch_idx++) {
 		struct iudma_ch *iudma = &udc->iudma[ch_idx];
-		struct list_head *pos;
 
 		seq_printf(s, "IUDMA channel %d -- ", ch_idx);
 		switch (iudma_defaults[ch_idx].ep_type) {
@@ -2205,14 +2204,10 @@ static int bcm63xx_iudma_dbg_show(struct seq_file *s, void *p)
 		seq_printf(s, "  desc: %d/%d used", iudma->n_bds_used,
 			   iudma->n_bds);
 
-		if (iudma->bep) {
-			i = 0;
-			list_for_each(pos, &iudma->bep->queue)
-				i++;
-			seq_printf(s, "; %d queued\n", i);
-		} else {
+		if (iudma->bep)
+			seq_printf(s, "; %zu queued\n", list_count_nodes(&iudma->bep->queue));
+		else
 			seq_printf(s, "\n");
-		}
 
 		for (i = 0; i < iudma->n_bds; i++) {
 			struct bcm_enet_desc *d = &iudma->bd_ring[i];
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v5 4/4] xhci: Convert to use list_count_nodes()
  2022-11-30 13:48 [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use Andy Shevchenko
  2022-11-30 13:48 ` [PATCH v5 2/4] usb: gadget: hid: Convert to use list_count_nodes() Andy Shevchenko
  2022-11-30 13:48 ` [PATCH v5 3/4] usb: gadget: udc: bcm63xx: " Andy Shevchenko
@ 2022-11-30 13:48 ` Andy Shevchenko
  2022-12-08 12:54 ` [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use Andy Shevchenko
  3 siblings, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2022-11-30 13:48 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Andy Shevchenko, Mathias Nyman, intel-gfx,
	dri-devel, linux-kernel, linux-usb
  Cc: Tvrtko Ursulin, Kevin Cernekee, Mathias Nyman, Rodrigo Vivi

The list API provides the list_count_nodes() to help with counting
existing nodes in the list. Utilise it.

Acked-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v5: used renamed API (LKP)
v4: added tag (Mathias)
v3: no change
v2: no change
 drivers/usb/host/xhci-ring.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index ddc30037f9ce..aa4d34efecd2 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2528,7 +2528,6 @@ static int handle_tx_event(struct xhci_hcd *xhci,
 	union xhci_trb *ep_trb;
 	int status = -EINPROGRESS;
 	struct xhci_ep_ctx *ep_ctx;
-	struct list_head *tmp;
 	u32 trb_comp_code;
 	int td_num = 0;
 	bool handling_skipped_tds = false;
@@ -2582,10 +2581,8 @@ static int handle_tx_event(struct xhci_hcd *xhci,
 	}
 
 	/* Count current td numbers if ep->skip is set */
-	if (ep->skip) {
-		list_for_each(tmp, &ep_ring->td_list)
-			td_num++;
-	}
+	if (ep->skip)
+		td_num += list_count_nodes(&ep_ring->td_list);
 
 	/* Look for common error cases */
 	switch (trb_comp_code) {
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use
  2022-11-30 13:48 [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use Andy Shevchenko
                   ` (2 preceding siblings ...)
  2022-11-30 13:48 ` [PATCH v5 4/4] xhci: " Andy Shevchenko
@ 2022-12-08 12:54 ` Andy Shevchenko
  2022-12-08 13:14   ` Greg Kroah-Hartman
  3 siblings, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2022-12-08 12:54 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Mathias Nyman, intel-gfx, dri-devel,
	linux-kernel, linux-usb
  Cc: Tvrtko Ursulin, Kevin Cernekee, Mathias Nyman, Jani Nikula,
	Lucas De Marchi, Rodrigo Vivi

On Wed, Nov 30, 2022 at 03:48:35PM +0200, Andy Shevchenko wrote:
> 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.

Greg, I believe this one is ready to be taken. Or please tell me what I need
to do.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use
  2022-12-08 12:54 ` [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use Andy Shevchenko
@ 2022-12-08 13:14   ` Greg Kroah-Hartman
  2022-12-08 15:53     ` Andy Shevchenko
  0 siblings, 1 reply; 7+ messages in thread
From: Greg Kroah-Hartman @ 2022-12-08 13:14 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Tvrtko Ursulin, Mathias Nyman, Mathias Nyman, Jani Nikula,
	Kevin Cernekee, intel-gfx, linux-usb, Lucas De Marchi,
	linux-kernel, dri-devel, Rodrigo Vivi

On Thu, Dec 08, 2022 at 02:54:45PM +0200, Andy Shevchenko wrote:
> On Wed, Nov 30, 2022 at 03:48:35PM +0200, Andy Shevchenko wrote:
> > 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.
> 
> Greg, I believe this one is ready to be taken. Or please tell me what I need
> to do.

Wait for me to get through the current backlog of patches that I have in
my review queue.  Odds are, it will have to wait until after 6.2-rc1 is
out based on when 6.1 is going to be released.

Don't worry, it's not lost.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use
  2022-12-08 13:14   ` Greg Kroah-Hartman
@ 2022-12-08 15:53     ` Andy Shevchenko
  0 siblings, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2022-12-08 15:53 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Tvrtko Ursulin, Mathias Nyman, Mathias Nyman, Jani Nikula,
	Kevin Cernekee, intel-gfx, linux-usb, Lucas De Marchi,
	linux-kernel, dri-devel, Rodrigo Vivi

On Thu, Dec 08, 2022 at 02:14:54PM +0100, Greg Kroah-Hartman wrote:
> On Thu, Dec 08, 2022 at 02:54:45PM +0200, Andy Shevchenko wrote:
> > On Wed, Nov 30, 2022 at 03:48:35PM +0200, Andy Shevchenko wrote:
> > > 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.
> > 
> > Greg, I believe this one is ready to be taken. Or please tell me what I need
> > to do.
> 
> Wait for me to get through the current backlog of patches that I have in
> my review queue.  Odds are, it will have to wait until after 6.2-rc1 is
> out based on when 6.1 is going to be released.

It's fine, no hurry and take your time!

> Don't worry, it's not lost.

Thank you, got it!

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-12-08 15:53 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-30 13:48 [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use Andy Shevchenko
2022-11-30 13:48 ` [PATCH v5 2/4] usb: gadget: hid: Convert to use list_count_nodes() Andy Shevchenko
2022-11-30 13:48 ` [PATCH v5 3/4] usb: gadget: udc: bcm63xx: " Andy Shevchenko
2022-11-30 13:48 ` [PATCH v5 4/4] xhci: " Andy Shevchenko
2022-12-08 12:54 ` [PATCH v5 1/4] i915: Move list_count() to list.h as list_count_nodes() for broader use Andy Shevchenko
2022-12-08 13:14   ` Greg Kroah-Hartman
2022-12-08 15:53     ` Andy Shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).