With a nitpick below, this patch is Reviewed-by:Xiaogang Chen<[email protected]>
On 1/8/2024 4:36 PM, Philip Yang wrote:
After range spliting, set new range and old range actual_loc: new range actual_loc is 0 if new->vram_pages is 0. old range actual_loc is 0 if old->vram_pages - new->vram_pages == 0. Signed-off-by: Philip Yang <[email protected]> --- drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c index cc24f30f88fb..cb09e1d3a643 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c @@ -362,7 +362,6 @@ svm_range *svm_range_new(struct svm_range_list *svms, uint64_t start, INIT_LIST_HEAD(&prange->child_list); atomic_set(&prange->invalid, 0); prange->validate_timestamp = 0; - prange->vram_pages = 0;
I think it is better to keep it, also: +new->actual_loc = 0; though not necessary as prange is allocated by kzalloc, just keep consistent with previous statements, or remove atomic_set(&prange->invalid, 0); prange->validate_timestamp = 0; too. Regards Xiaogang
mutex_init(&prange->migrate_mutex); mutex_init(&prange->lock);@@ -980,8 +979,12 @@ svm_range_split_pages(struct svm_range *new, struct svm_range *old,if (r) return r; } - if (old->actual_loc) + if (old->actual_loc && new->vram_pages) { old->vram_pages -= new->vram_pages; + new->actual_loc = old->actual_loc; + if (!old->vram_pages) + old->actual_loc = 0; + }return 0;} @@ -1058,7 +1061,6 @@ svm_range_split_adjust(struct svm_range *new, struct svm_range *old, new->flags = old->flags; new->preferred_loc = old->preferred_loc; new->prefetch_loc = old->prefetch_loc; - new->actual_loc = old->actual_loc; new->granularity = old->granularity; new->mapped_to_gpu = old->mapped_to_gpu; bitmap_copy(new->bitmap_access, old->bitmap_access, MAX_GPU_INSTANCE);
