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 57B6BC2BA15 for ; Thu, 13 Jun 2024 04:13:59 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EA73E10E102; Thu, 13 Jun 2024 04:13:58 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="L2wtvLU6"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6335A10E969 for ; Thu, 13 Jun 2024 04:13:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1718252032; x=1749788032; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=syh43Hd0EF26s5ulGApWwiQ1pXKQZ/w6rE0Po8t/W/A=; b=L2wtvLU6nWxgzUhWmNqS0Oq5Uc7i4/Nj+pTHpzeuwoscwmXI7GlYASQk bt8wAU+golikBc5s52too1mZF53TSTF3LpntQ6noidbXeRvo5IdC/QW5b yi2cEiIRmx1MhKvVngD70UNmBV8+AryvmPJWFoM8bLvF4j1pBbOwkc/l9 NBCHQyCnrw3xfGZhkU8//genY+wuOg7c6WSxjiKrmqwh67gWQ8jdu+uNj f+eHSxKzZ/AV+FwZb2+v/rVEeTHt5yzSddF7ovCX5oiF+3UQAV3kGmSGG 6TPClo59PulkD/rsg6NEVQwx298mmBMFv51+ZMCEFDSa64z/dswXnTkmz g==; X-CSE-ConnectionGUID: EgM7VEevRuWKiNUwU2GWQw== X-CSE-MsgGUID: q/EyhCfkRdudBhMfp+Kh9Q== X-IronPort-AV: E=McAfee;i="6700,10204,11101"; a="14847987" X-IronPort-AV: E=Sophos;i="6.08,234,1712646000"; d="scan'208";a="14847987" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jun 2024 21:13:49 -0700 X-CSE-ConnectionGUID: 77qE9EB5StCnSIvkw3v+sA== X-CSE-MsgGUID: YRJ26pZERnClOQV/KqRInA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,234,1712646000"; d="scan'208";a="40476340" Received: from szeng-desk.jf.intel.com ([10.165.21.149]) by orviesa006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jun 2024 21:13:48 -0700 From: Oak Zeng To: intel-xe@lists.freedesktop.org Subject: [CI 20/42] drm/xe: Retry BO allocation Date: Thu, 13 Jun 2024 00:24:07 -0400 Message-Id: <20240613042429.637281-20-oak.zeng@intel.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20240613042429.637281-1-oak.zeng@intel.com> References: <20240613042429.637281-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 2bae01ce4e5b..63d7fa4c3db9 100644 --- a/drivers/gpu/drm/xe/xe_bo.c +++ b/drivers/gpu/drm/xe/xe_bo.c @@ -1929,6 +1929,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; @@ -1994,11 +1995,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); @@ -2007,6 +2011,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