[PATCH v3 2/2] drm/admgpu: Present amdgpu_task_info in VM_FAULTS.

Zhang, Jerry (Junwei) Jerry.Zhang at amd.com
Tue Jul 10 03:14:44 UTC 2018


On 07/09/2018 07:29 PM, Christian König wrote:
> Am 09.07.2018 um 12:14 schrieb Zhang, Jerry (Junwei):
>> On 07/09/2018 04:55 PM, Christian König wrote:
>>> Am 09.07.2018 um 09:48 schrieb Zhang, Jerry (Junwei):
>>>> On 07/09/2018 03:04 PM, Christian König wrote:
>>>>> Am 09.07.2018 um 07:13 schrieb Zhang, Jerry (Junwei):
>>>>>> On 07/06/2018 03:27 AM, Andrey Grodzovsky wrote:
>>>>>>> Extract and present the reposnsible process and thread when
>>>>>>> VM_FAULT happens.
>>>>>>>
>>>>>>> v2: Use getter and setter functions.
>>>>>>>
>>>>>>> Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky at amd.com>
>>>>>>> ---
>>>>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c |  4 ++++
>>>>>>>   drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c  | 10 +++++++---
>>>>>>>   drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c  |  9 +++++++--
>>>>>>>   3 files changed, 18 insertions(+), 5 deletions(-)
>>>>>>>
>>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>>>>>>> index 7a625f3..609c8f5 100644
>>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>>>>>>> @@ -187,6 +187,10 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, void *data)
>>>>>>>       if (p->uf_entry.robj)
>>>>>>>           p->job->uf_addr = uf_offset;
>>>>>>>       kfree(chunk_array);
>>>>>>> +
>>>>>>> +    /* Use this opportunity to fill in task info for the vm */
>>>>>>> +    amdgpu_vm_set_task_info(vm);
>>>>>>> +
>>>>>>
>>>>>> Shall we set the task info when vm init?
>>>>>
>>>>> No, vm_init() is called from a completely different process which is later on user of the VM.
>>>>
>>>> Originally I thought UMD opened DRI node and create a VM by vm_init(), then every command submission
>>>> would be passed in the same VM initialized by vm_init().
>>>>
>>>> So that's different process?
>>>
>>> The display server, e.g. X or Wayland.
>>>
>>> See with DRI3 the process of opening a connection to the hardware is that the display server open the file descriptor and with that calls vm_init.
>>>
>>> And then this file descriptor is passed to the client processes through IPC.
>>
>> Thanks to reply.
>> yes, it's likely to open amdgpu node in ddx when driver probe and pass it to other client.
>>
>> While that looks like just in the process of initialization that X server loads ddx driver.
>
> No, that happens with each client.
>
>> But when I start 2 glxgears, that kms_open()->vm_init() will be called twice, which looks related to App as well.
>> (anyway, I will check it more)
>>
>> Even so, it sounds vm_init() should be created firstly, then we use that VM for process on every command submission.
>> So I thought to set the task info at the first time vm_init() and use that info on VM fault process func.
>
> No, that would certainly be not correct.
>
> As I explained vm_init() is not necessarily called by the process which is then going to use the VM.

I ran to an unexpected direction, in reality we'd like to get the process task_info for the client.
And vm_init() do happen in any place(xserver/ddx/client) but be used in client finally, so not good to get the task info in vm_init()

Thanks for your patient explanation.

the series of patch is

Reviewed-by: Junwei Zhang <Jerry.Zhang at amd.com>

Jerry


>
> Christian.
>
>>
>> Jerry
>


More information about the amd-gfx mailing list