[PATCH v2] drm/amdgpu: Verify root PD is mapped into kernel address space.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 06.07.2018 um 16:22 schrieb Andrey Grodzovsky:
>
>
> On 07/06/2018 09:55 AM, Christian König wrote:
>> Am 06.07.2018 um 15:50 schrieb Andrey Grodzovsky:
>>>
>>>
>>> On 07/06/2018 04:02 AM, Christian König wrote:
>>>> Am 05.07.2018 um 20:56 schrieb Andrey Grodzovsky:
>>>>> Problem: When PD/PT update made by CPU root PD was not yet mapped 
>>>>> causing
>>>>> page fault.
>>>>>
>>>>> Fix: Verify root PD is mapped into CPU address space.
>>>>>
>>>>> v2:
>>>>> Make sure that we add the root PD to the relocated list
>>>>> since then it's get mapped into CPU address space bt default
>>>>> in amdgpu_vm_update_directories.
>>>>>
>>>>> Link: https://bugs.freedesktop.org/show_bug.cgi?id=107065
>>>>> Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky at amd.com>
>>>>>
>>>>> Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky at amd.com>
>>>>> ---
>>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 +++++-
>>>>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
>>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>>>> index 845f73a..1a8caf1 100644
>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>>>>> @@ -156,6 +156,9 @@ static void amdgpu_vm_bo_base_init(struct 
>>>>> amdgpu_vm_bo_base *base,
>>>>>           return;
>>>>>       list_add_tail(&base->bo_list, &bo->va);
>>>>>   +    if (bo->tbo.type == ttm_bo_type_kernel)
>>>>> +        list_move(&base->vm_status, &vm->relocated);
>>>>> +
>>>>>       if (bo->tbo.resv != vm->root.base.bo->tbo.resv)
>>>>>           return;
>>>>>   @@ -168,7 +171,8 @@ static void amdgpu_vm_bo_base_init(struct 
>>>>> amdgpu_vm_bo_base *base,
>>>>>        * is currently evicted. add the bo to the evicted list to 
>>>>> make sure it
>>>>>        * is validated on next vm use to avoid fault.
>>>>>        * */
>>>>> -    list_move_tail(&base->vm_status, &vm->evicted);
>>>>> +    if (bo->tbo.type != ttm_bo_type_kernel)
>>>>> +        list_move_tail(&base->vm_status, &vm->evicted);
>>>>
>>>> You need to drop that chunk, the evicted state supersedes the 
>>>> relocated state (e.g. when they are validated they move from 
>>>> evicted to relocated).
>>>
>>> I don't get it, can you explain more in detail why it's OK to remove 
>>> it ? They will not be in evicted list any more.
>>
>> See what happens with the BOs on the evicted list -> they get moved 
>> to the relocated list after validation.
>>
>> Christian.
>
> Oh, so you meant keep the original code right ? The 
> "list_move_tail(&base->vm_status, &vm->evicted); ?
> Meaning just remove the " if (bo->tbo.type != ttm_bo_type_kernel)" ?

Yes, yes, of course. I mean you should drop the chunk of changes, e.g. 
keep it as it is.

Sorry for the confusion,
Christian.

>
> ANdrey
>
>>
>>>
>>> Andrey
>>>
>>>>
>>>> Additional to that the now superfluous move in 
>>>> amdgpu_vm_alloc_levels() can be removed.
>>>>
>>>> Christian.
>>>>
>>>>>   }
>>>>>     /**
>>>>
>>>
>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux