On 2018å¹´06æ??05æ?¥ 16:14, Christian König wrote: > Am 05.06.2018 um 10:09 schrieb Junwei Zhang: >> From: Christian König <ckoenig.leichtzumerken at gmail.com> >> >> (comments: I cannot receive amdgfx mail recently and reply the mail >> directly, >> so send it out with my update v2, tested with Unigine Heaven, >> glmark2, gputest, >> some cases from vulkan PRT test) >> >> v2: store bo_va as well >> >> We need to put the lose ends on the invalid list because it is possible >> that we need to split up huge pages for them. >> >> Signed-off-by: Christian König <christian.koenig at amd.com> >> Signed-off-by: Junwei Zhang <Jerry.Zhang at amd.com> > > Good catch that assigning the bo_va is also missing. David can you > take a look and give a review? Feel free add my RB on it, it looks very good. Regards, David Zhou > > Since I'm a co-author I can't do it myself. > > Thanks, > Christian. > >> --- >>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 ++++-- >>  1 file changed, 4 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c >> index 850cd66..cc9d486 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c >> @@ -2172,7 +2172,8 @@ int amdgpu_vm_bo_clear_mappings(struct >> amdgpu_device *adev, >>              before->last = saddr - 1; >>              before->offset = tmp->offset; >>              before->flags = tmp->flags; >> -           list_add(&before->list, &tmp->list); >> +           before->bo_va = tmp->bo_va; >> +           list_add(&before->list, &tmp->bo_va->invalids); >>          } >>           /* Remember mapping split at the end */ >> @@ -2182,7 +2183,8 @@ int amdgpu_vm_bo_clear_mappings(struct >> amdgpu_device *adev, >>              after->offset = tmp->offset; >>              after->offset += after->start - tmp->start; >>              after->flags = tmp->flags; >> -           list_add(&after->list, &tmp->list); >> +           after->bo_va = tmp->bo_va; >> +           list_add(&after->list, &tmp->bo_va->invalids); >>          } >>           list_del(&tmp->list); >