From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0E1863F39C8 for ; Fri, 26 Jun 2026 11:29:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782473349; cv=none; b=fCrfm2EOA/j9ISM6eAkBkb4eFLGT/nMFhmCw7TOWaApylocBoBiYNhNMGHvdqwlO3TyzlbNRE94RWUV2xa2IDsqOzMEWhP8aFVBew7jlv77XVW6k1wFoiScvvmWlw4wI7LTTPRF0glAeD17/nB20Dk8EWodGCIeHhHvHqP5dmsY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782473349; c=relaxed/simple; bh=UPbCAhOKcEI1PMqkcQbYGBQcf5R4u2vjxZjoe6HY8A8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fizWTq1KDUaX87t7oMPTOQXLDRZLVQ3TD6IQymzs7WBj9utLAHdHo3Vmkxa9BFHNc/Azm0gGn9bHGgzkPJEG4ehzMYJ5VCKdrB/Yw56AsfubJnxT4USsq+tNnw+Ziq3RE8W973pVtLIPGnkx13lw4ibmmkMERMBdI6nzpPoEZN4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TbTb7m0B; arc=none smtp.client-ip=209.85.208.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TbTb7m0B" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-69532288224so1822833a12.0 for ; Fri, 26 Jun 2026 04:29:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782473346; x=1783078146; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YRuAe0RjhwEXrW/i/NoudbwVnvnG5VFmyAAGQ0HVJBo=; b=TbTb7m0B/c+qBdhHQfueUiMaaN1KnbqBnlFDj44thApW3ew2EzShhMi5m7EI+EvAcB VIjTZY9fcfdQVs9V3HMmWRHErTrqbTbKK2pqu42+DytikrgTv7wnn+L6xJ0fVBfn1JFH IfwPL2MW76K0OMeGb1Vs3qCovDb79yTHdVF2HOqIYPsooW4CrUBHc2fvjzM16jqClnFZ Zlh4mUYSX+yvaT3SjXSXrUwVyMO63DxbRK3C50xjYK+fetsw66EwxQGr9umtuobI5wND JiJGUA4dGwsXkLC5HJM92ZWnwaeeUOZSGSiF7DW2buEGSQk158mkmd98MiSOTSeNzEV3 faiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782473346; x=1783078146; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YRuAe0RjhwEXrW/i/NoudbwVnvnG5VFmyAAGQ0HVJBo=; b=fppKqhDIKziav3PEKeY4/yZASACs9xihqQjH4JJGMQdu+fLAtdX8Ijv+mEy6RlAnGF t6XzxNQIfgza2Wh5Ik1wpp1/r8vKy79f8VBmBFMlQgwUygy/tXNLwtO0Yu4ySWLnDJYd Jk8jP1DpG2oeFWNqlDT9VvQWxQ70o3+kkxum6Tqlqxw17qK5Fi90OCMGk36G+hZWTX1M SY5SwQBbCwWzlUs34lzqhotsUO91N+Msppjyu8VDVfmPa8DLvhmkRoiotWMMqTKyYs43 /EviS6/sYwoqTyPqIbfvvubvvz67EUB3WlkelGwlc1n9hu1f7wyy910VsPAX+MIimvRC 5lsg== X-Forwarded-Encrypted: i=1; AHgh+RqJwEnFQHGXPTg5zzfFVwGLPnxtflJBmVTDCrEK+M2s1CFJhz996hRvTHg3Rr49VL3fQB/FQje+d6+8fqI=@vger.kernel.org X-Gm-Message-State: AOJu0YybmdbI7j1Wefifp/vW8ch4Kw3wctsqLqs5JzygPMRt9ZwbgBXV lI+//7osjpISqp2qNb/gpHP1FiVSIEGk/quMPHhyWjpXWfKoC/ylvQj6 X-Gm-Gg: AfdE7cmlPd4rY2r/pl5re9di4dGELvN3SOWZxDxynntR4SvE0xEJDlkQnPLNH0fMCX/ 22/pon8C/GOVePFa+MRmvKXlaHkuqoDB6axf9zhomJ+tTMh3nbb+kpP7oC2omOyu6fjOt0D7Ho+ 4A2WMahGLbwCxaSuxY5JXrqiq65a3Un9VP43F2sTqcghI45e9bEkaN91TEHZHkDk4jJoWC0vWmP pe+uH7CliB1H1ZAcAmu3E10e44CnVgVirqHSzuqZfyS0zuBIDZSKwdS9UM2jfLCMfK0l0RLkRVd rJW0szx8tXXY2SrfywH8C3+lg52VEcx8Y0ZxGYAsbmcOI8ZHT+pOA0mrqDCTu+pRltMjoNBAYso /NYQmOqw0EZqlvjpfdTvffXC5nTIMkXMAHiHdcsuK29oYkQH5cg2rvsA8iVtkDFMoMrTiUCH8cb 4lmHUsnuo3cjHn8UIs6ztywpFLHhLop1K+SFgN8lMpbwDuMn0VsUSGR6iOmDQ3bZcNJWeNEfbC5 S3X/2yU71WMGLQWQKsxxhN9khwajSstXQ== X-Received: by 2002:a17:907:1c8f:b0:c12:3112:e08b with SMTP id a640c23a62f3a-c123112e8c3mr41353966b.27.1782473346463; Fri, 26 Jun 2026 04:29:06 -0700 (PDT) Received: from fedora ([154.66.167.183]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c122176f39csm88811566b.21.2026.06.26.04.29.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jun 2026 04:29:06 -0700 (PDT) From: aquiles To: matthew.brost@intel.com, thomas.hellstrom@linux.intel.com, rodrigo.vivi@intel.com Cc: airlied@gmail.com, simona@ffwll.ch, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, aquiles Subject: [PATCH 2/2] drm/xe: skip resv fence wait in xe_svm_invalidate if no ranges are bound Date: Fri, 26 Jun 2026 11:26:38 +0000 Message-ID: <20260626112638.2042298-2-achillezongo07@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260626112638.2042298-1-achillezongo07@gmail.com> References: <20260626112638.2042298-1-achillezongo07@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit xe_svm_invalidate() waited on the VM's reservation object fences before processing MMU notifier events, even when no range in the affected address region had active GPU bindings (tile_present == 0). Add a pre-scan over the affected ranges and skip dma_resv_wait_timeout() entirely when none require invalidation. This avoids stalling CPU reclaim for the common case where MMU notifier events fire on unbound SVM ranges, which is frequent on UMA systems under memory pressure. Signed-off-by: aquiles --- drivers/gpu/drm/xe/xe_svm.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c index e1651e70c..5d071bab3 100644 --- a/drivers/gpu/drm/xe/xe_svm.c +++ b/drivers/gpu/drm/xe/xe_svm.c @@ -233,6 +233,7 @@ static void xe_svm_invalidate(struct drm_gpusvm *gpusvm, ktime_t start = xe_gt_stats_ktime_get(); u64 adj_start = mmu_range->start, adj_end = mmu_range->end; u8 tile_mask = 0, id; + bool needs_inval = false; long err; xe_svm_assert_in_notifier(vm); @@ -258,11 +259,22 @@ static void xe_svm_invalidate(struct drm_gpusvm *gpusvm, if (xe_vm_is_closed(vm)) goto range_notifier_event_end; - /* - * XXX: Less than ideal to always wait on VM's resv slots if an - * invalidation is not required. Could walk range list twice to figure - * out if an invalidations is need, but also not ideal. - */ + /* Pre-scan: skip fence wait if no range has active GPU bindings. */ + + r = first; + drm_gpusvm_for_each_range(r, notifier, adj_start, adj_end) { + struct xe_svm_range *range = to_xe_range(r); + + if (!range->base.pages.flags.unmapped && range->tile_present) { + needs_inval = true; + break; + } + + } + if (!needs_inval) + goto range_notifier_event_end; + + err = dma_resv_wait_timeout(xe_vm_resv(vm), DMA_RESV_USAGE_BOOKKEEP, false, MAX_SCHEDULE_TIMEOUT); -- 2.54.0