From patchwork Fri Aug 9 12:03:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lucas Stach X-Patchwork-Id: 11086325 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4884A112C for ; Fri, 9 Aug 2019 12:04:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 36B6628C73 for ; Fri, 9 Aug 2019 12:04:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2AE8428C76; Fri, 9 Aug 2019 12:04:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id BD7C928C73 for ; Fri, 9 Aug 2019 12:04:10 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 916FB6EDE7; Fri, 9 Aug 2019 12:04:06 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by gabe.freedesktop.org (Postfix) with ESMTPS id 659756EDD7 for ; Fri, 9 Aug 2019 12:04:04 +0000 (UTC) Received: from dude02.hi.pengutronix.de ([2001:67c:670:100:1d::28] helo=dude02.pengutronix.de.) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1hw3cm-00050R-Ml; Fri, 09 Aug 2019 14:04:00 +0200 From: Lucas Stach To: etnaviv@lists.freedesktop.org Subject: [PATCH v2 1/2] drm/etnaviv: dump only failing submit Date: Fri, 9 Aug 2019 14:03:58 +0200 Message-Id: <20190809120359.31659-1-l.stach@pengutronix.de> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::28 X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: dri-devel@lists.freedesktop.org X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: patchwork-lst@pengutronix.de, kernel@pengutronix.de, dri-devel@lists.freedesktop.org, Russell King Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Due to the tracking provided by the scheduler we know exactly which submit is failing. Only dump this single submit and the required auxiliary information. This cuts down the size of the devcoredumps by only including relevant information. Signed-off-by: Lucas Stach Reviewed-by: Philipp Zabel --- v2: dropped change to etnaviv_core_dump_mmu --- drivers/gpu/drm/etnaviv/etnaviv_dump.c | 45 +++++++++---------------- drivers/gpu/drm/etnaviv/etnaviv_sched.c | 2 +- 2 files changed, 16 insertions(+), 31 deletions(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_dump.c b/drivers/gpu/drm/etnaviv/etnaviv_dump.c index 55c37379e389..299846190e4b 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_dump.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_dump.c @@ -110,16 +110,15 @@ static void etnaviv_core_dump_mem(struct core_dump_iterator *iter, u32 type, etnaviv_core_dump_header(iter, type, iter->data + size); } -void etnaviv_core_dump(struct etnaviv_gpu *gpu) +void etnaviv_core_dump(struct etnaviv_gem_submit *submit) { + struct etnaviv_gpu *gpu = submit->gpu; struct core_dump_iterator iter; - struct etnaviv_vram_mapping *vram; struct etnaviv_gem_object *obj; - struct etnaviv_gem_submit *submit; - struct drm_sched_job *s_job; unsigned int n_obj, n_bomap_pages; size_t file_size, mmu_size; __le64 *bomap, *bomap_start; + int i; /* Only catch the first event, or when manually re-armed */ if (!etnaviv_dump_core) @@ -130,26 +129,16 @@ void etnaviv_core_dump(struct etnaviv_gpu *gpu) mmu_size = etnaviv_iommu_dump_size(gpu->mmu); - /* We always dump registers, mmu, ring and end marker */ - n_obj = 4; + /* We always dump registers, mmu, ring, hanging cmdbuf and end marker */ + n_obj = 5; n_bomap_pages = 0; file_size = ARRAY_SIZE(etnaviv_dump_registers) * sizeof(struct etnaviv_dump_registers) + - mmu_size + gpu->buffer.size; - - /* Add in the active command buffers */ - list_for_each_entry(s_job, &gpu->sched.ring_mirror_list, node) { - submit = to_etnaviv_submit(s_job); - file_size += submit->cmdbuf.size; - n_obj++; - } + mmu_size + gpu->buffer.size + submit->cmdbuf.size; /* Add in the active buffer objects */ - list_for_each_entry(vram, &gpu->mmu->mappings, mmu_node) { - if (!vram->use) - continue; - - obj = vram->object; + for (i = 0; i < submit->nr_bos; i++) { + obj = submit->bos[i].obj; file_size += obj->base.size; n_bomap_pages += obj->base.size >> PAGE_SHIFT; n_obj++; @@ -185,12 +174,9 @@ void etnaviv_core_dump(struct etnaviv_gpu *gpu) gpu->buffer.size, etnaviv_cmdbuf_get_va(&gpu->buffer)); - list_for_each_entry(s_job, &gpu->sched.ring_mirror_list, node) { - submit = to_etnaviv_submit(s_job); - etnaviv_core_dump_mem(&iter, ETDUMP_BUF_CMD, - submit->cmdbuf.vaddr, submit->cmdbuf.size, - etnaviv_cmdbuf_get_va(&submit->cmdbuf)); - } + etnaviv_core_dump_mem(&iter, ETDUMP_BUF_CMD, + submit->cmdbuf.vaddr, submit->cmdbuf.size, + etnaviv_cmdbuf_get_va(&submit->cmdbuf)); /* Reserve space for the bomap */ if (n_bomap_pages) { @@ -203,14 +189,13 @@ void etnaviv_core_dump(struct etnaviv_gpu *gpu) bomap_start = bomap = NULL; } - list_for_each_entry(vram, &gpu->mmu->mappings, mmu_node) { + for (i = 0; i < submit->nr_bos; i++) { + struct etnaviv_vram_mapping *vram; struct page **pages; void *vaddr; - if (vram->use == 0) - continue; - - obj = vram->object; + obj = submit->bos[i].obj; + vram = submit->bos[i].mapping; mutex_lock(&obj->lock); pages = etnaviv_gem_get_pages(obj); diff --git a/drivers/gpu/drm/etnaviv/etnaviv_sched.c b/drivers/gpu/drm/etnaviv/etnaviv_sched.c index 4ea8df03cd38..4e3e95dce6d8 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_sched.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_sched.c @@ -115,7 +115,7 @@ static void etnaviv_sched_timedout_job(struct drm_sched_job *sched_job) drm_sched_increase_karma(sched_job); /* get the GPU back into the init state */ - etnaviv_core_dump(gpu); + etnaviv_core_dump(submit); etnaviv_gpu_recover_hang(gpu); drm_sched_resubmit_jobs(&gpu->sched); From patchwork Fri Aug 9 12:03:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lucas Stach X-Patchwork-Id: 11086323 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1E525112C for ; Fri, 9 Aug 2019 12:04:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0A5CF28C73 for ; Fri, 9 Aug 2019 12:04:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EF8F628C76; Fri, 9 Aug 2019 12:04:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 87D1E28C73 for ; Fri, 9 Aug 2019 12:04:08 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 34A6F6EDD7; Fri, 9 Aug 2019 12:04:06 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6E1276EDE7 for ; Fri, 9 Aug 2019 12:04:04 +0000 (UTC) Received: from dude02.hi.pengutronix.de ([2001:67c:670:100:1d::28] helo=dude02.pengutronix.de.) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1hw3cm-00050R-O5; Fri, 09 Aug 2019 14:04:00 +0200 From: Lucas Stach To: etnaviv@lists.freedesktop.org Subject: [PATCH v2 2/2] drm/etnaviv: pass mmu pointer to etnaviv_core_dump_mmu Date: Fri, 9 Aug 2019 14:03:59 +0200 Message-Id: <20190809120359.31659-2-l.stach@pengutronix.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190809120359.31659-1-l.stach@pengutronix.de> References: <20190809120359.31659-1-l.stach@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::28 X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: dri-devel@lists.freedesktop.org X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: patchwork-lst@pengutronix.de, kernel@pengutronix.de, dri-devel@lists.freedesktop.org, Russell King Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP This function does only need the mmu part part of the gpu struct. Signed-off-by: Lucas Stach Reviewed-by: Philipp Zabel --- drivers/gpu/drm/etnaviv/etnaviv_dump.c | 6 +++--- drivers/gpu/drm/etnaviv/etnaviv_dump.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_dump.c b/drivers/gpu/drm/etnaviv/etnaviv_dump.c index 299846190e4b..cc808b0941c2 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_dump.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_dump.c @@ -93,9 +93,9 @@ static void etnaviv_core_dump_registers(struct core_dump_iterator *iter, } static void etnaviv_core_dump_mmu(struct core_dump_iterator *iter, - struct etnaviv_gpu *gpu, size_t mmu_size) + struct etnaviv_iommu *mmu, size_t mmu_size) { - etnaviv_iommu_dump(gpu->mmu, iter->data); + etnaviv_iommu_dump(mmu, iter->data); etnaviv_core_dump_header(iter, ETDUMP_BUF_MMU, iter->data + mmu_size); } @@ -169,7 +169,7 @@ void etnaviv_core_dump(struct etnaviv_gem_submit *submit) memset(iter.hdr, 0, iter.data - iter.start); etnaviv_core_dump_registers(&iter, gpu); - etnaviv_core_dump_mmu(&iter, gpu, mmu_size); + etnaviv_core_dump_mmu(&iter, gpu->mmu, mmu_size); etnaviv_core_dump_mem(&iter, ETDUMP_BUF_RING, gpu->buffer.vaddr, gpu->buffer.size, etnaviv_cmdbuf_get_va(&gpu->buffer)); diff --git a/drivers/gpu/drm/etnaviv/etnaviv_dump.h b/drivers/gpu/drm/etnaviv/etnaviv_dump.h index 2d916c2667ee..a125c46b895b 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_dump.h +++ b/drivers/gpu/drm/etnaviv/etnaviv_dump.h @@ -35,8 +35,8 @@ struct etnaviv_dump_registers { }; #ifdef __KERNEL__ -struct etnaviv_gpu; -void etnaviv_core_dump(struct etnaviv_gpu *gpu); +struct etnaviv_gem_submit; +void etnaviv_core_dump(struct etnaviv_gem_submit *submit); #endif #endif