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
next prev parent 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