Am 13.10.2017 um 10:26 schrieb Pixel Ding:
From: pding <[email protected]>

The polling memory was standalone in VRAM before, so the HDP flush
introduced latency that hides a VM fault issue. Now polling memory
leverages the WB in system memory and HDP flush is not required, the
VM fault at same page happens.

Add delay back to workaround until the root cause is found.

Tests: VP1 or launch 40 instances of glxinfo at the same time.

Signed-off-by: pding <[email protected]>
---
  drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c 
b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
index b1de44f..5c4bbe1 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
@@ -381,6 +381,9 @@ static void sdma_v3_0_ring_set_wptr(struct amdgpu_ring 
*ring)
        if (ring->use_doorbell) {
                /* XXX check if swapping is necessary on BE */
                adev->wb.wb[ring->wptr_offs] = lower_32_bits(ring->wptr) << 2;
+               /* workaround: VM fault always happen at page 2046 */
+               if (amdgpu_sriov_vf(adev))
+                       udelay(500);

Have you tried using a memory barrier here?

That looks like it will have massive impact on performance.

Regards,
Christian.

                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr) << 
2);
        } else {
                int me = (ring == &ring->adev->sdma.instance[0].ring) ? 0 : 1;


_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to