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 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5F7F7CCD182 for ; Mon, 29 Sep 2025 02:56:01 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5F7D910E25E; Mon, 29 Sep 2025 02:56:00 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="gXtXMN+e"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) by gabe.freedesktop.org (Postfix) with ESMTPS id AAEA310E204 for ; Mon, 29 Sep 2025 02:55:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1759114550; x=1790650550; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=TXaID5BIP4vDsaBj8/L/ZI628LuCi7FQse9JpP+Wrzc=; b=gXtXMN+eCTzi3bPOJRsgF7pIuKsjLbqEr6KyrT1K2JjIZm3s0j3ZuOJc 5n850CZ8/eNN2yKqyGVwMNWNF4B8+PmnrbOYPsM+uuYzUO1yNn6Q6HcnS S/pIEkh8OLo27hmq96BcFux2iZBlnltro20VW+26q5gQ00KKrwFbb2bNc Bn8NRZAUkR5INxsRNGIcy6bzfccO3JRTd67WNzWnksTrKdRng1nFFT3Wh AlM9jYr4K8yu721knLjYtPQZtkwRSpcG5Q/zFzDSegV2e2rBr9xMFlGYE cHig7/GlL8LRi7sj4A3TF7UV4jtGoTCZyBH71T1lJP+oHDSCTgK12H887 A==; X-CSE-ConnectionGUID: LEYcSVPESzupH+CJ2r2Uzw== X-CSE-MsgGUID: AStk6FprRZiQRmV7gwn21Q== X-IronPort-AV: E=McAfee;i="6800,10657,11531"; a="61398525" X-IronPort-AV: E=Sophos;i="6.17,312,1747724400"; d="scan'208";a="61398525" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Sep 2025 19:55:50 -0700 X-CSE-ConnectionGUID: LLLlcohlQoWEuDtqS+RzVw== X-CSE-MsgGUID: 46SQI40NTD68Yp5FmL7UwQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.18,300,1751266800"; d="scan'208";a="182529257" Received: from lstrano-desk.jf.intel.com ([10.54.39.91]) by fmviesa005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Sep 2025 19:55:48 -0700 From: Matthew Brost To: intel-xe@lists.freedesktop.org Subject: [PATCH v3 09/36] drm/xe: Don't change LRC ring head on job resubmission Date: Sun, 28 Sep 2025 19:55:15 -0700 Message-Id: <20250929025542.1486303-10-matthew.brost@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250929025542.1486303-1-matthew.brost@intel.com> References: <20250929025542.1486303-1-matthew.brost@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" Now that we save the job's head during submission, it's no longer necessary to adjust the LRC ring head during resubmission. Instead, a software-based adjustment of the tail will overwrite the old jobs in place. For some odd reason, adjusting the LRC ring head didn't work on parallel queues, which was causing issues in our CI. v6: - Also set LRC tail to head so queue is idle coming out of reset Signed-off-by: Matthew Brost --- drivers/gpu/drm/xe/xe_guc_submit.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c index 3a534d93505f..70306f902ba5 100644 --- a/drivers/gpu/drm/xe/xe_guc_submit.c +++ b/drivers/gpu/drm/xe/xe_guc_submit.c @@ -2008,11 +2008,17 @@ static void guc_exec_queue_start(struct xe_exec_queue *q) struct xe_gpu_scheduler *sched = &q->guc->sched; if (!exec_queue_killed_or_banned_or_wedged(q)) { + struct xe_sched_job *job = xe_sched_first_pending_job(sched); int i; trace_xe_exec_queue_resubmit(q); - for (i = 0; i < q->width; ++i) - xe_lrc_set_ring_head(q->lrc[i], q->lrc[i]->ring.tail); + if (job) { + for (i = 0; i < q->width; ++i) { + q->lrc[i]->ring.tail = job->ptrs[i].head; + xe_lrc_set_ring_tail(q->lrc[i], + xe_lrc_ring_head(q->lrc[i])); + } + } xe_sched_resubmit_jobs(sched); } -- 2.34.1