Skip to content

Commit ef3b413

Browse files
fxkamdalexdeucher
authored andcommitted
drm/amdkfd: Use prange->list head for insert_list
There are seven list_heads in struct svm_range: list, update_list, remove_list, insert_list, svm_bo_list, deferred_list, child_list. This patch and the next one remove two of them that are redundant. The insert_list head was only used for new ranges that are not on the svms->list yet. So we can use that list head for keeping track of new ranges before they get added, and use list_move_tail to move them to the svms->list when ready. Signed-off-by: Felix Kuehling <[email protected]> Reviewed-by: Philip Yang <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 9b7a4de commit ef3b413

File tree

2 files changed

+8
-11
lines changed

2 files changed

+8
-11
lines changed

drivers/gpu/drm/amd/amdkfd/kfd_svm.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ static void svm_range_add_to_svms(struct svm_range *prange)
107107
pr_debug("svms 0x%p prange 0x%p [0x%lx 0x%lx]\n", prange->svms,
108108
prange, prange->start, prange->last);
109109

110-
list_add_tail(&prange->list, &prange->svms->list);
110+
list_move_tail(&prange->list, &prange->svms->list);
111111
prange->it_node.start = prange->start;
112112
prange->it_node.last = prange->last;
113113
interval_tree_insert(&prange->it_node, &prange->svms->objects);
@@ -296,7 +296,6 @@ svm_range *svm_range_new(struct svm_range_list *svms, uint64_t start,
296296
INIT_LIST_HEAD(&prange->list);
297297
INIT_LIST_HEAD(&prange->update_list);
298298
INIT_LIST_HEAD(&prange->remove_list);
299-
INIT_LIST_HEAD(&prange->insert_list);
300299
INIT_LIST_HEAD(&prange->svm_bo_list);
301300
INIT_LIST_HEAD(&prange->deferred_list);
302301
INIT_LIST_HEAD(&prange->child_list);
@@ -1018,7 +1017,7 @@ svm_range_split_tail(struct svm_range *prange,
10181017
int r = svm_range_split(prange, prange->start, new_last, &tail);
10191018

10201019
if (!r)
1021-
list_add(&tail->insert_list, insert_list);
1020+
list_add(&tail->list, insert_list);
10221021
return r;
10231022
}
10241023

@@ -1030,7 +1029,7 @@ svm_range_split_head(struct svm_range *prange,
10301029
int r = svm_range_split(prange, new_start, prange->last, &head);
10311030

10321031
if (!r)
1033-
list_add(&head->insert_list, insert_list);
1032+
list_add(&head->list, insert_list);
10341033
return r;
10351034
}
10361035

@@ -1899,7 +1898,7 @@ svm_range_add(struct kfd_process *p, uint64_t start, uint64_t size,
18991898
}
19001899

19011900
list_add(&old->remove_list, remove_list);
1902-
list_add(&prange->insert_list, insert_list);
1901+
list_add(&prange->list, insert_list);
19031902
list_add(&prange->update_list, update_list);
19041903

19051904
if (node->start < start) {
@@ -1931,7 +1930,7 @@ svm_range_add(struct kfd_process *p, uint64_t start, uint64_t size,
19311930
goto out;
19321931
}
19331932

1934-
list_add(&prange->insert_list, insert_list);
1933+
list_add(&prange->list, insert_list);
19351934
list_add(&prange->update_list, update_list);
19361935
}
19371936

@@ -1946,13 +1945,13 @@ svm_range_add(struct kfd_process *p, uint64_t start, uint64_t size,
19461945
r = -ENOMEM;
19471946
goto out;
19481947
}
1949-
list_add(&prange->insert_list, insert_list);
1948+
list_add(&prange->list, insert_list);
19501949
list_add(&prange->update_list, update_list);
19511950
}
19521951

19531952
out:
19541953
if (r)
1955-
list_for_each_entry_safe(prange, tmp, insert_list, insert_list)
1954+
list_for_each_entry_safe(prange, tmp, insert_list, list)
19561955
svm_range_free(prange);
19571956

19581957
return r;
@@ -3236,7 +3235,7 @@ svm_range_set_attr(struct kfd_process *p, uint64_t start, uint64_t size,
32363235
goto out;
32373236
}
32383237
/* Apply changes as a transaction */
3239-
list_for_each_entry_safe(prange, next, &insert_list, insert_list) {
3238+
list_for_each_entry_safe(prange, next, &insert_list, list) {
32403239
svm_range_add_to_svms(prange);
32413240
svm_range_add_notifier_locked(mm, prange);
32423241
}

drivers/gpu/drm/amd/amdkfd/kfd_svm.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ struct svm_work_list_item {
7777
* @list: link list node, used to scan all ranges of svms
7878
* @update_list:link list node used to add to update_list
7979
* @remove_list:link list node used to add to remove list
80-
* @insert_list:link list node used to add to insert list
8180
* @mapping: bo_va mapping structure to create and update GPU page table
8281
* @npages: number of pages
8382
* @dma_addr: dma mapping address on each GPU for system memory physical page
@@ -114,7 +113,6 @@ struct svm_range {
114113
struct list_head list;
115114
struct list_head update_list;
116115
struct list_head remove_list;
117-
struct list_head insert_list;
118116
uint64_t npages;
119117
dma_addr_t *dma_addr[MAX_GPU_INSTANCE];
120118
struct ttm_resource *ttm_res;

0 commit comments

Comments
 (0)