On 2018/9/15 17:23, Koenig, Christian
wrote:
No, the problem is the function pointer analysis.
In other words the KIQ ring is sometimes used in
atomic and even interrupt context.
But the UVD ring is never used in atomic
context.
But I don't see a way a static analysis could
ever figure that out.
Okay, thanks for your explanation :)
Besides, I find that amdgpu_virt_kiq_rreg() calls msleep(), so
mdelay() should be used instead.
Best wishes,
Jia-Ju Bai
Sorry, I am still not clear why the call chain I proposed is
incorrect...
I find a conditional in amdgpu_mm_wreg():
if (!(acc_flags & AMDGPU_REGS_NO_KIQ) &&
amdgpu_sriov_runtime(adev))
return amdgpu_virt_kiq_wreg(adev, reg, v);
Is amdgpu_virt_kiq_wreg() never called from WREG32() or
RREG32()?
Best wishes,
Jia-Ju Bai
On 2018/9/15 17:10, Koenig,
Christian wrote:
amdgpu_ring_alloc() does call amdgpu_uvd_begin_use(),
but never in the call chain you proposed.
Thinking about it I actually don't see a way
a statically analysis could ever figure that out.
Christian.
|
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel