All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
To: Oak Zeng <oak.zeng@intel.com>, intel-xe@lists.freedesktop.org
Subject: Re: [PATCH] drm/xe: Avoid evicting object of the same vm in none fault mode
Date: Fri, 29 Nov 2024 09:45:18 +0100	[thread overview]
Message-ID: <8ea908b670aaa2bf7d094f989967ad095b06e883.camel@linux.intel.com> (raw)
In-Reply-To: <20241128210103.1820743-1-oak.zeng@intel.com>

On Thu, 2024-11-28 at 16:01 -0500, Oak Zeng wrote:
> BO validation during vm_bind could trigger memory eviction when
> system runs under memory pressure. Right now we blindly evict
> BOs of all VMs. This scheme has a problem when system runs in
> none recoverable page fault mode: even though the vm_bind could
> be successful by evicting BOs, the later the rebinding of the
> evicted BOs would fail. So it is better to report an out-of-
> memory failure at vm_bind time than at time of rebinding where
> xekmd currently doesn't have a good mechanism to report error
> to user space.
> 
> This patch implemented a scheme to only evict objects of other
> VMs during vm_bind time. Object of the same VM will skip eviction.
> If we failed to find enough memory for vm_bind, we report error
> to user space at vm_bind time.
> 
> This scheme is not needed for recoverable page fault mode under
> what we can dynamically fault-in pages on demand.
> 
> Signed-off-by: Oak Zeng <oak.zeng@intel.com>
> Suggested-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> ---
>  drivers/gpu/drm/xe/xe_vm.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index 2492750505d69..c005c96b88167 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -2359,13 +2359,15 @@ static int vma_lock_and_validate(struct
> drm_exec *exec, struct xe_vma *vma,
>  				 bool validate)
>  {
>  	struct xe_bo *bo = xe_vma_bo(vma);
> +	struct xe_vm *vm = xe_vma_vm(vma);
> +	bool preempt_mode = xe_vm_in_preempt_fence_mode(vm);

I'd skip the stack variable here and use the function call directly
below.

>  	int err = 0;
>  
>  	if (bo) {
>  		if (!bo->vm)
>  			err = drm_exec_lock_obj(exec, &bo-
> >ttm.base);
>  		if (!err && validate)
> -			err = xe_bo_validate(bo, xe_vma_vm(vma),
> true);
> +			err = xe_bo_validate(bo, vm, !preempt_mode);
>  	}
>  
>  	return err;

Anyway,
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>

Note that this is not fully sufficient to avoid OOM errors in the
rebind worker. Another process may have already evicted this vm's
memory and then pinned a lot of VRAM. But it should probably be
sufficient in single-client cases.

Thanks,
Thomas




  parent reply	other threads:[~2024-11-29  8:45 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-28 21:01 [PATCH] drm/xe: Avoid evicting object of the same vm in none fault mode Oak Zeng
2024-11-28 20:52 ` ✓ CI.Patch_applied: success for " Patchwork
2024-11-28 20:52 ` ✓ CI.checkpatch: " Patchwork
2024-11-28 20:53 ` ✓ CI.KUnit: " Patchwork
2024-11-28 21:11 ` ✓ CI.Build: " Patchwork
2024-11-28 21:14 ` ✓ CI.Hooks: " Patchwork
2024-11-28 21:15 ` ✓ CI.checksparse: " Patchwork
2024-11-28 21:38 ` ✓ Xe.CI.BAT: " Patchwork
2024-11-29  8:45 ` Thomas Hellström [this message]
2024-11-29  9:29 ` ✗ Xe.CI.Full: failure " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2024-12-03  2:19 [PATCH] " Oak Zeng
2024-12-06 14:45 ` Rodrigo Vivi
2024-12-06 15:19   ` Zeng, Oak
2024-12-06 15:53     ` Rodrigo Vivi
2024-11-28 20:58 Oak Zeng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8ea908b670aaa2bf7d094f989967ad095b06e883.camel@linux.intel.com \
    --to=thomas.hellstrom@linux.intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=oak.zeng@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.