From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [PATCH 1/6] drm/msm: show task cmdline in gpu recovery messages Date: Tue, 24 Oct 2017 09:22:48 -0400 Message-ID: <20171024132256.20286-2-robdclark@gmail.com> References: <20171024132256.20286-1-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171024132256.20286-1-robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: David Airlie , linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Rob Clark , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Jordan Crouse , freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org Tm93IHRoYXQgZnJlZWRyZW5vIGdhbGxpdW0gZHJpdmVyIGRlZmF1bHRzIHRvIHVzaW5nIHN1Ym1p dF9xdWV1ZSB0YXNrCihyZW5kZXIgcmVvcmRlcmluZyksIGp1c3Qgc2hvd2luZyB0YXNrLT5jb21t IGlzIG5vdCBzbyB1c2VmdWwgKGllLiBpdCBpcwphbHdheXMgImZsdXNoX3F1ZXVlOjAiKSwgc28g YWxzbyBkdW1wIHRoZSBjbWRsaW5lLiAgVGhpcyBzaG91bGQgYWxzbyBiZQptb3JlIHVzZWZ1bCBm b3IgcGlnbGl0L3NoYWRlcl9ydW5uZXIuCgpTaWduZWQtb2ZmLWJ5OiBSb2IgQ2xhcmsgPHJvYmRj bGFya0BnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmMgfCA1NCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgNDIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYwpp bmRleCBhMDVhYTExOWYyMmIuLmQyNmE3MjgyNDY2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZ3B1LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmMKQEAg LTIzNSw2ICsyMzUsMjAgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2ZlbmNlcyhzdHJ1Y3QgbXNtX2dw dSAqZ3B1LCBzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcsCiAJfQogfQogCitzdGF0aWMgc3Ry dWN0IG1zbV9nZW1fc3VibWl0ICoKK2ZpbmRfc3VibWl0KHN0cnVjdCBtc21fcmluZ2J1ZmZlciAq cmluZywgdWludDMyX3QgZmVuY2UpCit7CisJc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQ7 CisKKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJnJpbmctPmdwdS0+ZGV2LT5zdHJ1Y3RfbXV0 ZXgpKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoc3VibWl0LCAmcmluZy0+c3VibWl0cywgbm9k ZSkKKwkJaWYgKHN1Ym1pdC0+c2Vxbm8gPT0gZmVuY2UpCisJCQlyZXR1cm4gc3VibWl0OworCisJ cmV0dXJuIE5VTEw7Cit9CisKIHN0YXRpYyB2b2lkIHJldGlyZV9zdWJtaXRzKHN0cnVjdCBtc21f Z3B1ICpncHUpOwogCiBzdGF0aWMgdm9pZCByZWNvdmVyX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCkBAIC0yNjgsMTkgKzI4MiwzNSBAQCBzdGF0aWMgdm9pZCByZWNvdmVyX3dvcmtl cihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJZGV2X2VycihkZXYtPmRldiwgIiVzOiBoYW5n Y2hlY2sgcmVjb3ZlciFcbiIsIGdwdS0+bmFtZSk7CiAJZmVuY2UgPSBjdXJfcmluZy0+bWVtcHRy cy0+ZmVuY2UgKyAxOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShzdWJtaXQsICZjdXJfcmluZy0+ c3VibWl0cywgbm9kZSkgewotCQlpZiAoc3VibWl0LT5zZXFubyA9PSBmZW5jZSkgewotCQkJc3Ry dWN0IHRhc2tfc3RydWN0ICp0YXNrOwotCi0JCQlyY3VfcmVhZF9sb2NrKCk7Ci0JCQl0YXNrID0g cGlkX3Rhc2soc3VibWl0LT5waWQsIFBJRFRZUEVfUElEKTsKLQkJCWlmICh0YXNrKSB7Ci0JCQkJ ZGV2X2VycihkZXYtPmRldiwgIiVzOiBvZmZlbmRpbmcgdGFzazogJXNcbiIsCi0JCQkJCQlncHUt Pm5hbWUsIHRhc2stPmNvbW0pOwotCQkJfQotCQkJcmN1X3JlYWRfdW5sb2NrKCk7Ci0JCQlicmVh azsKKwlzdWJtaXQgPSBmaW5kX3N1Ym1pdChjdXJfcmluZywgZmVuY2UpOworCWlmIChzdWJtaXQp IHsKKwkJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOworCisJCXJjdV9yZWFkX2xvY2soKTsKKwkJ dGFzayA9IHBpZF90YXNrKHN1Ym1pdC0+cGlkLCBQSURUWVBFX1BJRCk7CisJCWlmICh0YXNrKSB7 CisJCQljaGFyIGJ1ZlsyNTZdOworCQkJaW50IGxlbjsKKworCQkJLyoKKwkJCSAqIHNvIHNsaWdo dGx5IGFubm95aW5nLCBpbiBvdGhlciBwYXRocyBsaWtlIG1tYXAnaW5nIGdlbQorCQkJICogYnVm ZmVycywgbW1hcF9zZW0gaXMgYWNxdWlyZWQgYmVmb3JlIHN0cnVjdF9tdXRleCwgd2hpY2gKKwkJ CSAqIG1lYW5zIHdlIGNhbid0IGhvbGQgc3RydWN0X211dGV4IGFjcm9zcyB0aGUgY2FsbCB0bwor CQkJICogZ2V0X2NtZGxpbmUoKS4gIEJ1dCB3ZSBkb24ndCBuZWVkICdzdWJtaXQnIGFueSBmdXJ0 aGVyCisJCQkgKiBzbyBubyBpc3N1ZSBpZiBoeXBvdGhldGljYWxseSBpdCBnb2VzIGF3YXkgd2hl biBkcm9wcGluZworCQkJICogc3RydWN0X211dGV4LiAgRm9yIGdvb2QgbWVhc3VyZSBudWxsIG91 dCB0aGUgc3VibWl0IHB0cgorCQkJICogdG8gbWFrZSB0aGlzIG9idmlvdXMuCisJCQkgKi8KKwkJ CXN1Ym1pdCA9IE5VTEw7CisJCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwkJ CWxlbiA9IGdldF9jbWRsaW5lKHRhc2ssIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCQkJbXV0ZXhfbG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJCQlkZXZfZXJyKGRldi0+ZGV2LCAiJXM6IG9mZmVu ZGluZyB0YXNrOiAlcyAoJS0qcylcbiIsCisJCQkJCWdwdS0+bmFtZSwgdGFzay0+Y29tbSwgbGVu LCBidWYpOwogCQl9CisJCXJjdV9yZWFkX3VubG9jaygpOworCiAJfQogCiAJaWYgKG1zbV9ncHVf YWN0aXZlKGdwdSkpIHsKLS0gCjIuMTMuNgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZnJlZWRyZW5vCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934025AbdJXNXR (ORCPT ); Tue, 24 Oct 2017 09:23:17 -0400 Received: from mail-qk0-f194.google.com ([209.85.220.194]:43624 "EHLO mail-qk0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933777AbdJXNXM (ORCPT ); Tue, 24 Oct 2017 09:23:12 -0400 X-Google-Smtp-Source: ABhQp+RL4IHpSrGnz3M7T+var972LmPItwqy9q+EHyS8DJKOfUKxJt5XKBBb00Jan/TFrnM2PWzQ/A== From: Rob Clark To: dri-devel@lists.freedesktop.org Cc: linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Jordan Crouse , Rob Clark , David Airlie , linux-kernel@vger.kernel.org Subject: [PATCH 1/6] drm/msm: show task cmdline in gpu recovery messages Date: Tue, 24 Oct 2017 09:22:48 -0400 Message-Id: <20171024132256.20286-2-robdclark@gmail.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20171024132256.20286-1-robdclark@gmail.com> References: <20171024132256.20286-1-robdclark@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that freedreno gallium driver defaults to using submit_queue task (render reordering), just showing task->comm is not so useful (ie. it is always "flush_queue:0"), so also dump the cmdline. This should also be more useful for piglit/shader_runner. Signed-off-by: Rob Clark --- drivers/gpu/drm/msm/msm_gpu.c | 54 +++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c index a05aa119f22b..d26a7282466e 100644 --- a/drivers/gpu/drm/msm/msm_gpu.c +++ b/drivers/gpu/drm/msm/msm_gpu.c @@ -235,6 +235,20 @@ static void update_fences(struct msm_gpu *gpu, struct msm_ringbuffer *ring, } } +static struct msm_gem_submit * +find_submit(struct msm_ringbuffer *ring, uint32_t fence) +{ + struct msm_gem_submit *submit; + + WARN_ON(!mutex_is_locked(&ring->gpu->dev->struct_mutex)); + + list_for_each_entry(submit, &ring->submits, node) + if (submit->seqno == fence) + return submit; + + return NULL; +} + static void retire_submits(struct msm_gpu *gpu); static void recover_worker(struct work_struct *work) @@ -268,19 +282,35 @@ static void recover_worker(struct work_struct *work) dev_err(dev->dev, "%s: hangcheck recover!\n", gpu->name); fence = cur_ring->memptrs->fence + 1; - list_for_each_entry(submit, &cur_ring->submits, node) { - if (submit->seqno == fence) { - struct task_struct *task; - - rcu_read_lock(); - task = pid_task(submit->pid, PIDTYPE_PID); - if (task) { - dev_err(dev->dev, "%s: offending task: %s\n", - gpu->name, task->comm); - } - rcu_read_unlock(); - break; + submit = find_submit(cur_ring, fence); + if (submit) { + struct task_struct *task; + + rcu_read_lock(); + task = pid_task(submit->pid, PIDTYPE_PID); + if (task) { + char buf[256]; + int len; + + /* + * so slightly annoying, in other paths like mmap'ing gem + * buffers, mmap_sem is acquired before struct_mutex, which + * means we can't hold struct_mutex across the call to + * get_cmdline(). But we don't need 'submit' any further + * so no issue if hypothetically it goes away when dropping + * struct_mutex. For good measure null out the submit ptr + * to make this obvious. + */ + submit = NULL; + mutex_unlock(&dev->struct_mutex); + len = get_cmdline(task, buf, sizeof(buf)); + mutex_lock(&dev->struct_mutex); + + dev_err(dev->dev, "%s: offending task: %s (%-*s)\n", + gpu->name, task->comm, len, buf); } + rcu_read_unlock(); + } if (msm_gpu_active(gpu)) { -- 2.13.6