From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) (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 1028E3090C2; Wed, 17 Dec 2025 15:51:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.40.44.12 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765986680; cv=none; b=TURHz1puOtjuUD0XUFdcT+iS04BYa6iEpB/dKc116rfc871FBo8msXDBdyESaOOiH0gIsnfS11VuiBzd00i1X3HsLgNdlhkDDVkO+KbqEi/onmhvALJ5JX3lFbT7mNa5ypcSwh2pVXkYrvYleYw45qMyWrAWJKh8RAe3flmfH1g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765986680; c=relaxed/simple; bh=BdRGmRmvxQO+3UH/R62a39gXQj+zVVtqVYKZdJqmLFA=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Qaoq4clYqIXwzhhUu23Np4hL2/Mo1XKSjYodB4YqZ0595/oaYh3zbOc3E1nD0gNRlDIQyWPEzQiA7F3zJd45QjP5ew7/jMhvoTji99vy3jlKoYKM+QhCX64BrHxubFTAwHlEK+mBgPFWOWzCPaOQDUxMlDwREoI9JJHmLiVVAWU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=goodmis.org; spf=pass smtp.mailfrom=goodmis.org; arc=none smtp.client-ip=216.40.44.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=goodmis.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goodmis.org Received: from omf17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 5A53413C06C; Wed, 17 Dec 2025 15:51:07 +0000 (UTC) Received: from [HIDDEN] (Authenticated sender: rostedt@goodmis.org) by omf17.hostedemail.com (Postfix) with ESMTPA id 5FE4C17; Wed, 17 Dec 2025 15:51:04 +0000 (UTC) Date: Wed, 17 Dec 2025 10:52:39 -0500 From: Steven Rostedt To: Xiang Gao Cc: sumit.semwal@linaro.org, christian.koenig@amd.com, mhiramat@kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, mathieu.desnoyers@efficios.com, dhowells@redhat.com, kuba@kernel.org, brauner@kernel.org, akpm@linux-foundation.org, linux-trace-kernel@vger.kernel.org, gaoxiang17 Subject: Re: [PATCH v7] dma-buf: add some tracepoints to debug. Message-ID: <20251217105239.713bab41@gandalf.local.home> In-Reply-To: <20251217105132.643300-1-gxxa03070307@gmail.com> References: <20251217105132.643300-1-gxxa03070307@gmail.com> X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Precedence: bulk X-Mailing-List: linux-trace-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 5FE4C17 X-Stat-Signature: tcf4i4fk7xkn5yz87oudjo19k7x567yp X-Rspamd-Server: rspamout08 X-Session-Marker: 726F737465647440676F6F646D69732E6F7267 X-Session-ID: U2FsdGVkX18v1MGMQqn5A+v+lnOyDc37S/bYYW5O1X4= X-HE-Tag: 1765986664-498566 X-HE-Meta: U2FsdGVkX19l2sopADPfAmEBaW7hxuXdjWeW2Fum2wUj2NUV4lBXE+PFynuKUJ5oKDrF75CHCEYvp6h+4A1oSfzHuG3LrpV5q04LvkSHvZ7mYjzEhzT/19hmCsMlpUF/lKbJlatQHe7e5QiOKqg8Er6a3UU00d0JADxKpYBp/UzEPi/YnQPHvOPMZZExuzSnWUZNiGIPEDLriCOqtODyt5byUctZHVEwhLE13Uc3zTKFyRhg/hI7lbe4AZgcqHZaaahqxk7mcLmkCdW4lVHWMDi2cOS6aifGtOC78TZQH+naUZUQ2aySlgSw3eMiEDtqu0QaK9z26kITG8kJzn+BB/v9+GL7dTTz9yHBLs4/nRk8MKxOtH7WGlZ9I8qq2+tTVPlCoUYCfUhrk6n7Vf8jQMrdpG5/FlmzolipjIIjXmk= On Wed, 17 Dec 2025 18:51:32 +0800 Xiang Gao wrote: > From: gaoxiang17 > > Since we can only inspect dmabuf by iterating over process FDs or the > dmabuf_list, we need to add our own tracepoints to track its status in > real time in production. > > For example: > binder:3016_1-3102 [006] ...1. 255.126521: dma_buf_export: exp_name=qcom,system size=12685312 ino=2738 > binder:3016_1-3102 [006] ...1. 255.126528: dma_buf_fd: exp_name=qcom,system size=12685312 ino=2738 fd=8 > binder:3016_1-3102 [006] ...1. 255.126642: dma_buf_mmap_internal: exp_name=qcom,system size=28672 ino=2739 > kworker/6:1-86 [006] ...1. 255.127194: dma_buf_put: exp_name=qcom,system size=12685312 ino=2738 > RenderThread-9293 [006] ...1. 316.618179: dma_buf_get: exp_name=qcom,system size=12771328 ino=2762 fd=176 > RenderThread-9293 [006] ...1. 316.618195: dma_buf_dynamic_attach: exp_name=qcom,system size=12771328 ino=2762 attachment:ffffff880a18dd00 is_dynamic=0 dev_name=kgsl-3d0 > RenderThread-9293 [006] ...1. 318.878220: dma_buf_detach: exp_name=qcom,system size=12771328 ino=2762 attachment:ffffff880a18dd00 is_dynamic=0 dev_name=kgsl-3d0 > > Signed-off-by: Xiang Gao > --- > drivers/dma-buf/dma-buf.c | 42 ++++++++- > include/trace/events/dma_buf.h | 157 +++++++++++++++++++++++++++++++++ > 2 files changed, 198 insertions(+), 1 deletion(-) > create mode 100644 include/trace/events/dma_buf.h > > diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c > index 2bcf9ceca997..ce39bc19e13f 100644 > --- a/drivers/dma-buf/dma-buf.c > +++ b/drivers/dma-buf/dma-buf.c > @@ -35,6 +35,25 @@ > > #include "dma-buf-sysfs-stats.h" > > +#define CREATE_TRACE_POINTS > +#include > + > +/* > + * dmabuf->name must be accessed with holding dmabuf->name_lock. > + * we need to take the lock around the tracepoint call itself where > + * it is called in the code. > + * > + * Note: FUNC##_enabled() is a static branch that will only > + * be set when the trace event is enabled. > + */ Much better. > +#define DMA_BUF_TRACE(FUNC, ...) \ > + do { \ > + if (FUNC##_enabled()) { \ > + guard(spinlock)(&dmabuf->name_lock); \ > + FUNC(__VA_ARGS__); \ > + } \ Hmm, I wonder if we should also add: } else if (IS_ENABLED(CONFIG_LOCKDEP)) { \ /* Expose this lock when lockdep is enabled */ \ guard(spinlock)(&dmabuf->name_lock); \ } This way, if there is any issue taking the lock, lockdep will flag it without having to enable the tracepoint. When LOCKDEP is not configured, the compiler should remove that block. > + } while (0) > + > static inline int is_dma_buf_file(struct file *); > > > --- /dev/null > +++ b/include/trace/events/dma_buf.h > @@ -0,0 +1,157 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#undef TRACE_SYSTEM > +#define TRACE_SYSTEM dma_buf > + > +#if !defined(_TRACE_DMA_BUF_H) || defined(TRACE_HEADER_MULTI_READ) > +#define _TRACE_DMA_BUF_H > + > +#include > +#include > + > +DECLARE_EVENT_CLASS(dma_buf, > + > + TP_PROTO(struct dma_buf *dmabuf), > + > + TP_ARGS(dmabuf), > + > + TP_STRUCT__entry( > + __string(exp_name, dmabuf->exp_name) > + __field(size_t, size) > + __field(ino_t, ino) > + ), > + > + TP_fast_assign( > + __assign_str(exp_name); > + __entry->size = dmabuf->size; > + __entry->ino = dmabuf->file->f_inode->i_ino; > + ), > + > + TP_printk("exp_name=%s size=%zu ino=%lu", > + __get_str(exp_name), > + __entry->size, > + __entry->ino) > +); For the rest of the patch, from a tracing point of view: Reviewed-by: Steven Rostedt (Google) -- Steve