[PATCH] drm/amdgpu: Make amdgpu_bo_reserve use uninterruptible waits for cleanup

Xie, AlexBin AlexBin.Xie at amd.com
Fri Apr 28 14:12:52 UTC 2017


Am 28.04.2017 um 10:47 schrieb Michel Dänzer:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> Some of these paths probably cannot be interrupted by a signal anyway.
> Those that can would fail to clean up things if they actually got
> interrupted.
>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

Alex X: Just a reminder: amdgpu_unpin_work_func is called by work queue.
Signal is blocked already. un-interruptible waiting might slow thing down very slightly.

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_display.c |  2 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c      |  2 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c    |  2 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c     |  2 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c   |  2 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c      |  2 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c     |  2 +-
>   drivers/gpu/drm/amd/amdgpu/dce_v10_0.c      |  6 +++---
>   drivers/gpu/drm/amd/amdgpu/dce_v11_0.c      |  6 +++---
>   drivers/gpu/drm/amd/amdgpu/dce_v6_0.c       |  6 +++---
>   drivers/gpu/drm/amd/amdgpu/dce_v8_0.c       |  6 +++---
>   drivers/gpu/drm/amd/amdgpu/dce_virtual.c    |  2 +-
>   drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c       |  6 +++---
>   drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c       | 10 +++++-----
>   drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c       |  8 ++++----
>   drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c       |  8 ++++----
>   16 files changed, 36 insertions(+), 36 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> index 771a6aae58d6..af64448a565c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> @@ -123,7 +123,7 @@ static void amdgpu_unpin_work_func(struct work_struct *__work)
>        int r;
>
>        /* unpin of the old buffer */
> -     r = amdgpu_bo_reserve(work->old_abo, false);
> +     r = amdgpu_bo_reserve(work->old_abo, true);
>        if (likely(r == 0)) {
>                r = amdgpu_bo_unpin(work->old_abo);
>                if (unlikely(r != 0)) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> index 9dea2f661f1d..e869e60994ce 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> @@ -113,7 +113,7 @@ static void amdgpufb_destroy_pinned_object(struct drm_gem_object *gobj)
>        struct amdgpu_bo *abo = gem_to_amdgpu_bo(gobj);
>        int ret;
>
> -     ret = amdgpu_bo_reserve(abo, false);
> +     ret = amdgpu_bo_reserve(abo, true);
>        if (likely(ret == 0)) {
>                amdgpu_bo_kunmap(abo);
>                amdgpu_bo_unpin(abo);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
> index 6d691abe889c..e7406ce7093c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
> @@ -183,7 +183,7 @@ void amdgpu_gart_table_vram_unpin(struct amdgpu_device *adev)
>        if (adev->gart.robj == NULL) {
>                return;
>        }
> -     r = amdgpu_bo_reserve(adev->gart.robj, false);
> +     r = amdgpu_bo_reserve(adev->gart.robj, true);
>        if (likely(r == 0)) {
>                amdgpu_bo_kunmap(adev->gart.robj);
>                amdgpu_bo_unpin(adev->gart.robj);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> index ec5b1bc0e428..d40b8ac745cd 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> @@ -819,7 +819,7 @@ void amdgpu_driver_postclose_kms(struct drm_device *dev,
>
>        if (amdgpu_sriov_vf(adev)) {
>                /* TODO: how to handle reserve failure */
> -             BUG_ON(amdgpu_bo_reserve(adev->virt.csa_obj, false));
> +             BUG_ON(amdgpu_bo_reserve(adev->virt.csa_obj, true));
>                amdgpu_vm_bo_rmv(adev, fpriv->vm.csa_bo_va);
>                fpriv->vm.csa_bo_va = NULL;
>                amdgpu_bo_unreserve(adev->virt.csa_obj);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c
> index 3826d5aea0a6..6bdc866570ab 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c
> @@ -113,7 +113,7 @@ void amdgpu_gem_prime_unpin(struct drm_gem_object *obj)
>        struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj);
>        int ret = 0;
>
> -     ret = amdgpu_bo_reserve(bo, false);
> +     ret = amdgpu_bo_reserve(bo, true);
>        if (unlikely(ret != 0))
>                return;
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
> index 7b56d9988aba..de4ebcf4ac2c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
> @@ -130,7 +130,7 @@ int amdgpu_sa_bo_manager_suspend(struct amdgpu_device *adev,
>                return -EINVAL;
>        }
>
> -     r = amdgpu_bo_reserve(sa_manager->bo, false);
> +     r = amdgpu_bo_reserve(sa_manager->bo, true);
>        if (!r) {
>                amdgpu_bo_kunmap(sa_manager->bo);
>                amdgpu_bo_unpin(sa_manager->bo);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 58873cf027e8..11c6c4494e0a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1198,7 +1198,7 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
>                return;
>        amdgpu_ttm_debugfs_fini(adev);
>        if (adev->stollen_vga_memory) {
> -             r = amdgpu_bo_reserve(adev->stollen_vga_memory, false);
> +             r = amdgpu_bo_reserve(adev->stollen_vga_memory, true);
>                if (r == 0) {
>                        amdgpu_bo_unpin(adev->stollen_vga_memory);
>                        amdgpu_bo_unreserve(adev->stollen_vga_memory);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> index 7d86ba42efc9..d618f92ae46c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> @@ -2231,7 +2231,7 @@ static int dce_v10_0_crtc_do_set_base(struct drm_crtc *crtc,
>        if (!atomic && fb && fb != crtc->primary->fb) {
>                amdgpu_fb = to_amdgpu_framebuffer(fb);
>                abo = gem_to_amdgpu_bo(amdgpu_fb->obj);
> -             r = amdgpu_bo_reserve(abo, false);
> +             r = amdgpu_bo_reserve(abo, true);
>                if (unlikely(r != 0))
>                        return r;
>                amdgpu_bo_unpin(abo);
> @@ -2590,7 +2590,7 @@ static int dce_v10_0_crtc_cursor_set2(struct drm_crtc *crtc,
>   unpin:
>        if (amdgpu_crtc->cursor_bo) {
>                struct amdgpu_bo *aobj = gem_to_amdgpu_bo(amdgpu_crtc->cursor_bo);
> -             ret = amdgpu_bo_reserve(aobj, false);
> +             ret = amdgpu_bo_reserve(aobj, true);
>                if (likely(ret == 0)) {
>                        amdgpu_bo_unpin(aobj);
>                        amdgpu_bo_unreserve(aobj);
> @@ -2720,7 +2720,7 @@ static void dce_v10_0_crtc_disable(struct drm_crtc *crtc)
>
>                amdgpu_fb = to_amdgpu_framebuffer(crtc->primary->fb);
>                abo = gem_to_amdgpu_bo(amdgpu_fb->obj);
> -             r = amdgpu_bo_reserve(abo, false);
> +             r = amdgpu_bo_reserve(abo, true);
>                if (unlikely(r))
>                        DRM_ERROR("failed to reserve abo before unpin\n");
>                else {
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> index 3d82181baffe..ea634158ae7a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> @@ -2215,7 +2215,7 @@ static int dce_v11_0_crtc_do_set_base(struct drm_crtc *crtc,
>        if (!atomic && fb && fb != crtc->primary->fb) {
>                amdgpu_fb = to_amdgpu_framebuffer(fb);
>                abo = gem_to_amdgpu_bo(amdgpu_fb->obj);
> -             r = amdgpu_bo_reserve(abo, false);
> +             r = amdgpu_bo_reserve(abo, true);
>                if (unlikely(r != 0))
>                        return r;
>                amdgpu_bo_unpin(abo);
> @@ -2610,7 +2610,7 @@ static int dce_v11_0_crtc_cursor_set2(struct drm_crtc *crtc,
>   unpin:
>        if (amdgpu_crtc->cursor_bo) {
>                struct amdgpu_bo *aobj = gem_to_amdgpu_bo(amdgpu_crtc->cursor_bo);
> -             ret = amdgpu_bo_reserve(aobj, false);
> +             ret = amdgpu_bo_reserve(aobj, true);
>                if (likely(ret == 0)) {
>                        amdgpu_bo_unpin(aobj);
>                        amdgpu_bo_unreserve(aobj);
> @@ -2740,7 +2740,7 @@ static void dce_v11_0_crtc_disable(struct drm_crtc *crtc)
>
>                amdgpu_fb = to_amdgpu_framebuffer(crtc->primary->fb);
>                abo = gem_to_amdgpu_bo(amdgpu_fb->obj);
> -             r = amdgpu_bo_reserve(abo, false);
> +             r = amdgpu_bo_reserve(abo, true);
>                if (unlikely(r))
>                        DRM_ERROR("failed to reserve abo before unpin\n");
>                else {
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> index 59f6993af0b6..d68c1eabd0ce 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> @@ -2150,7 +2150,7 @@ static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc,
>        if (!atomic && fb && fb != crtc->primary->fb) {
>                amdgpu_fb = to_amdgpu_framebuffer(fb);
>                abo = gem_to_amdgpu_bo(amdgpu_fb->obj);
> -             r = amdgpu_bo_reserve(abo, false);
> +             r = amdgpu_bo_reserve(abo, true);
>                if (unlikely(r != 0))
>                        return r;
>                amdgpu_bo_unpin(abo);
> @@ -2467,7 +2467,7 @@ static int dce_v6_0_crtc_cursor_set2(struct drm_crtc *crtc,
>   unpin:
>        if (amdgpu_crtc->cursor_bo) {
>                struct amdgpu_bo *aobj = gem_to_amdgpu_bo(amdgpu_crtc->cursor_bo);
> -             ret = amdgpu_bo_reserve(aobj, false);
> +             ret = amdgpu_bo_reserve(aobj, true);
>                if (likely(ret == 0)) {
>                        amdgpu_bo_unpin(aobj);
>                        amdgpu_bo_unreserve(aobj);
> @@ -2592,7 +2592,7 @@ static void dce_v6_0_crtc_disable(struct drm_crtc *crtc)
>
>                amdgpu_fb = to_amdgpu_framebuffer(crtc->primary->fb);
>                abo = gem_to_amdgpu_bo(amdgpu_fb->obj);
> -             r = amdgpu_bo_reserve(abo, false);
> +             r = amdgpu_bo_reserve(abo, true);
>                if (unlikely(r))
>                        DRM_ERROR("failed to reserve abo before unpin\n");
>                else {
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> index 1629ff9c3949..1e6c40e32cfd 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> @@ -2090,7 +2090,7 @@ static int dce_v8_0_crtc_do_set_base(struct drm_crtc *crtc,
>        if (!atomic && fb && fb != crtc->primary->fb) {
>                amdgpu_fb = to_amdgpu_framebuffer(fb);
>                abo = gem_to_amdgpu_bo(amdgpu_fb->obj);
> -             r = amdgpu_bo_reserve(abo, false);
> +             r = amdgpu_bo_reserve(abo, true);
>                if (unlikely(r != 0))
>                        return r;
>                amdgpu_bo_unpin(abo);
> @@ -2441,7 +2441,7 @@ static int dce_v8_0_crtc_cursor_set2(struct drm_crtc *crtc,
>   unpin:
>        if (amdgpu_crtc->cursor_bo) {
>                struct amdgpu_bo *aobj = gem_to_amdgpu_bo(amdgpu_crtc->cursor_bo);
> -             ret = amdgpu_bo_reserve(aobj, false);
> +             ret = amdgpu_bo_reserve(aobj, true);
>                if (likely(ret == 0)) {
>                        amdgpu_bo_unpin(aobj);
>                        amdgpu_bo_unreserve(aobj);
> @@ -2571,7 +2571,7 @@ static void dce_v8_0_crtc_disable(struct drm_crtc *crtc)
>
>                amdgpu_fb = to_amdgpu_framebuffer(crtc->primary->fb);
>                abo = gem_to_amdgpu_bo(amdgpu_fb->obj);
> -             r = amdgpu_bo_reserve(abo, false);
> +             r = amdgpu_bo_reserve(abo, true);
>                if (unlikely(r))
>                        DRM_ERROR("failed to reserve abo before unpin\n");
>                else {
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> index 8bb9cfde508d..084518301f4b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
> @@ -247,7 +247,7 @@ static void dce_virtual_crtc_disable(struct drm_crtc *crtc)
>
>                amdgpu_fb = to_amdgpu_framebuffer(crtc->primary->fb);
>                abo = gem_to_amdgpu_bo(amdgpu_fb->obj);
> -             r = amdgpu_bo_reserve(abo, false);
> +             r = amdgpu_bo_reserve(abo, true);
>                if (unlikely(r))
>                        DRM_ERROR("failed to reserve abo before unpin\n");
>                else {
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
> index 25c3703f838b..03d2a0a2e523 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
> @@ -2437,7 +2437,7 @@ static void gfx_v6_0_rlc_fini(struct amdgpu_device *adev)
>        int r;
>
>        if (adev->gfx.rlc.save_restore_obj) {
> -             r = amdgpu_bo_reserve(adev->gfx.rlc.save_restore_obj, false);
> +             r = amdgpu_bo_reserve(adev->gfx.rlc.save_restore_obj, true);
>                if (unlikely(r != 0))
>                        dev_warn(adev->dev, "(%d) reserve RLC sr bo failed\n", r);
>                amdgpu_bo_unpin(adev->gfx.rlc.save_restore_obj);
> @@ -2448,7 +2448,7 @@ static void gfx_v6_0_rlc_fini(struct amdgpu_device *adev)
>        }
>
>        if (adev->gfx.rlc.clear_state_obj) {
> -             r = amdgpu_bo_reserve(adev->gfx.rlc.clear_state_obj, false);
> +             r = amdgpu_bo_reserve(adev->gfx.rlc.clear_state_obj, true);
>                if (unlikely(r != 0))
>                        dev_warn(adev->dev, "(%d) reserve RLC c bo failed\n", r);
>                amdgpu_bo_unpin(adev->gfx.rlc.clear_state_obj);
> @@ -2459,7 +2459,7 @@ static void gfx_v6_0_rlc_fini(struct amdgpu_device *adev)
>        }
>
>        if (adev->gfx.rlc.cp_table_obj) {
> -             r = amdgpu_bo_reserve(adev->gfx.rlc.cp_table_obj, false);
> +             r = amdgpu_bo_reserve(adev->gfx.rlc.cp_table_obj, true);
>                if (unlikely(r != 0))
>                        dev_warn(adev->dev, "(%d) reserve RLC cp table bo failed\n", r);
>                amdgpu_bo_unpin(adev->gfx.rlc.cp_table_obj);
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> index 75cca54fa216..b2df8e814abb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> @@ -2792,7 +2792,7 @@ static void gfx_v7_0_cp_compute_fini(struct amdgpu_device *adev)
>                struct amdgpu_ring *ring = &adev->gfx.compute_ring[i];
>
>                if (ring->mqd_obj) {
> -                     r = amdgpu_bo_reserve(ring->mqd_obj, false);
> +                     r = amdgpu_bo_reserve(ring->mqd_obj, true);
>                        if (unlikely(r != 0))
>                                dev_warn(adev->dev, "(%d) reserve MQD bo failed\n", r);
>
> @@ -2810,7 +2810,7 @@ static void gfx_v7_0_mec_fini(struct amdgpu_device *adev)
>        int r;
>
>        if (adev->gfx.mec.hpd_eop_obj) {
> -             r = amdgpu_bo_reserve(adev->gfx.mec.hpd_eop_obj, false);
> +             r = amdgpu_bo_reserve(adev->gfx.mec.hpd_eop_obj, true);
>                if (unlikely(r != 0))
>                        dev_warn(adev->dev, "(%d) reserve HPD EOP bo failed\n", r);
>                amdgpu_bo_unpin(adev->gfx.mec.hpd_eop_obj);
> @@ -3359,7 +3359,7 @@ static void gfx_v7_0_rlc_fini(struct amdgpu_device *adev)
>
>        /* save restore block */
>        if (adev->gfx.rlc.save_restore_obj) {
> -             r = amdgpu_bo_reserve(adev->gfx.rlc.save_restore_obj, false);
> +             r = amdgpu_bo_reserve(adev->gfx.rlc.save_restore_obj, true);
>                if (unlikely(r != 0))
>                        dev_warn(adev->dev, "(%d) reserve RLC sr bo failed\n", r);
>                amdgpu_bo_unpin(adev->gfx.rlc.save_restore_obj);
> @@ -3371,7 +3371,7 @@ static void gfx_v7_0_rlc_fini(struct amdgpu_device *adev)
>
>        /* clear state block */
>        if (adev->gfx.rlc.clear_state_obj) {
> -             r = amdgpu_bo_reserve(adev->gfx.rlc.clear_state_obj, false);
> +             r = amdgpu_bo_reserve(adev->gfx.rlc.clear_state_obj, true);
>                if (unlikely(r != 0))
>                        dev_warn(adev->dev, "(%d) reserve RLC c bo failed\n", r);
>                amdgpu_bo_unpin(adev->gfx.rlc.clear_state_obj);
> @@ -3383,7 +3383,7 @@ static void gfx_v7_0_rlc_fini(struct amdgpu_device *adev)
>
>        /* clear state block */
>        if (adev->gfx.rlc.cp_table_obj) {
> -             r = amdgpu_bo_reserve(adev->gfx.rlc.cp_table_obj, false);
> +             r = amdgpu_bo_reserve(adev->gfx.rlc.cp_table_obj, true);
>                if (unlikely(r != 0))
>                        dev_warn(adev->dev, "(%d) reserve RLC cp table bo failed\n", r);
>                amdgpu_bo_unpin(adev->gfx.rlc.cp_table_obj);
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> index 2a5b20920ea6..ac64e01c6938 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> @@ -1244,7 +1244,7 @@ static void gfx_v8_0_rlc_fini(struct amdgpu_device *adev)
>
>        /* clear state block */
>        if (adev->gfx.rlc.clear_state_obj) {
> -             r = amdgpu_bo_reserve(adev->gfx.rlc.clear_state_obj, false);
> +             r = amdgpu_bo_reserve(adev->gfx.rlc.clear_state_obj, true);
>                if (unlikely(r != 0))
>                        dev_warn(adev->dev, "(%d) reserve RLC cbs bo failed\n", r);
>                amdgpu_bo_unpin(adev->gfx.rlc.clear_state_obj);
> @@ -1255,7 +1255,7 @@ static void gfx_v8_0_rlc_fini(struct amdgpu_device *adev)
>
>        /* jump table block */
>        if (adev->gfx.rlc.cp_table_obj) {
> -             r = amdgpu_bo_reserve(adev->gfx.rlc.cp_table_obj, false);
> +             r = amdgpu_bo_reserve(adev->gfx.rlc.cp_table_obj, true);
>                if (unlikely(r != 0))
>                        dev_warn(adev->dev, "(%d) reserve RLC cp table bo failed\n", r);
>                amdgpu_bo_unpin(adev->gfx.rlc.cp_table_obj);
> @@ -1368,7 +1368,7 @@ static void gfx_v8_0_mec_fini(struct amdgpu_device *adev)
>        int r;
>
>        if (adev->gfx.mec.hpd_eop_obj) {
> -             r = amdgpu_bo_reserve(adev->gfx.mec.hpd_eop_obj, false);
> +             r = amdgpu_bo_reserve(adev->gfx.mec.hpd_eop_obj, true);
>                if (unlikely(r != 0))
>                        dev_warn(adev->dev, "(%d) reserve HPD EOP bo failed\n", r);
>                amdgpu_bo_unpin(adev->gfx.mec.hpd_eop_obj);
> @@ -1496,7 +1496,7 @@ static int gfx_v8_0_kiq_init(struct amdgpu_device *adev)
>
>        memset(hpd, 0, MEC_HPD_SIZE);
>
> -     r = amdgpu_bo_reserve(kiq->eop_obj, false);
> +     r = amdgpu_bo_reserve(kiq->eop_obj, true);
>        if (unlikely(r != 0))
>                dev_warn(adev->dev, "(%d) reserve kiq eop bo failed\n", r);
>        amdgpu_bo_kunmap(kiq->eop_obj);
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> index 5249bc7964fb..08daa3fd687b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> @@ -453,7 +453,7 @@ static void gfx_v9_0_mec_fini(struct amdgpu_device *adev)
>        int r;
>
>        if (adev->gfx.mec.hpd_eop_obj) {
> -             r = amdgpu_bo_reserve(adev->gfx.mec.hpd_eop_obj, false);
> +             r = amdgpu_bo_reserve(adev->gfx.mec.hpd_eop_obj, true);
>                if (unlikely(r != 0))
>                        dev_warn(adev->dev, "(%d) reserve HPD EOP bo failed\n", r);
>                amdgpu_bo_unpin(adev->gfx.mec.hpd_eop_obj);
> @@ -463,7 +463,7 @@ static void gfx_v9_0_mec_fini(struct amdgpu_device *adev)
>                adev->gfx.mec.hpd_eop_obj = NULL;
>        }
>        if (adev->gfx.mec.mec_fw_obj) {
> -             r = amdgpu_bo_reserve(adev->gfx.mec.mec_fw_obj, false);
> +             r = amdgpu_bo_reserve(adev->gfx.mec.mec_fw_obj, true);
>                if (unlikely(r != 0))
>                        dev_warn(adev->dev, "(%d) reserve mec firmware bo failed\n", r);
>                amdgpu_bo_unpin(adev->gfx.mec.mec_fw_obj);
> @@ -599,7 +599,7 @@ static int gfx_v9_0_kiq_init(struct amdgpu_device *adev)
>
>        memset(hpd, 0, MEC_HPD_SIZE);
>
> -     r = amdgpu_bo_reserve(kiq->eop_obj, false);
> +     r = amdgpu_bo_reserve(kiq->eop_obj, true);
>        if (unlikely(r != 0))
>                dev_warn(adev->dev, "(%d) reserve kiq eop bo failed\n", r);
>        amdgpu_bo_kunmap(kiq->eop_obj);
> @@ -1786,7 +1786,7 @@ static void gfx_v9_0_cp_compute_fini(struct amdgpu_device *adev)
>                struct amdgpu_ring *ring = &adev->gfx.compute_ring[i];
>
>                if (ring->mqd_obj) {
> -                     r = amdgpu_bo_reserve(ring->mqd_obj, false);
> +                     r = amdgpu_bo_reserve(ring->mqd_obj, true);
>                        if (unlikely(r != 0))
>                                dev_warn(adev->dev, "(%d) reserve MQD bo failed\n", r);
>




------------------------------

Subject: Digest Footer

_______________________________________________
amd-gfx mailing list
amd-gfx at lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
amd-gfx Info Page - freedesktop.org<https://lists.freedesktop.org/mailman/listinfo/amd-gfx>
lists.freedesktop.org
Subscribing to amd-gfx: Subscribe to amd-gfx by filling out the following form. Use of all freedesktop.org lists is subject to our Code of ...




------------------------------

End of amd-gfx Digest, Vol 11, Issue 407
****************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20170428/bd03e44e/attachment-0001.html>


More information about the amd-gfx mailing list