[PATCH v3 2/2] drm/admgpu: Present amdgpu_task_info in VM_FAULTS.
Christian König
christian.koenig at amd.com
Mon Jul 9 11:29:14 UTC 2018
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.
Christian.
>
> Jerry
More information about the amd-gfx
mailing list