2023-09-15 01:47:30

by Rob Clark

[permalink] [raw]
Subject: [RFC] drm/msm/rd: Check PT_PTRACED for cmdstream dumping

From: Rob Clark <[email protected]>

So, when you want to get a cmdstream trace of some deqp or piglit test,
but you happen to be running it on the same laptop with full desktop
env, the current dump-everything firehose of `cat $debugfs/dri/n/rd` is
quite a bit too much. Ptrace seemed kind of a natural way to control
it, ie. either run what you want to trace under gdb or hack in a
ptrace(PTRACE_TRACEME) call.

Signed-off-by: Rob Clark <[email protected]>
---
drivers/gpu/drm/msm/msm_gem_submit.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c
index a908373cf34b..a105ca1f2102 100644
--- a/drivers/gpu/drm/msm/msm_gem_submit.c
+++ b/drivers/gpu/drm/msm/msm_gem_submit.c
@@ -979,7 +979,8 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
/* The scheduler owns a ref now: */
msm_gem_submit_get(submit);

- msm_rd_dump_submit(priv->rd, submit, NULL);
+ if (current->ptrace & PT_PTRACED)
+ msm_rd_dump_submit(priv->rd, submit, NULL);

pm_runtime_get_sync(&gpu->pdev->dev);

--
2.41.0


2023-12-03 00:16:48

by Dmitry Baryshkov

[permalink] [raw]
Subject: Re: [RFC] drm/msm/rd: Check PT_PTRACED for cmdstream dumping

On 14/09/2023 20:24, Rob Clark wrote:
> From: Rob Clark <[email protected]>
>
> So, when you want to get a cmdstream trace of some deqp or piglit test,
> but you happen to be running it on the same laptop with full desktop
> env, the current dump-everything firehose of `cat $debugfs/dri/n/rd` is
> quite a bit too much. Ptrace seemed kind of a natural way to control
> it, ie. either run what you want to trace under gdb or hack in a
> ptrace(PTRACE_TRACEME) call.
>
> Signed-off-by: Rob Clark <[email protected]>
> ---
> drivers/gpu/drm/msm/msm_gem_submit.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)

Reviewed-by: Dmitry Baryshkov <[email protected]>

I think this is a good idea, to be able to separate process being
debugged and all other tasks.

>
> diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c
> index a908373cf34b..a105ca1f2102 100644
> --- a/drivers/gpu/drm/msm/msm_gem_submit.c
> +++ b/drivers/gpu/drm/msm/msm_gem_submit.c
> @@ -979,7 +979,8 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
> /* The scheduler owns a ref now: */
> msm_gem_submit_get(submit);
>
> - msm_rd_dump_submit(priv->rd, submit, NULL);
> + if (current->ptrace & PT_PTRACED)
> + msm_rd_dump_submit(priv->rd, submit, NULL);
>
> pm_runtime_get_sync(&gpu->pdev->dev);
>

--
With best wishes
Dmitry