dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Sharat Masetty <smasetty@codeaurora.org>
To: Rob Clark <robdclark@gmail.com>, Chris Wilson <chris@chris-wilson.co.uk>
Cc: linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	freedreno <freedreno@lists.freedesktop.org>,
	dri-devel <dri-devel@lists.freedesktop.org>
Subject: Re: [Freedreno] [PATCH 08/13] drm/msm/gpu: Rearrange the code that collects the task during a hang
Date: Fri, 12 Oct 2018 14:43:43 +0530	[thread overview]
Message-ID: <cd111662-464a-e72b-ca56-1d910e694b96@codeaurora.org> (raw)
In-Reply-To: <CAF6AEGuKM8fROqAd6ApFRqG3x7v-np=B1QMBDdhdOWu=Y62msw@mail.gmail.com>



On 8/4/2018 10:47 PM, Rob Clark wrote:
> On Thu, Jul 12, 2018 at 3:48 PM Chris Wilson <chris@chris-wilson.co.uk> wrote:
>>
>> Quoting Jordan Crouse (2018-07-12 19:59:25)
>>> Do a bit of cleanup to prepare for upcoming changes to pass the
>>> hanging task comm and cmdline to the crash dump function.
>>>
>>> Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
>>> ---
>>>   drivers/gpu/drm/msm/msm_gpu.c | 18 ++++++++++--------
>>>   1 file changed, 10 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c
>>> index 1c09acfb4028..2ca354047250 100644
>>> --- a/drivers/gpu/drm/msm/msm_gpu.c
>>> +++ b/drivers/gpu/drm/msm/msm_gpu.c
>>> @@ -314,6 +314,7 @@ static void recover_worker(struct work_struct *work)
>>>          struct msm_drm_private *priv = dev->dev_private;
>>>          struct msm_gem_submit *submit;
>>>          struct msm_ringbuffer *cur_ring = gpu->funcs->active_ring(gpu);
>>> +       char *comm = NULL, *cmd = NULL;
>>>          int i;
>>>
>>>          mutex_lock(&dev->struct_mutex);
>>> @@ -327,7 +328,7 @@ static void recover_worker(struct work_struct *work)
>>>                  rcu_read_lock();
>>>                  task = pid_task(submit->pid, PIDTYPE_PID);
>>>                  if (task) {
>>> -                       char *cmd;
>>> +                       comm = kstrdup(task->comm, GFP_KERNEL);
>>
>> Under rcu_read_lock(), GFP_KERNEL is not allowed, you need GFP_NOWAIT or
>> some such (or grab a reference to the pid and drop rcu then GFP_KERNEL).
> 
> I started looking at a similar issue w/ our use of
> kstrdup_quotable_cmdline() under rcu_read_lock().. I *guess* I hadn't
> noticed it before due to different RCU kconfig?
> 
> I can use GFP_ATOMIC, and I can fix kstrdup_quotable_cmdline() to
> actually use gfp flags passed in for kmalloc() (and similar bug in
> kstrdup_quotable_file()).. but get_cmdline() still grabs mmap_sem
> which complains under rcu_read_lock()..
> 
> is there any way to ensure the tast_struct sticks around long enough
> to get it's cmdline without holding rcu_read_lock()?  I couldn't find
> any refcnt'ing on task_struct itself, which makes this seem a bit
> unsolveable :-/

I have been seeing similar issues on my downstream setup and was looking 
into fixing this actively. Here is a way to have the task stay afloat 
and revert to GFP_KERNEL
https://patchwork.freedesktop.org/patch/256397/ Please review...
I tried this out and it does work.

> 
> BR,
> -R
> --
> To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
Linux Foundation Collaborative Project
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2018-10-12  9:13 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-12 18:59 [v7 00/13] drm/msm: Capture and dump the GPU crash state Jordan Crouse
     [not found] ` <20180712185930.2492-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-07-12 18:59   ` [PATCH 01/13] include: Move ascii85 functions from i915 to linux/ascii85.h Jordan Crouse
     [not found]     ` <20180712185930.2492-2-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-07-12 19:34       ` Chris Wilson
2018-07-12 18:59   ` [PATCH 02/13] drm: drm_printer: Add printer for devcoredump Jordan Crouse
     [not found]     ` <20180712185930.2492-3-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-07-12 19:40       ` Chris Wilson
2018-07-13 16:47         ` Jordan Crouse
2018-07-18 16:44         ` [Freedreno] " Jordan Crouse
2018-07-12 19:46       ` Daniel Vetter
     [not found]         ` <CAKMK7uHzJp2QVdx10QG1DumMnPP8YVDb4rqGDrWKx_dd4N1gpw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-07-13 16:51           ` Jordan Crouse
2018-07-16 19:56             ` [Freedreno] " Berg, Johannes
2018-07-12 18:59   ` [PATCH 03/13] drm: Add drm_puts() to complement drm_printf() Jordan Crouse
     [not found]     ` <20180712185930.2492-4-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-07-12 19:47       ` Daniel Vetter
2018-07-12 18:59   ` [PATCH 04/13] drm: Add a -puts() function for the seq_file printer Jordan Crouse
     [not found]     ` <20180712185930.2492-5-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-07-12 19:48       ` Daniel Vetter
2018-07-12 18:59   ` [PATCH 05/13] drm: Add put callback for the coredump printer Jordan Crouse
     [not found]     ` <20180712185930.2492-6-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-07-12 19:43       ` Chris Wilson
2018-07-13 13:45     ` [Freedreno] " Rob Clark
2018-07-12 18:59   ` [PATCH 06/13] drm/msm/gpu: Capture the state of the GPU Jordan Crouse
2018-07-12 18:59   ` [PATCH 07/13] drm/msm/gpu: Convert the GPU show function to use the GPU state Jordan Crouse
     [not found]     ` <20180712185930.2492-8-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-07-12 19:46       ` Chris Wilson
2018-07-12 18:59   ` [PATCH 08/13] drm/msm/gpu: Rearrange the code that collects the task during a hang Jordan Crouse
     [not found]     ` <20180712185930.2492-9-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-07-12 19:48       ` Chris Wilson
2018-08-04 17:17         ` Rob Clark
2018-10-12  9:13           ` Sharat Masetty [this message]
2018-07-12 18:59   ` [PATCH 09/13] drm/msm/gpu: Capture the GPU state on a GPU hang Jordan Crouse
2018-07-12 18:59   ` [PATCH 10/13] drm/msm/adreno: Convert the show/crash file format Jordan Crouse
2018-07-12 19:51     ` Daniel Vetter
2018-07-12 18:59   ` [PATCH 11/13] drm/msm/adreno: Add ringbuffer data to the GPU state Jordan Crouse
2018-07-12 18:59   ` [PATCH 12/13] drm/msm/adreno: Add a5xx specific registers for " Jordan Crouse
2018-07-12 18:59   ` [PATCH 13/13] drm/msm/gpu: Add the buffer objects from the submit to the crash dump Jordan Crouse

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cd111662-464a-e72b-ca56-1d910e694b96@codeaurora.org \
    --to=smasetty@codeaurora.org \
    --cc=chris@chris-wilson.co.uk \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=robdclark@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox