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 D7A64C25B7E for ; Thu, 30 May 2024 00:33:50 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4BB3F10FF55; Thu, 30 May 2024 00:33:50 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="MfhpQ9s3"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id C73E210ED68 for ; Thu, 30 May 2024 00:33:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1717029213; x=1748565213; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=+sytI5tJt9veOJxfqsu3OmrMjNSejBexY+PNZsvepQk=; b=MfhpQ9s395SaKC9kYkA8c2B29RY7VtrB89IdOGH3ZPo1ofA4Vnx7dgA9 7K3ArRd3w+kz82hqk+zwwB5HfskVF0Ldx72l8zqSK6YGn1Lr4JSpnxjDM 87tStr3j27jvV7elYsQRq41VUWZCKI1MGhDUIGmTu3UOmUKzku+2nq4Uk F/uj893Nf9d+PNJdDQHsAvHoZ4RuGfgXg2xNh6jww6c46kJ3Cs4+A2osF Zi41bh8SIg49LvHcguKGa7Se5BbdrTNGQXYoSpQJv/cd0nkyS47GiuS1+ ezWOZyrlfqbORsHpMahlta/1R384aQwgA+fD3upGS6awhsP+UyVnJdOvP A==; X-CSE-ConnectionGUID: Ix9yjV3SSA6eJ87n3Y/YJA== X-CSE-MsgGUID: 0i6dKJRxQzK2piI++JbLyQ== X-IronPort-AV: E=McAfee;i="6600,9927,11087"; a="30975397" X-IronPort-AV: E=Sophos;i="6.08,199,1712646000"; d="scan'208";a="30975397" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 May 2024 17:33:24 -0700 X-CSE-ConnectionGUID: jOj8PpAGQUmT+2BEmxQvSw== X-CSE-MsgGUID: wTaOZK7FSUqJKRcvKFMl9w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,199,1712646000"; d="scan'208";a="40088752" Received: from szeng-desk.jf.intel.com ([10.165.21.149]) by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 May 2024 17:33:23 -0700 From: Oak Zeng To: intel-xe@lists.freedesktop.org Subject: [CI v3 21/26] drm/xe: Retry BO allocation Date: Wed, 29 May 2024 20:47:27 -0400 Message-Id: <20240530004732.84898-21-oak.zeng@intel.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20240530004732.84898-1-oak.zeng@intel.com> References: <20240530004732.84898-1-oak.zeng@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" From: Matthew Brost TTM doesn't support fair eviction via WW locking, this mitigated in by using retry loops in exec and preempt rebind worker. Extend this retry loop to BO allocation. Once TTM supports fair eviction this patch can be reverted. Signed-off-by: Matthew Brost --- drivers/gpu/drm/xe/xe_bo.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c index d5823aab9fb8..d2763448ebaa 100644 --- a/drivers/gpu/drm/xe/xe_bo.c +++ b/drivers/gpu/drm/xe/xe_bo.c @@ -1930,6 +1930,7 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data, struct xe_file *xef = to_xe_file(file); struct drm_xe_gem_create *args = data; struct xe_vm *vm = NULL; + ktime_t end = 0; struct xe_bo *bo; unsigned int bo_flags; u32 handle; @@ -1995,11 +1996,14 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data, vm = xe_vm_lookup(xef, args->vm_id); if (XE_IOCTL_DBG(xe, !vm)) return -ENOENT; + } + +retry: + if (vm) { err = xe_vm_lock(vm, true); if (err) goto out_vm; } - bo = xe_bo_create_user(xe, NULL, vm, args->size, args->cpu_caching, ttm_bo_type_device, bo_flags); @@ -2008,6 +2012,8 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data, if (IS_ERR(bo)) { err = PTR_ERR(bo); + if (xe_vm_validate_should_retry(NULL, err, &end)) + goto retry; goto out_vm; } -- 2.26.3