From nobody Tue Oct 7 21:46:30 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 70EB7232376; Tue, 3 Jun 2025 11:27:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748950055; cv=none; b=lOxQP3SVWYd8/7NJwQlYqnb/oCsG+3vlCXFnjXW/wZURMMDPe0WZ3I5tWP8dUKZicMY6iI3PgZHBSh7lxb9jmAHVs6K9VyVTKNOZo5nO/grCJU3I5JFUf/ZtJdtnOfVfVvpa4B5ONuGocOlMtVM5+5eYbDBRHFyDf+BSJcpM7QM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748950055; c=relaxed/simple; bh=ZSuWrJqcRG0fZBfEpAnoMZcPrT51R+tXgrmuxmFyo9k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Hw9y5ZUQB1oDCdJyE2I5d8gTxjZCBLMdOnmqeeTSuzRr+PTngJvP/rqHkPKp6eFdB5tR/MdTPq0hcz/fGu0DRS63DnpFa3WTC9bFNNQJ9sNIAWqhFKKN2C3vGSuhpIVHkO0PdWCZDX/KcBx8uQTxUpFOXGwmw5k1NFWOPqjvJbs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aOvVh4pp; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="aOvVh4pp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1B720C4CEF6; Tue, 3 Jun 2025 11:27:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748950054; bh=ZSuWrJqcRG0fZBfEpAnoMZcPrT51R+tXgrmuxmFyo9k=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=aOvVh4ppwUUSmAYBDnbt29krMdbdbaWjNvCsdyaQ+tArexX1PEjT7S3sIl7M3zkud MqnuZsLkI7ZzXz6v0LJcPzEVeoF8f0sX15y/N5qFXIqcA5zLHnmKCoQ8uY34cVl7Fk ugqkZYJLA2jFgR+niNrUCDNVfM1yl1X+eF9E34Vi0RGuaUyF5aJS1ydtXDdU3IULkE HcjCa+/Bw595uCWY/vlhWostfhW7SlnNtEVK4rjiPTQszMwvGep7FBdMtL7tO/vHS+ LVe6w4ZW92t3ao48QWfKPQWxMP9W+3a+MTM9MbcvjWxSarBBSbVxAnTkdwee5CorMI Lx2WQNhyjMvUg== From: Jeff Layton Date: Tue, 03 Jun 2025 07:27:15 -0400 Subject: [PATCH v13 4/9] ref_tracker: add a static classname string to each ref_tracker_dir Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250603-reftrack-dbgfs-v13-4-7b2a425019d8@kernel.org> References: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@kernel.org> In-Reply-To: <20250603-reftrack-dbgfs-v13-0-7b2a425019d8@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Krzysztof Karas , Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6203; i=jlayton@kernel.org; h=from:subject:message-id; bh=ZSuWrJqcRG0fZBfEpAnoMZcPrT51R+tXgrmuxmFyo9k=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoPtwaD7eBe0kVngsa16kqlskkSTfWpCKHX4jLw 3/940UglTKJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaD7cGgAKCRAADmhBGVaC FVa6D/9cJV+3Q38vcKMHXmTrGWs8rO+Mg99Qpu4HjPpE15rrYvV4DgtJDR1GKOJsRiGFQSc6te2 Skgq9V2qmVJ/NGI6zMDuVMYXv3m97D8RRdS23HX4qZ6HO7Fxg+IpK8jrXmxzUs6wU8ZVYlpogQy gS5w5K0Xxf9OAuxjRbPeroHMkiXssEpobTg/GeKPSXmRP2WwdoZB58S9Qe5huVww4kDNAX5Kie+ tYHzbIdPbgrbSrmcFkkVipWLYXcmcIjpMah0JtymiOLj0prb2+uRsaIo3pr2CzjGg6oieRYCDv/ QaYivSVcWnLPBtjYk+dJ8/LOiwMlIZhcs9WNMzy/xKpyRtSwN69er4fzkbdkviuJdD271GvxpiW RDxuSZMnuTYoFHQ7OPp4xJTSkAYFy0ZiKpb7q1lE1HSeuhCycMcGJ10k9Rv+h0kTZ8OX3SFVRi+ LspvSGCt6DMnK56kt3gqTl89ZFKBxAYXsDtsvrEcx39+p/bKtpoq9WfLFQ+u+OrqHCnpt3aZe3r 0tMJTF+KBDEzy62qzIN9wriH/ToXcTcxAlDq7dSn50z/URHZJuZNhBNI6ELO/PWSu48trb+RHB6 DST5zMo2ZTWFeyi5QYjLw6xtPz1eRdBnv6t7AC64HBGBEvCfkOHSoLfYzXaD4XS7mhZt+vWyhUP nfvIFEsAgpIbLxw== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 A later patch in the series will be adding debugfs files for each ref_tracker that get created in ref_tracker_dir_init(). The format will be "class@%px". The current "name" string can vary between ref_tracker_dir objects of the same type, so it's not suitable for this purpose. Add a new "class" string to the ref_tracker dir that describes the the type of object (sans any individual info for that object). Also, in the i915 driver, gate the creation of debugfs files on whether the dentry pointer is still set to NULL. CI has shown that the ref_tracker_dir can be initialized more than once. Signed-off-by: Jeff Layton --- drivers/gpu/drm/display/drm_dp_tunnel.c | 2 +- drivers/gpu/drm/i915/intel_runtime_pm.c | 4 +++- drivers/gpu/drm/i915/intel_wakeref.c | 3 ++- include/linux/ref_tracker.h | 4 ++++ lib/test_ref_tracker.c | 2 +- net/core/dev.c | 2 +- net/core/net_namespace.c | 4 ++-- 7 files changed, 14 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_tunnel.c b/drivers/gpu/drm/disp= lay/drm_dp_tunnel.c index 076edf1610480275c62395334ab0536befa42f15..b9c12b8bf2a3e400b6d8e9d1841= 45834c603b9e1 100644 --- a/drivers/gpu/drm/display/drm_dp_tunnel.c +++ b/drivers/gpu/drm/display/drm_dp_tunnel.c @@ -1920,7 +1920,7 @@ drm_dp_tunnel_mgr_create(struct drm_device *dev, int = max_group_count) } =20 #ifdef CONFIG_DRM_DISPLAY_DP_TUNNEL_STATE_DEBUG - ref_tracker_dir_init(&mgr->ref_tracker, 16, "dptun"); + ref_tracker_dir_init(&mgr->ref_tracker, 16, "drm_dptun", "dptun"); #endif =20 for (i =3D 0; i < max_group_count; i++) { diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915= /intel_runtime_pm.c index 8d9f4c410546e4144d4bc8bbc6696f3bd9498848..90d90145a1890bf788e789858dd= ad3b3d8e3b978 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -59,7 +59,9 @@ static struct drm_i915_private *rpm_to_i915(struct intel_= runtime_pm *rpm) =20 static void init_intel_runtime_pm_wakeref(struct intel_runtime_pm *rpm) { - ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, dev_name(rpm= ->kdev)); + if (!rpm->debug.class) + ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, + "intel_runtime_pm", dev_name(rpm->kdev)); } =20 static intel_wakeref_t diff --git a/drivers/gpu/drm/i915/intel_wakeref.c b/drivers/gpu/drm/i915/in= tel_wakeref.c index 07e81be4d3920febece34709c63a63204a41583c..21dcee7c9a659ac1fb0aa19f301= 8647be3bda754 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.c +++ b/drivers/gpu/drm/i915/intel_wakeref.c @@ -114,7 +114,8 @@ void __intel_wakeref_init(struct intel_wakeref *wf, "wakeref.work", &key->work, 0); =20 #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_WAKEREF) - ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, name); + if (!wf->debug.class) + ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, "intel_waker= ef", name); #endif } =20 diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index a0a1ee43724ffa00e60c116be18e481bfe1d1455..3968f993db81e95c0d58c814543= 11841c1b9cd35 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -19,6 +19,7 @@ struct ref_tracker_dir { bool dead; struct list_head list; /* List of active trackers */ struct list_head quarantine; /* List of dead trackers */ + const char *class; /* object classname */ char name[32]; #endif }; @@ -27,6 +28,7 @@ struct ref_tracker_dir { =20 static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, unsigned int quarantine_count, + const char *class, const char *name) { INIT_LIST_HEAD(&dir->list); @@ -36,6 +38,7 @@ static inline void ref_tracker_dir_init(struct ref_tracke= r_dir *dir, dir->dead =3D false; refcount_set(&dir->untracked, 1); refcount_set(&dir->no_tracker, 1); + dir->class =3D class; strscpy(dir->name, name, sizeof(dir->name)); stack_depot_init(); } @@ -60,6 +63,7 @@ int ref_tracker_free(struct ref_tracker_dir *dir, =20 static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, unsigned int quarantine_count, + const char *class, const char *name) { } diff --git a/lib/test_ref_tracker.c b/lib/test_ref_tracker.c index b983ceb12afcb84ad60360a1e6fec0072e78ef79..d263502a4c1db248f64a66a468e= 96c8e4cffab25 100644 --- a/lib/test_ref_tracker.c +++ b/lib/test_ref_tracker.c @@ -64,7 +64,7 @@ static int __init test_ref_tracker_init(void) { int i; =20 - ref_tracker_dir_init(&ref_dir, 100, "selftest"); + ref_tracker_dir_init(&ref_dir, 100, "selftest", "selftest"); =20 timer_setup(&test_ref_tracker_timer, test_ref_tracker_timer_func, 0); mod_timer(&test_ref_tracker_timer, jiffies + 1); diff --git a/net/core/dev.c b/net/core/dev.c index 2b514d95c528b8d6da8f34a8955da76117958b63..eeb6aab16987dde277314d1a6b5= bd32eaabab893 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -11714,7 +11714,7 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv= , const char *name, =20 dev->priv_len =3D sizeof_priv; =20 - ref_tracker_dir_init(&dev->refcnt_tracker, 128, name); + ref_tracker_dir_init(&dev->refcnt_tracker, 128, "netdev", name); #ifdef CONFIG_PCPU_DEV_REFCNT dev->pcpu_refcnt =3D alloc_percpu(int); if (!dev->pcpu_refcnt) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 42ee7fce3d95b5a2756d6a3780edba070f01ddb6..8708eb975295ffb78de35fcf4ab= ef7cc281f5a51 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -403,8 +403,8 @@ static __net_init void preinit_net(struct net *net, str= uct user_namespace *user_ { refcount_set(&net->passive, 1); refcount_set(&net->ns.count, 1); - ref_tracker_dir_init(&net->refcnt_tracker, 128, "net refcnt"); - ref_tracker_dir_init(&net->notrefcnt_tracker, 128, "net notrefcnt"); + ref_tracker_dir_init(&net->refcnt_tracker, 128, "net_refcnt", "net_refcnt= "); + ref_tracker_dir_init(&net->notrefcnt_tracker, 128, "net_notrefcnt", "net_= notrefcnt"); =20 get_random_bytes(&net->hash_mix, sizeof(u32)); net->dev_base_seq =3D 1; --=20 2.49.0