All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/vc4: add tracepoints for CL submissions
@ 2022-02-01 21:26 Melissa Wen
  2022-02-25 16:11 ` Maxime Ripard
  2022-03-17 14:12 ` (subset) " Maxime Ripard
  0 siblings, 2 replies; 7+ messages in thread
From: Melissa Wen @ 2022-02-01 21:26 UTC (permalink / raw)
  To: dri-devel; +Cc: David Airlie, Emma Anholt

[-- Attachment #1: Type: text/plain, Size: 5248 bytes --]

Trace submit_cl_ioctl and related IRQs for CL submission and bin/render
jobs execution. It might be helpful to get a rendering timeline and
track job throttling.

Signed-off-by: Melissa Wen <mwen@igalia.com>
---
 drivers/gpu/drm/vc4/vc4_gem.c   |  7 +++
 drivers/gpu/drm/vc4/vc4_irq.c   |  5 ++
 drivers/gpu/drm/vc4/vc4_trace.h | 95 +++++++++++++++++++++++++++++++++
 3 files changed, 107 insertions(+)

diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
index 445d3bab89e0..4abf10b66fe8 100644
--- a/drivers/gpu/drm/vc4/vc4_gem.c
+++ b/drivers/gpu/drm/vc4/vc4_gem.c
@@ -485,6 +485,8 @@ vc4_submit_next_bin_job(struct drm_device *dev)
 	 * immediately move it to the to-be-rendered queue.
 	 */
 	if (exec->ct0ca != exec->ct0ea) {
+		trace_vc4_submit_cl(dev, false, exec->seqno, exec->ct0ca,
+				    exec->ct0ea);
 		submit_cl(dev, 0, exec->ct0ca, exec->ct0ea);
 	} else {
 		struct vc4_exec_info *next;
@@ -519,6 +521,7 @@ vc4_submit_next_render_job(struct drm_device *dev)
 	 */
 	vc4_flush_texture_caches(dev);
 
+	trace_vc4_submit_cl(dev, true, exec->seqno, exec->ct1ca, exec->ct1ea);
 	submit_cl(dev, 1, exec->ct1ca, exec->ct1ea);
 }
 
@@ -1135,6 +1138,10 @@ vc4_submit_cl_ioctl(struct drm_device *dev, void *data,
 	struct dma_fence *in_fence;
 	int ret = 0;
 
+	trace_vc4_submit_cl_ioctl(dev, args->bin_cl_size,
+				  args->shader_rec_size,
+				  args->bo_handle_count);
+
 	if (!vc4->v3d) {
 		DRM_DEBUG("VC4_SUBMIT_CL with no VC4 V3D probed\n");
 		return -ENODEV;
diff --git a/drivers/gpu/drm/vc4/vc4_irq.c b/drivers/gpu/drm/vc4/vc4_irq.c
index 20fa8e34c20b..4342fb43e8c1 100644
--- a/drivers/gpu/drm/vc4/vc4_irq.c
+++ b/drivers/gpu/drm/vc4/vc4_irq.c
@@ -51,6 +51,7 @@
 
 #include "vc4_drv.h"
 #include "vc4_regs.h"
+#include "vc4_trace.h"
 
 #define V3D_DRIVER_IRQS (V3D_INT_OUTOMEM | \
 			 V3D_INT_FLDONE | \
@@ -123,6 +124,8 @@ vc4_irq_finish_bin_job(struct drm_device *dev)
 	if (!exec)
 		return;
 
+	trace_vc4_bcl_end_irq(dev, exec->seqno);
+
 	vc4_move_job_to_render(dev, exec);
 	next = vc4_first_bin_job(vc4);
 
@@ -161,6 +164,8 @@ vc4_irq_finish_render_job(struct drm_device *dev)
 	if (!exec)
 		return;
 
+	trace_vc4_rcl_end_irq(dev, exec->seqno);
+
 	vc4->finished_seqno++;
 	list_move_tail(&exec->head, &vc4->job_done_list);
 
diff --git a/drivers/gpu/drm/vc4/vc4_trace.h b/drivers/gpu/drm/vc4/vc4_trace.h
index 1cccde0b09a7..7f4c49e7e011 100644
--- a/drivers/gpu/drm/vc4/vc4_trace.h
+++ b/drivers/gpu/drm/vc4/vc4_trace.h
@@ -52,6 +52,101 @@ TRACE_EVENT(vc4_wait_for_seqno_end,
 		      __entry->dev, __entry->seqno)
 );
 
+TRACE_EVENT(vc4_submit_cl_ioctl,
+	    TP_PROTO(struct drm_device *dev, u32 bin_cl_size, u32 shader_rec_size, u32 bo_count),
+	    TP_ARGS(dev, bin_cl_size, shader_rec_size, bo_count),
+
+	    TP_STRUCT__entry(
+			     __field(u32, dev)
+			     __field(u32, bin_cl_size)
+			     __field(u32, shader_rec_size)
+			     __field(u32, bo_count)
+			     ),
+
+	    TP_fast_assign(
+			   __entry->dev = dev->primary->index;
+			   __entry->bin_cl_size = bin_cl_size;
+			   __entry->shader_rec_size = shader_rec_size;
+			   __entry->bo_count = bo_count;
+			   ),
+
+	    TP_printk("dev=%u, bin_cl_size=%u, shader_rec_size=%u, bo_count=%u",
+		      __entry->dev,
+		      __entry->bin_cl_size,
+		      __entry->shader_rec_size,
+		      __entry->bo_count)
+);
+
+TRACE_EVENT(vc4_submit_cl,
+	    TP_PROTO(struct drm_device *dev, bool is_render,
+		     uint64_t seqno,
+		     u32 ctnqba, u32 ctnqea),
+	    TP_ARGS(dev, is_render, seqno, ctnqba, ctnqea),
+
+	    TP_STRUCT__entry(
+			     __field(u32, dev)
+			     __field(bool, is_render)
+			     __field(u64, seqno)
+			     __field(u32, ctnqba)
+			     __field(u32, ctnqea)
+			     ),
+
+	    TP_fast_assign(
+			   __entry->dev = dev->primary->index;
+			   __entry->is_render = is_render;
+			   __entry->seqno = seqno;
+			   __entry->ctnqba = ctnqba;
+			   __entry->ctnqea = ctnqea;
+			   ),
+
+	    TP_printk("dev=%u, %s, seqno=%llu, 0x%08x..0x%08x",
+		      __entry->dev,
+		      __entry->is_render ? "RCL" : "BCL",
+		      __entry->seqno,
+		      __entry->ctnqba,
+		      __entry->ctnqea)
+);
+
+TRACE_EVENT(vc4_bcl_end_irq,
+	    TP_PROTO(struct drm_device *dev,
+		     uint64_t seqno),
+	    TP_ARGS(dev, seqno),
+
+	    TP_STRUCT__entry(
+			     __field(u32, dev)
+			     __field(u64, seqno)
+			     ),
+
+	    TP_fast_assign(
+			   __entry->dev = dev->primary->index;
+			   __entry->seqno = seqno;
+			   ),
+
+	    TP_printk("dev=%u, seqno=%llu",
+		      __entry->dev,
+		      __entry->seqno)
+);
+
+TRACE_EVENT(vc4_rcl_end_irq,
+	    TP_PROTO(struct drm_device *dev,
+		     uint64_t seqno),
+	    TP_ARGS(dev, seqno),
+
+	    TP_STRUCT__entry(
+			     __field(u32, dev)
+			     __field(u64, seqno)
+			     ),
+
+	    TP_fast_assign(
+			   __entry->dev = dev->primary->index;
+			   __entry->seqno = seqno;
+			   ),
+
+	    TP_printk("dev=%u, seqno=%llu",
+		      __entry->dev,
+		      __entry->seqno)
+);
+
 #endif /* _VC4_TRACE_H_ */
 
 /* This part must be outside protection */
-- 
2.34.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [PATCH] drm/vc4: add tracepoints for CL submissions
  2022-02-01 21:26 [PATCH] drm/vc4: add tracepoints for CL submissions Melissa Wen
@ 2022-02-25 16:11 ` Maxime Ripard
  2022-03-01 14:58   ` Melissa Wen
  2022-03-17 14:12 ` (subset) " Maxime Ripard
  1 sibling, 1 reply; 7+ messages in thread
From: Maxime Ripard @ 2022-02-25 16:11 UTC (permalink / raw)
  To: Melissa Wen; +Cc: David Airlie, Emma Anholt, dri-devel

[-- Attachment #1: Type: text/plain, Size: 620 bytes --]

Hi Melissa,

On Tue, Feb 01, 2022 at 08:26:51PM -0100, Melissa Wen wrote:
> Trace submit_cl_ioctl and related IRQs for CL submission and bin/render
> jobs execution. It might be helpful to get a rendering timeline and
> track job throttling.
> 
> Signed-off-by: Melissa Wen <mwen@igalia.com>

I'm not really sure what to do about this patch to be honest.

My understanding is that tracepoints are considered as userspace ABI,
but I can't really judge whether your traces are good enough or if it's
something that will bit us some time down the road.

Emma, Daniel, David, any insight?

Thanks,
Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH] drm/vc4: add tracepoints for CL submissions
  2022-02-25 16:11 ` Maxime Ripard
@ 2022-03-01 14:58   ` Melissa Wen
  2022-03-10 11:12     ` Maxime Ripard
  0 siblings, 1 reply; 7+ messages in thread
From: Melissa Wen @ 2022-03-01 14:58 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: David Airlie, Emma Anholt, dri-devel

[-- Attachment #1: Type: text/plain, Size: 1293 bytes --]

On 02/25, Maxime Ripard wrote:
> Hi Melissa,
> 
> On Tue, Feb 01, 2022 at 08:26:51PM -0100, Melissa Wen wrote:
> > Trace submit_cl_ioctl and related IRQs for CL submission and bin/render
> > jobs execution. It might be helpful to get a rendering timeline and
> > track job throttling.
> > 
> > Signed-off-by: Melissa Wen <mwen@igalia.com>
> 
> I'm not really sure what to do about this patch to be honest.
> 
> My understanding is that tracepoints are considered as userspace ABI,
> but I can't really judge whether your traces are good enough or if it's
> something that will bit us some time down the road.

Hi Maxime,

Thanks for taking a look at this patch.

So, I followed the same path of tracing CL submissions on v3d. I mean,
tracking submit_cl ioctl, points when a job (bin/render) starts it
execution, and irqs of completion (bin/render job). We used it to
examine job throttling when running Chromium and, therefore, in addition
to have the timeline of jobs execution, I show some data submitted in
the ioctl to make connections. I think these tracers might be useful for
some investigation in the future, but I'm also not sure if all data are
necessary to be displayed.

Melissa

> 
> Emma, Daniel, David, any insight?
> 
> Thanks,
> Maxime



[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [PATCH] drm/vc4: add tracepoints for CL submissions
  2022-03-01 14:58   ` Melissa Wen
@ 2022-03-10 11:12     ` Maxime Ripard
  2022-03-10 11:54       ` Chema Casanova
  0 siblings, 1 reply; 7+ messages in thread
From: Maxime Ripard @ 2022-03-10 11:12 UTC (permalink / raw)
  To: Melissa Wen; +Cc: David Airlie, Emma Anholt, dri-devel

[-- Attachment #1: Type: text/plain, Size: 1659 bytes --]

On Tue, Mar 01, 2022 at 01:58:26PM -0100, Melissa Wen wrote:
> On 02/25, Maxime Ripard wrote:
> > Hi Melissa,
> > 
> > On Tue, Feb 01, 2022 at 08:26:51PM -0100, Melissa Wen wrote:
> > > Trace submit_cl_ioctl and related IRQs for CL submission and bin/render
> > > jobs execution. It might be helpful to get a rendering timeline and
> > > track job throttling.
> > > 
> > > Signed-off-by: Melissa Wen <mwen@igalia.com>
> > 
> > I'm not really sure what to do about this patch to be honest.
> > 
> > My understanding is that tracepoints are considered as userspace ABI,
> > but I can't really judge whether your traces are good enough or if it's
> > something that will bit us some time down the road.
>
> Thanks for taking a look at this patch.
> 
> So, I followed the same path of tracing CL submissions on v3d. I mean,
> tracking submit_cl ioctl, points when a job (bin/render) starts it
> execution, and irqs of completion (bin/render job). We used it to
> examine job throttling when running Chromium and, therefore, in addition
> to have the timeline of jobs execution, I show some data submitted in
> the ioctl to make connections. I think these tracers might be useful for
> some investigation in the future, but I'm also not sure if all data are
> necessary to be displayed.

Yeah, I'm sure that it's useful :)

I don't see anything wrong with that patch, really. What I meant is that
I don't really have the experience to judge if there's anything wrong in
the first place :)

If you can get someone with more experience with the v3d driver (Emma,
Iago maybe?) I'll be definitely be ok merging that patch

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH] drm/vc4: add tracepoints for CL submissions
  2022-03-10 11:12     ` Maxime Ripard
@ 2022-03-10 11:54       ` Chema Casanova
  2022-03-17 14:13         ` Maxime Ripard
  0 siblings, 1 reply; 7+ messages in thread
From: Chema Casanova @ 2022-03-10 11:54 UTC (permalink / raw)
  To: Maxime Ripard, Melissa Wen; +Cc: David Airlie, dri-devel, Emma Anholt

El 10/3/22 a las 12:12, Maxime Ripard escribió:
> On Tue, Mar 01, 2022 at 01:58:26PM -0100, Melissa Wen wrote:
>> On 02/25, Maxime Ripard wrote:
>>> Hi Melissa,
>>>
>>> On Tue, Feb 01, 2022 at 08:26:51PM -0100, Melissa Wen wrote:
>>>> Trace submit_cl_ioctl and related IRQs for CL submission and bin/render
>>>> jobs execution. It might be helpful to get a rendering timeline and
>>>> track job throttling.
>>>>
>>>> Signed-off-by: Melissa Wen <mwen@igalia.com>
>>> I'm not really sure what to do about this patch to be honest.
>>>
>>> My understanding is that tracepoints are considered as userspace ABI,
>>> but I can't really judge whether your traces are good enough or if it's
>>> something that will bit us some time down the road.
>> Thanks for taking a look at this patch.
>>
>> So, I followed the same path of tracing CL submissions on v3d. I mean,
>> tracking submit_cl ioctl, points when a job (bin/render) starts it
>> execution, and irqs of completion (bin/render job). We used it to
>> examine job throttling when running Chromium and, therefore, in addition
>> to have the timeline of jobs execution, I show some data submitted in
>> the ioctl to make connections. I think these tracers might be useful for
>> some investigation in the future, but I'm also not sure if all data are
>> necessary to be displayed.
> Yeah, I'm sure that it's useful :)
>
> I don't see anything wrong with that patch, really. What I meant is that
> I don't really have the experience to judge if there's anything wrong in
> the first place :)
>
> If you can get someone with more experience with the v3d driver (Emma,
> Iago maybe?) I'll be definitely be ok merging that patch

I've checked this patch and I've been using these tracepoints.
They have been working properly.

Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>

Regards,

Chema Casanova


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

* Re: (subset) [PATCH] drm/vc4: add tracepoints for CL submissions
  2022-02-01 21:26 [PATCH] drm/vc4: add tracepoints for CL submissions Melissa Wen
  2022-02-25 16:11 ` Maxime Ripard
@ 2022-03-17 14:12 ` Maxime Ripard
  1 sibling, 0 replies; 7+ messages in thread
From: Maxime Ripard @ 2022-03-17 14:12 UTC (permalink / raw)
  To: dri-devel, Melissa Wen; +Cc: David Airlie, Maxime Ripard, Emma Anholt

On Tue, 1 Feb 2022 20:26:51 -0100, Melissa Wen wrote:
> Trace submit_cl_ioctl and related IRQs for CL submission and bin/render
> jobs execution. It might be helpful to get a rendering timeline and
> track job throttling.
> 
> 

Applied to drm/drm-misc (drm-misc-next).

Thanks!
Maxime

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

* Re: [PATCH] drm/vc4: add tracepoints for CL submissions
  2022-03-10 11:54       ` Chema Casanova
@ 2022-03-17 14:13         ` Maxime Ripard
  0 siblings, 0 replies; 7+ messages in thread
From: Maxime Ripard @ 2022-03-17 14:13 UTC (permalink / raw)
  To: Chema Casanova; +Cc: Melissa Wen, David Airlie, dri-devel, Emma Anholt

[-- Attachment #1: Type: text/plain, Size: 2126 bytes --]

On Thu, Mar 10, 2022 at 12:54:32PM +0100, Chema Casanova wrote:
> El 10/3/22 a las 12:12, Maxime Ripard escribió:
> > On Tue, Mar 01, 2022 at 01:58:26PM -0100, Melissa Wen wrote:
> > > On 02/25, Maxime Ripard wrote:
> > > > Hi Melissa,
> > > > 
> > > > On Tue, Feb 01, 2022 at 08:26:51PM -0100, Melissa Wen wrote:
> > > > > Trace submit_cl_ioctl and related IRQs for CL submission and bin/render
> > > > > jobs execution. It might be helpful to get a rendering timeline and
> > > > > track job throttling.
> > > > > 
> > > > > Signed-off-by: Melissa Wen <mwen@igalia.com>
> > > > I'm not really sure what to do about this patch to be honest.
> > > > 
> > > > My understanding is that tracepoints are considered as userspace ABI,
> > > > but I can't really judge whether your traces are good enough or if it's
> > > > something that will bit us some time down the road.
> > > Thanks for taking a look at this patch.
> > > 
> > > So, I followed the same path of tracing CL submissions on v3d. I mean,
> > > tracking submit_cl ioctl, points when a job (bin/render) starts it
> > > execution, and irqs of completion (bin/render job). We used it to
> > > examine job throttling when running Chromium and, therefore, in addition
> > > to have the timeline of jobs execution, I show some data submitted in
> > > the ioctl to make connections. I think these tracers might be useful for
> > > some investigation in the future, but I'm also not sure if all data are
> > > necessary to be displayed.
> > Yeah, I'm sure that it's useful :)
> > 
> > I don't see anything wrong with that patch, really. What I meant is that
> > I don't really have the experience to judge if there's anything wrong in
> > the first place :)
> > 
> > If you can get someone with more experience with the v3d driver (Emma,
> > Iago maybe?) I'll be definitely be ok merging that patch
> 
> I've checked this patch and I've been using these tracepoints.
> They have been working properly.
> 
> Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>

Thanks for your feedback, I just merged the patch

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

end of thread, other threads:[~2022-03-17 14:13 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-01 21:26 [PATCH] drm/vc4: add tracepoints for CL submissions Melissa Wen
2022-02-25 16:11 ` Maxime Ripard
2022-03-01 14:58   ` Melissa Wen
2022-03-10 11:12     ` Maxime Ripard
2022-03-10 11:54       ` Chema Casanova
2022-03-17 14:13         ` Maxime Ripard
2022-03-17 14:12 ` (subset) " Maxime Ripard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.