From: sashiko-bot@kernel.org
To: "Himal Prasad Ghimiray" <himal.prasad.ghimiray@intel.com>
Cc: intel-xe@lists.freedesktop.org
Subject: Re: [RFC v2 18/21] drm/xe/svm: Define access counter migration policy
Date: Wed, 09 Sep 2026 13:01:29 +0000 [thread overview]
Message-ID: <20260909130129.D58871F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260909124457.1610890-41-himal.prasad.ghimiray@intel.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
Pre-existing issues:
- [Medium] Access counter triggered setup for un-migratable ranges incorrectly returns -EACCES, dropping valid events and rendering the graceful skip path unreachable.
- [Medium] Stale access counter events bypass the explicitly configured madvise preferred location policy.
--
commit 7722d68606c2a2a1e92cb30c951c55b50aca4779
Author: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
drm/xe/svm: Define access counter migration policy
This commit defines the policy for which GPU should own access
counter-triggered migration in a multi-GPU system, keying off the VMA's madvise
preferred location. It configures the PTE NC (no-count) bit based on this
preference.
> diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
> index 7aa09e30fa467..fd42969d9e620 100644
> --- a/drivers/gpu/drm/xe/xe_svm.c
> +++ b/drivers/gpu/drm/xe/xe_svm.c
[ ... ]
> @@ -1339,9 +1371,15 @@ static int __xe_svm_range_setup(struct xe_vm *vm, struct xe_vma *vma,
>
> range_debug(range, "PAGE FAULT");
>
> - if (acc_ctr_trigger && !range_flags.migrate_devmem) {
> + /*
> + * AC-triggered setup: if the range is already in device memory a
> + * rebind is all that's needed. Otherwise proceed to the
> + * migration path — with no explicit madvise preferred location, the
> + * default first-touch-then-migrate-on-hot policy applies and we
> + * should attempt VRAM placement for this hot range.
> + */
> + if (acc_ctr_trigger && !range_flags.migrate_devmem)
> goto out;
[Severity: Medium]
This is a pre-existing issue, but does this explicit graceful skip path ever
get reached?
Earlier in __xe_svm_range_setup(), the code checks:
if (ctx.devmem_only && !range_flags.migrate_devmem) {
err = -EACCES;
goto err_out;
}
Since setting acc_ctr_trigger to true forces ctx.devmem_only to true, the
earlier check appears to force a hard failure (-EACCES) for access counter
events on un-migratable ranges, masking this intended graceful skip.
This could cause the access counter worker in
xe_access_counter_queue_work_func() to abort the loop for the current
granularity window, dropping legitimate migration hints for other VMAs in the
same window.
Is this the intended behavior, or should the access counter triggers be treated
as advisory and gracefully skipped?
[Severity: Medium]
This is also a pre-existing issue, but can stale access counter events bypass
the explicitly configured madvise preferred location policy?
Earlier in __xe_svm_range_setup(), dpagemap is resolved as follows:
dpagemap = ctx.devmem_only ? xe_tile_local_pagemap(tile) :
xe_vma_resolve_pagemap(vma, tile);
Because acc_ctr_trigger sets ctx.devmem_only to true, this unconditional
ternary assignment always sets the target to the local tile for access counter
events, completely bypassing the xe_vma_resolve_pagemap() policy check.
If a userspace application makes asynchronous madvise calls concurrently with
GPU memory accesses to set the preferred location to
DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM, could the memory be incorrectly migrated
to the local GPU's VRAM?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260909124457.1610890-23-himal.prasad.ghimiray@intel.com?part=18
next prev parent reply other threads:[~2026-09-09 13:01 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-09 12:44 [RFC v2 00/21] drm/xe: Access counter support for migration hints Himal Prasad Ghimiray
2026-09-09 12:44 ` [RFC v2 01/21] drm/xe: Add xe_usm_queue generic USM circular buffer Himal Prasad Ghimiray
2026-09-09 12:51 ` sashiko-bot
2026-09-09 12:44 ` [RFC v2 02/21] drm/xe: Stub out new access_counter layer Himal Prasad Ghimiray
2026-09-09 12:44 ` [RFC v2 03/21] drm/xe: Implement xe_access_counter_init Himal Prasad Ghimiray
2026-09-09 12:55 ` sashiko-bot
2026-09-09 12:44 ` [RFC v2 04/21] drm/xe: Implement xe_access_counter_handler Himal Prasad Ghimiray
2026-09-09 12:58 ` sashiko-bot
2026-09-09 12:44 ` [RFC v2 05/21] drm/xe: Extract xe_vma_lock_and_validate helper Himal Prasad Ghimiray
2026-09-09 12:45 ` [RFC v2 06/21] drm/xe: Move ASID to FAULT VM lookup to xe_device Himal Prasad Ghimiray
2026-09-09 12:45 ` [RFC v2 07/21] drm/xe/pf: Use xe_device_asid_to_vm in xe_pagefault_save_to_vm Himal Prasad Ghimiray
2026-09-09 12:45 ` [RFC v2 08/21] drm/xe: Implement xe_access_counter_queue_work Himal Prasad Ghimiray
2026-09-09 12:45 ` [RFC v2 09/21] drm/xe: Implement xe_access_counter_service Himal Prasad Ghimiray
2026-09-09 12:45 ` [RFC v2 10/21] drm/xe/trace: Add xe_vma_acc trace event for access counter notifications Himal Prasad Ghimiray
2026-09-09 12:45 ` [RFC v2 11/21] drm/xe/svm: Handle svm vma for acc_ctr trigger Himal Prasad Ghimiray
2026-09-09 12:52 ` sashiko-bot
2026-09-09 12:45 ` [RFC v2 12/21] drm/xe: Service all VMAs in an access counter granularity window Himal Prasad Ghimiray
2026-09-09 12:45 ` [RFC v2 13/21] drm/xe: Add xe_guc_access_counter layer Himal Prasad Ghimiray
2026-09-09 12:54 ` sashiko-bot
2026-09-09 12:45 ` [RFC v2 14/21] drm/xe/uapi: Add access counter parameter extension for exec queue Himal Prasad Ghimiray
2026-09-09 12:52 ` sashiko-bot
2026-09-09 12:45 ` [RFC v2 15/21] drm/xe/lrc: Pass exec_queue to xe_lrc_create for access counter params Himal Prasad Ghimiray
2026-09-09 12:45 ` [RFC v2 16/21] drm/xe/vm: Add xe_vma_supports_access_ctr() helper Himal Prasad Ghimiray
2026-09-09 12:45 ` [RFC v2 17/21] drm/xe/pt: Set NC PTE bit for VMAs ineligible for access counting Himal Prasad Ghimiray
2026-09-09 12:56 ` sashiko-bot
2026-09-09 12:45 ` [RFC v2 18/21] drm/xe/svm: Define access counter migration policy Himal Prasad Ghimiray
2026-09-09 13:01 ` sashiko-bot [this message]
2026-09-09 12:45 ` [RFC v2 19/21] drm/xe/svm: Add MIGRATE_ON_ACCESS_COUNTER bind flag Himal Prasad Ghimiray
2026-09-09 12:57 ` sashiko-bot
2026-09-09 12:45 ` [RFC v2 20/21] drm/xe/svm: Move EVICTED PAGES debug log to callers Himal Prasad Ghimiray
2026-09-09 12:45 ` [RFC v2 21/21] drm/xe/svm: Distinguish access-counter-triggered range setup in logs Himal Prasad Ghimiray
2026-09-09 12:58 ` sashiko-bot
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=20260909130129.D58871F00A3A@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=himal.prasad.ghimiray@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=sashiko-reviews@lists.linux.dev \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox