lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20250521141318.59a76e45@canb.auug.org.au>
Date: Wed, 21 May 2025 14:13:18 +1000
From: Stephen Rothwell <sfr@...b.auug.org.au>
To: Dave Airlie <airlied@...hat.com>, DRI <dri-devel@...ts.freedesktop.org>
Cc: Francois Dugast <francois.dugast@...el.com>, Himal Prasad Ghimiray
 <himal.prasad.ghimiray@...el.com>, Linux Kernel Mailing List
 <linux-kernel@...r.kernel.org>, Linux Next Mailing List
 <linux-next@...r.kernel.org>, Lucas De Marchi <lucas.demarchi@...el.com>,
 Matthew Brost <matthew.brost@...el.com>
Subject: linux-next: manual merge of the drm tree with Linus' tree

Hi all,

Today's linux-next merge of the drm tree got a conflict in:

  drivers/gpu/drm/xe/xe_svm.c

between commit:

  794f5493f518 ("drm/xe: Strict migration policy for atomic SVM faults")

from Linus' tree and commit:

  80bcbdfc8cf5 ("drm/xe/svm: Add stats for SVM page faults")

from the drm tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc drivers/gpu/drm/xe/xe_svm.c
index 975094c1a582,d25f02c8d7fc..000000000000
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@@ -654,18 -650,12 +659,19 @@@ void xe_svm_fini(struct xe_vm *vm
  }
  
  static bool xe_svm_range_is_valid(struct xe_svm_range *range,
 -				  struct xe_tile *tile)
 +				  struct xe_tile *tile,
 +				  bool devmem_only)
  {
 -	return (range->tile_present & ~range->tile_invalidated) & BIT(tile->id);
 +	/*
 +	 * Advisory only check whether the range currently has a valid mapping,
 +	 * READ_ONCE pairs with WRITE_ONCE in xe_pt.c
 +	 */
 +	return ((READ_ONCE(range->tile_present) &
 +		 ~READ_ONCE(range->tile_invalidated)) & BIT(tile->id)) &&
 +		(!devmem_only || xe_svm_range_in_vram(range));
  }
  
+ #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
  static struct xe_vram_region *tile_to_vr(struct xe_tile *tile)
  {
  	return &tile->mem.vram;
@@@ -727,37 -717,15 +733,45 @@@ unlock
  
  	return err;
  }
+ #else
+ static int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
+ 			     struct xe_svm_range *range,
+ 			     const struct drm_gpusvm_ctx *ctx)
+ {
+ 	return -EOPNOTSUPP;
+ }
+ #endif
  
 +static bool supports_4K_migration(struct xe_device *xe)
 +{
 +	if (xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
 +		return false;
 +
 +	return true;
 +}
 +
 +static bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range,
 +					       struct xe_vma *vma)
 +{
 +	struct xe_vm *vm = range_to_vm(&range->base);
 +	u64 range_size = xe_svm_range_size(range);
 +
 +	if (!range->base.flags.migrate_devmem)
 +		return false;
 +
 +	if (xe_svm_range_in_vram(range)) {
 +		drm_dbg(&vm->xe->drm, "Range is already in VRAM\n");
 +		return false;
 +	}
 +
 +	if (range_size <= SZ_64K && !supports_4K_migration(vm->xe)) {
 +		drm_dbg(&vm->xe->drm, "Platform doesn't support SZ_4K range migration\n");
 +		return false;
 +	}
 +
 +	return true;
 +}
 +
  /**
   * xe_svm_handle_pagefault() - SVM handle page fault
   * @vm: The VM.
@@@ -790,7 -754,7 +804,8 @@@ int xe_svm_handle_pagefault(struct xe_v
  	struct drm_gpusvm_range *r;
  	struct drm_exec exec;
  	struct dma_fence *fence;
 +	int migrate_try_count = ctx.devmem_only ? 3 : 1;
+ 	struct xe_tile *tile = gt_to_tile(gt);
  	ktime_t end = 0;
  	int err;
  

Content of type "application/pgp-signature" skipped

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ