From: zhoucm1 <david1.zhou-5C7GfCeVMHo@public.gmane.org>
To: "Nicolai Hähnle"
<nhaehnle-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Cc: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
"Nicolai Hähnle" <nicolai.haehnle-5C7GfCeVMHo@public.gmane.org>
Subject: Re: [PATCH 4/5] drm/amd/amdgpu: add check that shadow page directory is GPU-accessible
Date: Fri, 16 Dec 2016 10:49:06 +0800 [thread overview]
Message-ID: <58535622.6070103@amd.com> (raw)
In-Reply-To: <1481821815-9971-5-git-send-email-nhaehnle-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
On 2016年12月16日 01:10, Nicolai Hähnle wrote:
> From: Nicolai Hähnle <nicolai.haehnle@amd.com>
>
> Skip amdgpu_gem_va_update_vm when shadow the page directory is swapped out.
> Clean up the check for non-shadow BOs as well using the new helper function.
>
> This fixes a crash with the stack trace:
>
> amdgpu_gem_va_update_vm
> -> amdgpu_vm_update_page_directory
> -> amdgpu_ttm_bind
> -> amdgpu_gtt_mgr_alloc
>
> Signed-off-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> index cd62f6f..4e1eb05 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> @@ -489,44 +489,49 @@ static int amdgpu_gem_va_check(void *param, struct amdgpu_bo *bo)
> * vital here, so they are not reported back to userspace.
> */
> static void amdgpu_gem_va_update_vm(struct amdgpu_device *adev,
> struct amdgpu_bo_va *bo_va,
> uint32_t operation)
> {
> struct ttm_validate_buffer tv, *entry;
> struct amdgpu_bo_list_entry vm_pd;
> struct ww_acquire_ctx ticket;
> struct list_head list, duplicates;
> - unsigned domain;
> int r;
>
> INIT_LIST_HEAD(&list);
> INIT_LIST_HEAD(&duplicates);
>
> tv.bo = &bo_va->bo->tbo;
> tv.shared = true;
> list_add(&tv.head, &list);
>
> amdgpu_vm_get_pd_bo(bo_va->vm, &list, &vm_pd);
>
> /* Provide duplicates to avoid -EALREADY */
> r = ttm_eu_reserve_buffers(&ticket, &list, true, &duplicates);
> if (r)
> goto error_print;
>
> list_for_each_entry(entry, &list, head) {
> - domain = amdgpu_mem_type_to_domain(entry->bo->mem.mem_type);
> + struct amdgpu_bo *bo =
> + container_of(entry->bo, struct amdgpu_bo, tbo);
> +
> /* if anything is swapped out don't swap it in here,
> just abort and wait for the next CS */
> - if (domain == AMDGPU_GEM_DOMAIN_CPU)
> + if (!amdgpu_bo_gpu_accessible(bo))
> + goto error_unreserve;
> +
> + if (bo->shadow && !amdgpu_bo_gpu_accessible(bo->shadow))
> goto error_unreserve;
> }
> +
> r = amdgpu_vm_validate_pt_bos(adev, bo_va->vm, amdgpu_gem_va_check,
> NULL);
> if (r)
> goto error_unreserve;
>
> r = amdgpu_vm_update_page_directory(adev, bo_va->vm);
> if (r)
> goto error_unreserve;
>
> r = amdgpu_vm_clear_freed(adev, bo_va->vm);
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
next prev parent reply other threads:[~2016-12-16 2:49 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-15 17:10 [PATCH 0/5] drm/ttm, amdgpu: fix crashes due to shadow page table evictions Nicolai Hähnle
[not found] ` <1481821815-9971-1-git-send-email-nhaehnle-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-12-15 17:10 ` [PATCH 1/5] drm/ttm: add evict parameter to ttm_bo_driver::move_notify Nicolai Hähnle
[not found] ` <1481821815-9971-2-git-send-email-nhaehnle-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-12-16 2:49 ` zhoucm1
[not found] ` <5853564E.5020005-5C7GfCeVMHo@public.gmane.org>
2016-12-21 15:12 ` Nicolai Hähnle
[not found] ` <8f68adf1-52bc-b2ef-2fa7-79a8f9695164-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-03 11:42 ` Christian König
2016-12-15 17:10 ` [PATCH 2/5] drm/amd/amdgpu: move eviction counting to amdgpu_bo_move_notify Nicolai Hähnle
[not found] ` <1481821815-9971-3-git-send-email-nhaehnle-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-12-16 2:50 ` zhoucm1
2016-12-15 17:10 ` [PATCH 3/5] drm/amd/amdgpu: add amdgpu_bo_gpu_accessible helper function Nicolai Hähnle
[not found] ` <1481821815-9971-4-git-send-email-nhaehnle-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-12-16 2:48 ` zhoucm1
2016-12-15 17:10 ` [PATCH 4/5] drm/amd/amdgpu: add check that shadow page directory is GPU-accessible Nicolai Hähnle
[not found] ` <1481821815-9971-5-git-send-email-nhaehnle-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-12-16 2:49 ` zhoucm1 [this message]
2016-12-15 17:10 ` [PATCH 5/5] drm/amd/amdgpu: add check that shadow page tables are GPU-accessible Nicolai Hähnle
[not found] ` <1481821815-9971-6-git-send-email-nhaehnle-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-12-15 17:59 ` [PATCH v2] " Nicolai Hähnle
[not found] ` <1481824743-11139-1-git-send-email-nhaehnle-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-12-16 2:48 ` zhoucm1
2016-12-16 2:07 ` [PATCH 5/5] " 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=58535622.6070103@amd.com \
--to=david1.zhou-5c7gfcevmho@public.gmane.org \
--cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=nhaehnle-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=nicolai.haehnle-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.