diff options
| author | Sunil Khatri <sunil.khatri@amd.com> | 2025-09-30 13:45:11 +0530 |
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2025-10-13 14:14:28 -0400 |
| commit | b1dd0db1c668a33112bfb26618c090163700e368 (patch) | |
| tree | b9633accdb1dfafec58b5124ebd0b1f6f133a276 /drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c | |
| parent | e095b55155ef69a8ae0eb114a7fd2a381c012f33 (diff) | |
drm/amdgpu: clean up amdgpu hmm range functions
Clean up the amdgpu hmm range functions for clearer
definition of each.
a. Split amdgpu_ttm_tt_get_user_pages_done into two:
1. amdgpu_hmm_range_valid: To check if the user pages
are valid and update seq num
2. amdgpu_hmm_range_free: Clean up the hmm range
and pfn memory.
b. amdgpu_ttm_tt_get_user_pages_done and
amdgpu_ttm_tt_discard_user_pages are similar function so remove
discard and directly use amdgpu_hmm_range_free to clean up the
hmm range and pfn memory.
Suggested-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Sunil Khatri <sunil.khatri@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c index 53d405a92a14..b582fd217bd0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c @@ -226,14 +226,25 @@ out_free_range: return r; } -bool amdgpu_hmm_range_get_pages_done(struct hmm_range *hmm_range) +bool amdgpu_hmm_range_valid(struct hmm_range *hmm_range) { - bool r; + if (!hmm_range) + return false; + + return !mmu_interval_read_retry(hmm_range->notifier, + hmm_range->notifier_seq); +} + +struct hmm_range *amdgpu_hmm_range_alloc(void) +{ + return kzalloc(sizeof(struct hmm_range), GFP_KERNEL); +} + +void amdgpu_hmm_range_free(struct hmm_range *hmm_range) +{ + if (!hmm_range) + return; - r = mmu_interval_read_retry(hmm_range->notifier, - hmm_range->notifier_seq); kvfree(hmm_range->hmm_pfns); kfree(hmm_range); - - return r; } |