Hi Daniel,

On 04/06/2020 10:12, Daniel Vetter wrote:
[...]
> @@ -6910,7 +6910,11 @@ static void amdgpu_dm_commit_planes(struct 
> drm_atomic_state *state,
>                * explicitly on fences instead
>                * and in general should be called for
>                * blocking commit to as per framework helpers
> +              *
> +              * Yes, this deadlocks, since you're calling dma_resv_lock in a
> +              * path that leads to a dma_fence_signal(). Don't do that.
>                */
> +#if 0
>               r = amdgpu_bo_reserve(abo, true);
>               if (unlikely(r != 0))
>                       DRM_ERROR("failed to reserve buffer before flip\n");
> @@ -6920,6 +6924,12 @@ static void amdgpu_dm_commit_planes(struct 
> drm_atomic_state *state,
>               tmz_surface = amdgpu_bo_encrypted(abo);
>  
>               amdgpu_bo_unreserve(abo);
> +#endif
> +             /*
> +              * this races anyway, so READ_ONCE isn't any better or worse
> +              * than the stuff above. Except the stuff above can deadlock.
> +              */
> +             tiling_flags = READ_ONCE(abo->tiling_flags);

With this change "tmz_surface" won't be initialized properly.
Adding the following line should fix it:

  tmz_surface = READ_ONCE(abo->flags) & AMDGPU_GEM_CREATE_ENCRYPTED;


Pierre-Eric


>  
>               fill_dc_plane_info_and_addr(
>                       dm->adev, new_plane_state, tiling_flags,
> 
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to