Message ID | 20221114162207.62559-1-andriy.shevchenko@linux.intel.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp2234811wru; Mon, 14 Nov 2022 08:24:42 -0800 (PST) X-Google-Smtp-Source: AA0mqf6woBlhHjM0WwujVLvWHLr5XvzXUHKDlGIz/hZcXyS75ai+AU6uov2rPVPBbLIxJqGbd4PE X-Received: by 2002:a17:907:91c2:b0:7ad:e1d6:280b with SMTP id h2-20020a17090791c200b007ade1d6280bmr10504191ejz.512.1668443082583; Mon, 14 Nov 2022 08:24:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668443082; cv=none; d=google.com; s=arc-20160816; b=vhCSbC2zaOHFJw6Yecr9m7XFp9C8zdF3ZKo09G15QRpHN6DmkDfij1G+BeKdJedxK9 /t+/9knvm9RD/I7qalx3q0EYLjQlQzn/IlzZSEAt0aNTugaSSNKhKmmT3b1CXXys4de2 ALMVd3vT8NY+3qPEfBBfpZED8XyObQPOGSp2UPcQB++jzk8SQq6r65kf0d5VZzJf/wOA i+XWuLN6J5ScOYAPF0pZgZDItqzRXIyFn52fgmt+27Fz+QJuUIIExtrnTYGFFeO3TCRI hnPQJcDuVsJvql7uogdtuAsSuQ92SXCzcTzsjEuDUI0QMCmlToBV0AIHl9mGPIED7T3I owRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=BqzgYyzO4KIkn9dH84OqGtAydsF8twonfocvMzalGE4=; b=cFexgfeKtaThn0rPnoUlLhKnwxYwHCTESFNHxoNJsv+P4V5I1W42IPm5h5Tul32K85 dALgWD7RrvtX7MwCtqy7nGsciKyda0zXqeg9+CbTUZKj5bpZmuKhhbS99IWkncr4zFSm WIM28p/9TeOYF9sBqqkR768GeVAsw4t6mqlHjnROn/Hqg/HNzETJumaE5bA9VmKjlTui LBl+XKZIBtGXsJfF9rtGHKV26GsA0EoSPc/0q1xHAxbmyoV45Ua9qq6hWRp+k+lCceIv Wu4TKtbQTAx4CrEqHNHALWYcUKBt0Tk1KK/r8QQ1It59sUrsYa/EFLuD1vgkT8gdv4A5 P/Qw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=RRrSCX3B; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i23-20020a50fc17000000b00463ba265d95si7495152edr.392.2022.11.14.08.23.59; Mon, 14 Nov 2022 08:24:42 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=RRrSCX3B; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237008AbiKNQWH (ORCPT <rfc822;winker.wchi@gmail.com> + 99 others); Mon, 14 Nov 2022 11:22:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56940 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236816AbiKNQVw (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 14 Nov 2022 11:21:52 -0500 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 000F81A07C; Mon, 14 Nov 2022 08:21:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668442911; x=1699978911; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=42wLHufKcTQDWt2yx4w3/+GC/vlLxKREtDgJtLik068=; b=RRrSCX3BxyhmGxkI+3rOJyzSQh/uFeuYNCYH4vr7y1GCA/bIBHPZRDqX Ozv/JsZTdCnWYVCPLNnaxMEsAkp9RWNf/bAycnrSUoLCpJVV1Xhfq5yFq 9J60bz8NH/dRZ2/Fdn29Qv+lrnQPYZ9U7HEvYxcrjo1sQI5j4CbiJYuxA Y9QDHqR6VkbXvL+0/L7aLPMbdOYLdl9aj0Bwk92h/h66rZgbR9x5GAJWF Y1OlITDcetj2RPOXFX7J65e4pWkks0yVMCfmBHMUVnrpdDqrMD6IIX2OA hehzXWmU7ycnXmJRsc5ouZTJ5GtZTQCfa/FQ1SFyKHvqSyUGXatBG6qH6 g==; X-IronPort-AV: E=McAfee;i="6500,9779,10531"; a="398302929" X-IronPort-AV: E=Sophos;i="5.96,164,1665471600"; d="scan'208";a="398302929" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Nov 2022 08:21:50 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10531"; a="616372365" X-IronPort-AV: E=Sophos;i="5.96,164,1665471600"; d="scan'208";a="616372365" Received: from black.fi.intel.com ([10.237.72.28]) by orsmga006.jf.intel.com with ESMTP; 14 Nov 2022 08:21:46 -0800 Received: by black.fi.intel.com (Postfix, from userid 1003) id A79732F3; Mon, 14 Nov 2022 18:22:10 +0200 (EET) From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> To: Jakob Koschel <jakobkoschel@gmail.com>, Andy Shevchenko <andriy.shevchenko@linux.intel.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Mathias Nyman <mathias.nyman@linux.intel.com>, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org Cc: Jani Nikula <jani.nikula@linux.intel.com>, Joonas Lahtinen <joonas.lahtinen@linux.intel.com>, Rodrigo Vivi <rodrigo.vivi@intel.com>, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>, David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>, Kevin Cernekee <cernekee@gmail.com>, Mathias Nyman <mathias.nyman@intel.com>, Andrew Morton <akpm@linux-foundation.org> Subject: [PATCH v2 1/4] i915: Move list_count() to list.h for broader use Date: Mon, 14 Nov 2022 18:22:04 +0200 Message-Id: <20221114162207.62559-1-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749489373663846636?= X-GMAIL-MSGID: =?utf-8?q?1749489373663846636?= |
Series |
[v2,1/4] i915: Move list_count() to list.h for broader use
|
|
Commit Message
Andy Shevchenko
Nov. 14, 2022, 4:22 p.m. UTC
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.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
v2: dropped the duplicate code in i915 (LKP)
drivers/gpu/drm/i915/gt/intel_engine_cs.c | 13 +------------
include/linux/list.h | 13 +++++++++++++
2 files changed, 14 insertions(+), 12 deletions(-)
Comments
>-----Original Message----- >From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of >Andy Shevchenko >Sent: Monday, November 14, 2022 11:22 AM >To: Jakob Koschel <jakobkoschel@gmail.com>; Andy Shevchenko ><andriy.shevchenko@linux.intel.com>; Greg Kroah-Hartman ><gregkh@linuxfoundation.org>; Mathias Nyman ><mathias.nyman@linux.intel.com>; intel-gfx@lists.freedesktop.org; dri- >devel@lists.freedesktop.org; linux-kernel@vger.kernel.org; linux- >usb@vger.kernel.org >Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>; Kevin Cernekee ><cernekee@gmail.com>; Nyman, Mathias <mathias.nyman@intel.com>; Vivi, >Rodrigo <rodrigo.vivi@intel.com>; Andrew Morton <akpm@linux- >foundation.org> >Subject: [PATCH v2 1/4] i915: Move list_count() to list.h 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. > >Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> >--- >v2: dropped the duplicate code in i915 (LKP) > drivers/gpu/drm/i915/gt/intel_engine_cs.c | 13 +------------ > include/linux/list.h | 13 +++++++++++++ > 2 files changed, 14 insertions(+), 12 deletions(-) > >diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c >b/drivers/gpu/drm/i915/gt/intel_engine_cs.c >index 6ae8b07cfaa1..b5d474be564d 100644 >--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c >+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c >@@ -2085,17 +2085,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); >@@ -2270,7 +2259,7 @@ 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", >+ drm_printf(m, "\tOn hold?: %zu\n", > list_count(&engine->sched_engine->hold)); > spin_unlock_irqrestore(&engine->sched_engine->lock, flags); > >diff --git a/include/linux/list.h b/include/linux/list.h >index 61762054b4be..098eccf8c1b6 100644 >--- a/include/linux/list.h >+++ b/include/linux/list.h >@@ -655,6 +655,19 @@ static inline void list_splice_tail_init(struct list_head >*list, > !list_is_head(pos, (head)); \ > pos = n, n = pos->prev) > >+/** >+ * list_count - count nodes in the list >+ * @head: the head for your list. >+ */ >+#define list_count(head) \ >+({ \ >+ struct list_head *__tmp; \ >+ size_t __i = 0; \ >+ list_for_each(__tmp, head) \ >+ __i++; \ >+ __i; \ >+}) So all of the non-list_for_each code appears to be an inline. This which, resembles the non-list_for_each pattern is a macro? Just curious as to why the macro rather than inline? Mike + > /** > * list_entry_is_head - test if the entry points to the head of the list > * @pos: the type * to cursor >-- >2.35.1
On Mon, Nov 14, 2022 at 06:11:51PM +0000, Ruhl, Michael J wrote: ... > So all of the non-list_for_each code appears to be an inline. This is not true. > This which, resembles the non-list_for_each pattern is a macro? > > Just curious as to why the macro rather than inline? See above. However, I'm fine with the inline.
On Mon, 14 Nov 2022, Andy Shevchenko <andriy.shevchenko@linux.intel.com> 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. I think I'd find list_length() a much more natural name for this. *shrug* Acked-by: Jani Nikula <jani.nikula@intel.com> regardless of what you decide to do with name or static inline etc. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > --- > v2: dropped the duplicate code in i915 (LKP) > drivers/gpu/drm/i915/gt/intel_engine_cs.c | 13 +------------ > include/linux/list.h | 13 +++++++++++++ > 2 files changed, 14 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c > index 6ae8b07cfaa1..b5d474be564d 100644 > --- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c > +++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c > @@ -2085,17 +2085,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); > @@ -2270,7 +2259,7 @@ 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", > + drm_printf(m, "\tOn hold?: %zu\n", > list_count(&engine->sched_engine->hold)); > spin_unlock_irqrestore(&engine->sched_engine->lock, flags); > > diff --git a/include/linux/list.h b/include/linux/list.h > index 61762054b4be..098eccf8c1b6 100644 > --- a/include/linux/list.h > +++ b/include/linux/list.h > @@ -655,6 +655,19 @@ static inline void list_splice_tail_init(struct list_head *list, > !list_is_head(pos, (head)); \ > pos = n, n = pos->prev) > > +/** > + * list_count - count nodes in the list > + * @head: the head for your list. > + */ > +#define list_count(head) \ > +({ \ > + struct list_head *__tmp; \ > + size_t __i = 0; \ > + list_for_each(__tmp, head) \ > + __i++; \ > + __i; \ > +}) > + > /** > * list_entry_is_head - test if the entry points to the head of the list > * @pos: the type * to cursor
On Tue, Nov 15, 2022 at 05:46:28PM +0200, Jani Nikula wrote: > On Mon, 14 Nov 2022, Andy Shevchenko <andriy.shevchenko@linux.intel.com> 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. > > I think I'd find list_length() a much more natural name for this. i915 suggests my variant :-) > *shrug* > > Acked-by: Jani Nikula <jani.nikula@intel.com> > > regardless of what you decide to do with name or static inline etc. Thanks! I will check which one looks and feels better and update for v3.
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c index 6ae8b07cfaa1..b5d474be564d 100644 --- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c +++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c @@ -2085,17 +2085,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); @@ -2270,7 +2259,7 @@ 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", + drm_printf(m, "\tOn hold?: %zu\n", list_count(&engine->sched_engine->hold)); spin_unlock_irqrestore(&engine->sched_engine->lock, flags); diff --git a/include/linux/list.h b/include/linux/list.h index 61762054b4be..098eccf8c1b6 100644 --- a/include/linux/list.h +++ b/include/linux/list.h @@ -655,6 +655,19 @@ static inline void list_splice_tail_init(struct list_head *list, !list_is_head(pos, (head)); \ pos = n, n = pos->prev) +/** + * list_count - count nodes in the list + * @head: the head for your list. + */ +#define list_count(head) \ +({ \ + struct list_head *__tmp; \ + size_t __i = 0; \ + list_for_each(__tmp, head) \ + __i++; \ + __i; \ +}) + /** * list_entry_is_head - test if the entry points to the head of the list * @pos: the type * to cursor