All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Christian König" <deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
To: zhoucm1 <david1.zhou-5C7GfCeVMHo@public.gmane.org>,
	amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: Re: [PATCH 4/9] drm/amdgpu: add bo_va cleared flag again
Date: Mon, 28 Aug 2017 13:57:19 +0200	[thread overview]
Message-ID: <9fbf8354-1e2f-2705-b090-76f64968d286@vodafone.de> (raw)
In-Reply-To: <d076aae6-5620-dd91-f504-982abb2292dd-5C7GfCeVMHo@public.gmane.org>

Actually that lockless access is removed again in the next patch.

I will reorder the patches, so that it never even occur.

Christian.

Am 28.08.2017 um 06:12 schrieb zhoucm1:
> I'm not sure this one, since you remove status lock for vm_status 
> list, I think we need to test this carefully.
>
> Regards,
>
> David Zhou
>
>
> On 2017年08月25日 17:38, Christian König wrote:
>> From: Christian König <christian.koenig@amd.com>
>>
>> We changed this to use an extra list a while back, but for the next
>> series I need a separate flag again.
>>
>> Signed-off-by: Christian König <christian.koenig@amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.h |  3 +++
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c     | 37 
>> ++++++++++++++----------------
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h     |  3 ---
>>   3 files changed, 20 insertions(+), 23 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
>> index a288fa6..e613ba4 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
>> @@ -55,6 +55,9 @@ struct amdgpu_bo_va {
>>       /* mappings for this bo_va */
>>       struct list_head        invalids;
>>       struct list_head        valids;
>> +
>> +    /* If the mappings are cleared or filled */
>> +    bool                cleared;
>>   };
>>     struct amdgpu_bo {
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> index f621dba..16148ef 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
>> @@ -1787,10 +1787,13 @@ int amdgpu_vm_bo_update(struct amdgpu_device 
>> *adev,
>>       else
>>           flags = 0x0;
>>   -    spin_lock(&vm->status_lock);
>> -    if (!list_empty(&bo_va->base.vm_status))
>> +    /* We access vm_status without the status lock here, but that is ok
>> +     * because when we don't clear the BO is locked and so the 
>> status can't
>> +     * change
>> +     */
>> +    if ((!clear && !list_empty(&bo_va->base.vm_status)) ||
>> +        bo_va->cleared != clear)
>>           list_splice_init(&bo_va->valids, &bo_va->invalids);
>> -    spin_unlock(&vm->status_lock);
>>         list_for_each_entry(mapping, &bo_va->invalids, list) {
>>           r = amdgpu_vm_bo_split_mapping(adev, exclusive, pages_addr, 
>> vm,
>> @@ -1800,25 +1803,22 @@ int amdgpu_vm_bo_update(struct amdgpu_device 
>> *adev,
>>               return r;
>>       }
>>   -    if (trace_amdgpu_vm_bo_mapping_enabled()) {
>> -        list_for_each_entry(mapping, &bo_va->valids, list)
>> -            trace_amdgpu_vm_bo_mapping(mapping);
>> -
>> -        list_for_each_entry(mapping, &bo_va->invalids, list)
>> -            trace_amdgpu_vm_bo_mapping(mapping);
>> +    if (vm->use_cpu_for_update) {
>> +        /* Flush HDP */
>> +        mb();
>> +        amdgpu_gart_flush_gpu_tlb(adev, 0);
>>       }
>>         spin_lock(&vm->status_lock);
>> -    list_splice_init(&bo_va->invalids, &bo_va->valids);
>>       list_del_init(&bo_va->base.vm_status);
>> -    if (clear)
>> -        list_add(&bo_va->base.vm_status, &vm->cleared);
>>       spin_unlock(&vm->status_lock);
>>   -    if (vm->use_cpu_for_update) {
>> -        /* Flush HDP */
>> -        mb();
>> -        amdgpu_gart_flush_gpu_tlb(adev, 0);
>> +    list_splice_init(&bo_va->invalids, &bo_va->valids);
>> +    bo_va->cleared = clear;
>> +
>> +    if (trace_amdgpu_vm_bo_mapping_enabled()) {
>> +        list_for_each_entry(mapping, &bo_va->valids, list)
>> +            trace_amdgpu_vm_bo_mapping(mapping);
>>       }
>>         return 0;
>> @@ -2419,9 +2419,7 @@ void amdgpu_vm_bo_invalidate(struct 
>> amdgpu_device *adev,
>>         list_for_each_entry(bo_base, &bo->va, bo_list) {
>>           spin_lock(&bo_base->vm->status_lock);
>> -        if (list_empty(&bo_base->vm_status))
>> -            list_add(&bo_base->vm_status,
>> -                 &bo_base->vm->moved);
>> +        list_move(&bo_base->vm_status, &bo_base->vm->moved);
>>           spin_unlock(&bo_base->vm->status_lock);
>>       }
>>   }
>> @@ -2508,7 +2506,6 @@ int amdgpu_vm_init(struct amdgpu_device *adev, 
>> struct amdgpu_vm *vm,
>>           vm->reserved_vmid[i] = NULL;
>>       spin_lock_init(&vm->status_lock);
>>       INIT_LIST_HEAD(&vm->moved);
>> -    INIT_LIST_HEAD(&vm->cleared);
>>       INIT_LIST_HEAD(&vm->freed);
>>         /* create scheduler entity for page table updates */
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
>> index 9347d28..e705f0f 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
>> @@ -126,9 +126,6 @@ struct amdgpu_vm {
>>       /* BOs moved, but not yet updated in the PT */
>>       struct list_head    moved;
>>   -    /* BOs cleared in the PT because of a move */
>> -    struct list_head    cleared;
>> -
>>       /* BO mappings freed, but not yet updated in the PT */
>>       struct list_head    freed;
>

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

  parent reply	other threads:[~2017-08-28 11:57 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-25  9:38 [PATCH 1/9] drm/amdgpu: fix amdgpu_vm_bo_map trace point Christian König
     [not found] ` <1503653899-1781-1-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-25  9:38   ` [PATCH 2/9] drm/amdgpu: fix and cleanup VM ready check Christian König
     [not found]     ` <1503653899-1781-2-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-28  4:09       ` zhoucm1
2017-08-25  9:38   ` [PATCH 3/9] drm/amdgpu: cleanup GWS, GDS and OA allocation Christian König
     [not found]     ` <1503653899-1781-3-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-28  4:10       ` zhoucm1
2017-08-25  9:38   ` [PATCH 4/9] drm/amdgpu: add bo_va cleared flag again Christian König
     [not found]     ` <1503653899-1781-4-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-28  4:12       ` zhoucm1
     [not found]         ` <d076aae6-5620-dd91-f504-982abb2292dd-5C7GfCeVMHo@public.gmane.org>
2017-08-28 11:57           ` Christian König [this message]
2017-08-25  9:38   ` [PATCH 5/9] drm/amdgpu: rework moved handling in the VM Christian König
     [not found]     ` <1503653899-1781-5-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-28  6:51       ` zhoucm1
2017-08-25  9:38   ` [PATCH 6/9] drm/amdgpu: track evicted page tables v2 Christian König
     [not found]     ` <1503653899-1781-6-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-28  6:58       ` zhoucm1
2017-08-25  9:38   ` [PATCH 7/9] drm/amdgpu: rework page directory filling v2 Christian König
     [not found]     ` <1503653899-1781-7-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-28  7:06       ` zhoucm1
2017-08-25  9:38   ` [PATCH 8/9] drm/amdgpu: add support for per VM BOs Christian König
2017-08-25  9:38   ` [PATCH 9/9] drm/amdgpu: WIP add IOCTL interface " Christian König
     [not found]     ` <1503653899-1781-9-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-25 10:32       ` zhoucm1
     [not found]         ` <19c04fac-1fdd-1436-e85c-95dd4ac02b1b-5C7GfCeVMHo@public.gmane.org>
2017-08-25 13:00           ` Christian König
     [not found]             ` <9304342a-def2-187e-4e9c-d872c58cdc17-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-25 16:22               ` Marek Olšák
     [not found]                 ` <CAAxE2A5dSR-PY+zZ3VeaT7iiCmj5jfty0hv7XZjz4HgOrApQHw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-08-25 19:19                   ` Christian König
     [not found]                     ` <e7d5f9d9-ed3e-2654-9acd-c7339976006f-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-27 10:03                       ` Christian König
     [not found]                         ` <fba30bfa-aa7c-d342-b4b6-85058f5db5bf-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-28  4:21                           ` zhoucm1
     [not found]                             ` <a897738d-ab23-8b43-9b9e-c64f7da5e065-5C7GfCeVMHo@public.gmane.org>
2017-08-28 11:55                               ` Christian König
     [not found]                                 ` <0006623b-f042-dda0-b6a2-425dc568ff03-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-28 12:59                                   ` Zhou, David(ChunMing)
     [not found]                                     ` <MWHPR1201MB0206D4E64E86D7AADA159A47B49E0-3iK1xFAIwjrUF/YbdlDdgWrFom/aUZj6nBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2017-08-29 13:59                                       ` Christian König
     [not found]                                         ` <8e7b93cf-033b-ac3a-4c81-446db00186f5-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-08-30  0:27                                           ` Marek Olšák
     [not found]                                             ` <CAAxE2A7bS9e34U-t==udoPMn-YYuP3auY4Ca+dpaboL+ob5J+g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-08-30 14:58                                               ` Christian König
2017-08-25 21:31       ` Felix Kuehling
     [not found]         ` <3039e134-7ee0-792a-b8ad-f01f86bc1164-5C7GfCeVMHo@public.gmane.org>
2017-08-26 13:20           ` Christian König
2017-08-28  4:08   ` [PATCH 1/9] drm/amdgpu: fix amdgpu_vm_bo_map trace point zhoucm1

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9fbf8354-1e2f-2705-b090-76f64968d286@vodafone.de \
    --to=deathsimple-antagkrnahcb1svskn2v4q@public.gmane.org \
    --cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=david1.zhou-5C7GfCeVMHo@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.