* [PATCH v2] drm/gpusvm: Zero HMM PFNs before scanning ranges
@ 2026-07-21 16:29 Stanislav Kinsburskii
2026-07-21 21:07 ` Matthew Brost
2026-07-22 17:26 ` ✗ LGCI.VerificationFailed: failure for drm/gpusvm: Zero HMM PFNs before scanning ranges (rev2) Patchwork
0 siblings, 2 replies; 3+ messages in thread
From: Stanislav Kinsburskii @ 2026-07-21 16:29 UTC (permalink / raw)
To: maarten.lankhorst, mripard, tzimmermann, airlied, simona,
skinsburskii, thomas.hellstrom
Cc: dri-devel, linux-kernel, intel-xe
drm_gpusvm_check_pages() and drm_gpusvm_scan_mm() asks HMM to report the
current CPU page-table state without faulting missing entries by leaving
default_flags set to zero. The HMM PFN array is still caller-owned input/output
state, and the framework may preserve input bits while filling entries. It is
not safe for the caller to hand HMM an uninitialized array and then treat
entries without HMM_PFN_VALID as an authoritative unpopulated result.
Use kvcalloc() for the temporary PFN array so entries that are not
reported as valid start from the documented zero state. This prevents
random stack or heap contents from being interpreted as HMM PFN flags or
PFN values during the scan.
Fixes: f1d08a586482 ("drm/gpusvm: Introduce a function to scan the current migration state")
Cc: stable@vger.kernel.org
Signed-off-by: Stanislav Kinsburskii <skinsburskii@gmail.com>
---
drivers/gpu/drm/drm_gpusvm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index ca234fd2c491..6ca6e68be5a6 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -708,7 +708,7 @@ static bool drm_gpusvm_check_pages(struct drm_gpusvm *gpusvm,
mmap_assert_locked(gpusvm->mm);
- pfns = kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL);
+ pfns = kvcalloc(npages, sizeof(*pfns), GFP_KERNEL);
if (!pfns)
return false;
@@ -780,7 +780,7 @@ enum drm_gpusvm_scan_result drm_gpusvm_scan_mm(struct drm_gpusvm_range *range,
const struct dev_pagemap *other = NULL;
int err, i;
- pfns = kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL);
+ pfns = kvcalloc(npages, sizeof(*pfns), GFP_KERNEL);
if (!pfns)
return DRM_GPUSVM_SCAN_UNPOPULATED;
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH v2] drm/gpusvm: Zero HMM PFNs before scanning ranges
2026-07-21 16:29 [PATCH v2] drm/gpusvm: Zero HMM PFNs before scanning ranges Stanislav Kinsburskii
@ 2026-07-21 21:07 ` Matthew Brost
2026-07-22 17:26 ` ✗ LGCI.VerificationFailed: failure for drm/gpusvm: Zero HMM PFNs before scanning ranges (rev2) Patchwork
1 sibling, 0 replies; 3+ messages in thread
From: Matthew Brost @ 2026-07-21 21:07 UTC (permalink / raw)
To: Stanislav Kinsburskii
Cc: maarten.lankhorst, mripard, tzimmermann, airlied, simona,
thomas.hellstrom, dri-devel, linux-kernel, intel-xe
On Tue, Jul 21, 2026 at 09:29:56AM -0700, Stanislav Kinsburskii wrote:
> drm_gpusvm_check_pages() and drm_gpusvm_scan_mm() asks HMM to report the
> current CPU page-table state without faulting missing entries by leaving
> default_flags set to zero. The HMM PFN array is still caller-owned input/output
> state, and the framework may preserve input bits while filling entries. It is
> not safe for the caller to hand HMM an uninitialized array and then treat
> entries without HMM_PFN_VALID as an authoritative unpopulated result.
>
> Use kvcalloc() for the temporary PFN array so entries that are not
> reported as valid start from the documented zero state. This prevents
> random stack or heap contents from being interpreted as HMM PFN flags or
> PFN values during the scan.
>
> Fixes: f1d08a586482 ("drm/gpusvm: Introduce a function to scan the current migration state")
> Cc: stable@vger.kernel.org
> Signed-off-by: Stanislav Kinsburskii <skinsburskii@gmail.com>
> ---
> drivers/gpu/drm/drm_gpusvm.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
> index ca234fd2c491..6ca6e68be5a6 100644
> --- a/drivers/gpu/drm/drm_gpusvm.c
> +++ b/drivers/gpu/drm/drm_gpusvm.c
> @@ -708,7 +708,7 @@ static bool drm_gpusvm_check_pages(struct drm_gpusvm *gpusvm,
>
> mmap_assert_locked(gpusvm->mm);
>
> - pfns = kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL);
> + pfns = kvcalloc(npages, sizeof(*pfns), GFP_KERNEL);
This is different offending original patch:
99624bdff867 drm/gpusvm: Add support for GPU Shared Virtual Memory
> if (!pfns)
> return false;
>
> @@ -780,7 +780,7 @@ enum drm_gpusvm_scan_result drm_gpusvm_scan_mm(struct drm_gpusvm_range *range,
> const struct dev_pagemap *other = NULL;
> int err, i;
>
> - pfns = kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL);
> + pfns = kvcalloc(npages, sizeof(*pfns), GFP_KERNEL);
Hence I merged your v1 to drm-misc-fixes last night.
Can you repost with just the drm_gpusvm_check_pages fix?
Matt
> if (!pfns)
> return DRM_GPUSVM_SCAN_UNPOPULATED;
>
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread* ✗ LGCI.VerificationFailed: failure for drm/gpusvm: Zero HMM PFNs before scanning ranges (rev2)
2026-07-21 16:29 [PATCH v2] drm/gpusvm: Zero HMM PFNs before scanning ranges Stanislav Kinsburskii
2026-07-21 21:07 ` Matthew Brost
@ 2026-07-22 17:26 ` Patchwork
1 sibling, 0 replies; 3+ messages in thread
From: Patchwork @ 2026-07-22 17:26 UTC (permalink / raw)
To: Stanislav Kinsburskii; +Cc: intel-xe
== Series Details ==
Series: drm/gpusvm: Zero HMM PFNs before scanning ranges (rev2)
URL : https://patchwork.freedesktop.org/series/170665/
State : failure
== Summary ==
Series author address 'skinsburskii@gmail.com' is not on the allowlist, which prevents CI from being automatically triggered.
If you want CI to run for this series, ask Patchwork project owners to click 'retest' on the series in Patchwork.
Exception occurred during validation, bailing out!
Build URL: http://intel-gfx-ci-public.igk.intel.com:8080/job/xe_pw_trigger/1223166/ (on master)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-22 17:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-21 16:29 [PATCH v2] drm/gpusvm: Zero HMM PFNs before scanning ranges Stanislav Kinsburskii
2026-07-21 21:07 ` Matthew Brost
2026-07-22 17:26 ` ✗ LGCI.VerificationFailed: failure for drm/gpusvm: Zero HMM PFNs before scanning ranges (rev2) Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox