答复: [PATCH] drm/amdgpu: replace BUG_ON() and BUG()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dave:


Thanks to your response.  if it uses WARN() or WARN_ON(). Does it also block the process with for() endless loop? I thinks it is essential. What do you think?


Thanks

JimQu

________________________________
å??件人: Dave Airlie <airlied at gmail.com>
å??é??æ?¶é?´: 2016å¹´7æ??12æ?¥ 11:35:19
�件人: Qu, Jim
æ??é??: amd-gfx mailing list
主�: Re: [PATCH] drm/amdgpu: replace BUG_ON() and BUG()

On 12 July 2016 at 10:16, jimqu <Jim.Qu at amd.com> wrote:
> Sometimes, it maybe a ring test failure during S3 resume. When that
> happens, it will be kernel panic in the fence interrupt and  will
> hangs up system. it is difficult to get any information from kernel
> for debug.

Please just use WARN or WARN_ON.

Dave.

>
> Change-Id: Iafa6c3793be151b8b85cf4299b929ba333b6174e
> Signed-off-by: JimQu <Jim.Qu at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h       | 15 +++++++++++++++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c |  4 ++--
>  2 files changed, 17 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index c3bf33f..15b6c5d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -2242,6 +2242,21 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring)
>  }
>
>  /*
> + * Debug helpers
> + */
> +#define AMDGPU_BUG() do { \
> +               printk(KERN_ERR "BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __FUNCTION__); \
> +               dump_stack(); \
> +               for (;;); \
> +       } while (0)
> +
> +#define AMDGPU_BUG_ON(condition) do { \
> +               if (unlikely((condition)!= 0)) { \
> +                       AMDGPU_BUG(); \
> +               } \
> +       } while (0)
> +
> +/*
>   * ASICs macro.
>   */
>  #define amdgpu_asic_set_vga_state(adev, state) (adev)->asic_funcs->set_vga_state((adev), (state))
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> index d155876..b8e5fa7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> @@ -213,13 +213,13 @@ void amdgpu_fence_process(struct amdgpu_ring *ring)
>                 fence = rcu_dereference_protected(*ptr, 1);
>                 RCU_INIT_POINTER(*ptr, NULL);
>
> -               BUG_ON(!fence);
> +               AMDGPU_BUG_ON(!fence);
>
>                 r = fence_signal(fence);
>                 if (!r)
>                         FENCE_TRACE(fence, "signaled from irq context\n");
>                 else
> -                       BUG();
> +                       AMDGPU_BUG();
>
>                 fence_put(fence);
>         }
> --
> 1.9.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20160712/80026480/attachment.html>


[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux