From mboxrd@z Thu Jan 1 00:00:00 1970 From: Claude Code Review Bot To: dri-devel-reviews@example.com Subject: Claude review: drm/amdgpu: add SVM range migration helpers for drm_pagemap Date: Sat, 16 May 2026 12:15:38 +1000 Message-ID: In-Reply-To: <20260513095734.69598-5-Junhua.Shen@amd.com> References: <20260513095734.69598-1-Junhua.Shen@amd.com> <20260513095734.69598-5-Junhua.Shen@amd.com> X-Mailer: Claude Code Patch Reviewer Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Patch Review **`amdgpu_svm_get_dpagemap` doesn't NULL-check `apagemap`:** ```c static struct drm_pagemap * amdgpu_svm_get_dpagemap(struct amdgpu_svm *svm) { struct amdgpu_pagemap *apagemap =3D svm->adev->apagemap; if (!apagemap->initialized) return NULL; return &apagemap->dpagemap; } ``` If `apagemap` is NULL (SVM migration not initialized), this will dereferenc= e NULL. Needs: ```c if (!apagemap || !apagemap->initialized) return NULL; ``` This is called from `amdgpu_pagemap_capable()` which is used in the fault p= ath, so it's reachable when migration_init wasn't called (e.g., old GPU, AP= U, or init failure). **`range_needs_migrate_to_vram` accesses `range->pages.flags.migrate_devmem= ` without READ_ONCE:** ```c static bool range_needs_migrate_to_vram(struct drm_gpusvm_range *range, enum amdgpu_svm_migrate_mode mode) { if (!range->pages.flags.migrate_devmem) return false; ``` But `range_in_vram()` carefully uses `READ_ONCE` on the flags: ```c struct drm_gpusvm_pages_flags flags =3D { .__flags =3D READ_ONCE(range->pages.flags.__flags), }; ``` Inconsistent synchronization =E2=80=94 if `flags.__flags` can change concur= rently (as the comment "Pairs with WRITE_ONCE" suggests), then `range_needs= _migrate_to_vram` should also use `READ_ONCE`. **`amdgpu_svm_range_migrate_range` ignores migration errors:** ```c if (range_needs_migrate_to_vram(range, migrate_mode)) return amdgpu_svm_range_migrate_to_vram(svm, range); ``` The return value propagates here, but callers in patch 6 (fault path) ignor= e it =E2=80=94 see patch 6 review. **SPDX comment style:** Same issue as patch 1 =E2=80=94 `.c` file uses `/* = SPDX */` instead of `// SPDX`. --- Generated by Claude Code Patch Reviewer