[PATCH v2] drm/amdgpu: fix before and after mapping judgement for replace mapping
Christian König
deathsimple at vodafone.de
Thu Mar 16 09:26:43 UTC 2017
Am 16.03.2017 um 10:16 schrieb Zhang, Jerry:
> Hi Christian,
>
> Thanks for your review.
>
> BTW, Have you pushed the previous patches in all-open branch?
> I didn't find them. Or any concern?
No, unfortunately had a few very busy days this week and didn't found time.
Feel free to push them with your rb.
Christian.
>
> So we may use these patch on topic branch only for now.
>
> Regards,
> Jerry (Junwei Zhang)
>
> Linux Base Graphics
> SRDC Software Development
> _____________________________________
>
>
>> -----Original Message-----
>> From: Christian König [mailto:deathsimple at vodafone.de]
>> Sent: Thursday, March 16, 2017 17:11
>> To: Zhang, Jerry; amd-gfx at lists.freedesktop.org
>> Subject: Re: [PATCH v2] drm/amdgpu: fix before and after mapping judgement
>> for replace mapping
>>
>> Am 16.03.2017 um 09:13 schrieb Junwei Zhang:
>>> If the before mapping is 1 page size, so its start and last will be same.
>>> Thus below condition will become false, then to free the before mapping.
>>> > if (before->it.start != before->it.last) But in this case, we
>>> need the before mapping of 1 page size.
>>> So does after mapping.
>>>
>>> Signed-off-by: Junwei Zhang <Jerry.Zhang at amd.com>
>> Reviewed-by: Christian König <christian.koenig at amd.com>
>>
>>> ---
>>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 10 ++++++----
>>> 1 file changed, 6 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>> index f7c02a9..e95adec 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>> @@ -1748,12 +1748,14 @@ int amdgpu_vm_bo_clear_mappings(struct
>> amdgpu_device *adev,
>>> before = kzalloc(sizeof(*before), GFP_KERNEL);
>>> if (!before)
>>> return -ENOMEM;
>>> + INIT_LIST_HEAD(&before->list);
>>>
>>> after = kzalloc(sizeof(*after), GFP_KERNEL);
>>> if (!after) {
>>> kfree(before);
>>> return -ENOMEM;
>>> }
>>> + INIT_LIST_HEAD(&after->list);
>>>
>>> /* Now gather all removed mappings */
>>> it = interval_tree_iter_first(&vm->va, saddr, eaddr); @@ -1763,7
>>> +1765,7 @@ int amdgpu_vm_bo_clear_mappings(struct amdgpu_device *adev,
>>>
>>> /* Remember mapping split at the start */
>>> if (tmp->it.start < saddr) {
>>> - before->it.start = tmp->it.start;;
>>> + before->it.start = tmp->it.start;
>>> before->it.last = saddr - 1;
>>> before->offset = tmp->offset;
>>> before->flags = tmp->flags;
>>> @@ -1799,8 +1801,8 @@ int amdgpu_vm_bo_clear_mappings(struct
>> amdgpu_device *adev,
>>> trace_amdgpu_vm_bo_unmap(NULL, tmp);
>>> }
>>>
>>> - /* Insert partial mapping before the range*/
>>> - if (before->it.start != before->it.last) {
>>> + /* Insert partial mapping before the range */
>>> + if (!list_empty(&before->list)) {
>>> interval_tree_insert(&before->it, &vm->va);
>>> if (before->flags & AMDGPU_PTE_PRT)
>>> amdgpu_vm_prt_get(adev);
>>> @@ -1809,7 +1811,7 @@ int amdgpu_vm_bo_clear_mappings(struct
>> amdgpu_device *adev,
>>> }
>>>
>>> /* Insert partial mapping after the range */
>>> - if (after->it.start != after->it.last) {
>>> + if (!list_empty(&after->list)) {
>>> interval_tree_insert(&after->it, &vm->va);
>>> if (after->flags & AMDGPU_PTE_PRT)
>>> amdgpu_vm_prt_get(adev);
More information about the amd-gfx
mailing list