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 6295AC2BA18 for ; Thu, 13 Jun 2024 15:22:08 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 88F4210EAD1; Thu, 13 Jun 2024 15:22:06 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="Uv+TTEwT"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3268110EABA for ; Thu, 13 Jun 2024 15:20:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1718292045; x=1749828045; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=sD5SCknucRR6AJF2NRU0G1Cpf9qwG6Ya1qnbWmf/Jlk=; b=Uv+TTEwTJ2hMIefaoXfXoeyzQILV+QhWfusqE15w8g79sk9D73J/e9A3 BCJ8XB/mwp4M2BCDM6Nykbvb2ixz9p7aq3jLmfdHKjXQkejPNNhW/mQCE c//t2iNryOs3AA0/K2hUpqiKN696teIuvKjBq5DjCxjrVqqgCdqsklXbk RLDIuYm2zpwqyIA9t2Fm+IsTYHzR3NRbTrFvvthkFrZwMEZD7eTcI87WB dYw1OxsF9wm9Gy6YnSdvk59euhkmNvjiqoyIAhwEPicYz/BK3uDAxBzf/ zZGO90V+kXtdzsKv/0pWZ77lX3sgOZJa46lz9WwVvOaXsZpZIYeGUdNMk A==; X-CSE-ConnectionGUID: VY6LM1gUR7uT8cjaC2AEJg== X-CSE-MsgGUID: R5v5Otb4Ss2uBQ1ka20uew== X-IronPort-AV: E=McAfee;i="6700,10204,11102"; a="15348652" X-IronPort-AV: E=Sophos;i="6.08,235,1712646000"; d="scan'208";a="15348652" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2024 08:20:42 -0700 X-CSE-ConnectionGUID: Y0PIyWhiTWCgXgb5wpYbVg== X-CSE-MsgGUID: 0ELhY2CmRL6gy4QNT467sQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,235,1712646000"; d="scan'208";a="40135106" Received: from szeng-desk.jf.intel.com ([10.165.21.149]) by fmviesa008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2024 08:20:42 -0700 From: Oak Zeng To: intel-xe@lists.freedesktop.org Subject: [CI 20/42] drm/xe: Retry BO allocation Date: Thu, 13 Jun 2024 11:31:06 -0400 Message-Id: <20240613153128.681864-20-oak.zeng@intel.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20240613153128.681864-1-oak.zeng@intel.com> References: <20240613153128.681864-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 74294f1b05bc..8fe78f7b000f 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