From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 64457C4360F for ; Mon, 18 Feb 2019 14:43:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2A11A21736 for ; Mon, 18 Feb 2019 14:43:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1550500998; bh=zSoaJq2gNEny0ApVH87UAF1KMY7aq/M5WJMdUvaqit0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=1MqTeo8Ey6Q7WKSA1fiO6Mqc4YiGXyTJK2m6fUk8Pcc8dFrQvxqxO+OGyfkm78CGW W7Y1JFyJzYwTX+0sr63pLeFmz3k7XtQkHZz60SiboeU9ypKlfUTQtVqO18LXzzg69f Tqe4N29E9TBYjWhZFnH2B7J8JTv5hi/LYav42cg8= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731140AbfBRNte (ORCPT ); Mon, 18 Feb 2019 08:49:34 -0500 Received: from mail.kernel.org ([198.145.29.99]:56842 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729248AbfBRNtd (ORCPT ); Mon, 18 Feb 2019 08:49:33 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6774F21906; Mon, 18 Feb 2019 13:49:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1550497772; bh=zSoaJq2gNEny0ApVH87UAF1KMY7aq/M5WJMdUvaqit0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MkxF8eerDrUhjyyByW2t1GGc7hIOgxxB7qDh3tpNyNdB50+pD9ltXlN2Sc21jOWFN 7jj34bn2K9LGlLJF1Pj5FNnEXRmbjsd5eGS48Foyhumkpn79bL+OyflfvNU0EalJuw Y+dHqG10w3+LJDgeStxweqaSUBP+62iM1O+u3PbI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Eric Anholt , =?UTF-8?q?Christian=20K=C3=B6nig?= , Alex Deucher Subject: [PATCH 4.20 90/92] drm/sched: Always trace the dependencies we wait on, to fix a race. Date: Mon, 18 Feb 2019 14:43:33 +0100 Message-Id: <20190218133503.734766720@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218133454.668268457@linuxfoundation.org> References: <20190218133454.668268457@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org 4.20-stable review patch. If anyone has any objections, please let me know. ------------------ From: Eric Anholt commit 82abf33766712d8446ea137a3400165e31bd12c7 upstream. The entity->dependency can go away completely once we've called drm_sched_entity_add_dependency_cb() (if the cb is called before we get around to tracing). The tracepoint is more useful if we trace every dependency instead of just ones that get callbacks installed, anyway, so just do that. Fixes any easy-to-produce OOPS when tracing the scheduler on V3D with "perf record -a -e gpu_scheduler:.\* glxgears" and DEBUG_SLAB enabled. Signed-off-by: Eric Anholt Reviewed-by: Christian König Cc: stable@vger.kernel.org Signed-off-by: Alex Deucher Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/scheduler/sched_entity.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) --- a/drivers/gpu/drm/scheduler/sched_entity.c +++ b/drivers/gpu/drm/scheduler/sched_entity.c @@ -434,13 +434,10 @@ struct drm_sched_job *drm_sched_entity_p while ((entity->dependency = sched->ops->dependency(sched_job, entity))) { + trace_drm_sched_job_wait_dep(sched_job, entity->dependency); - if (drm_sched_entity_add_dependency_cb(entity)) { - - trace_drm_sched_job_wait_dep(sched_job, - entity->dependency); + if (drm_sched_entity_add_dependency_cb(entity)) return NULL; - } } /* skip jobs from entity that marked guilty */