mirror of https://gitee.com/openkylin/linux.git
drm/radeon: fix PFP sync in vm_flush
Otherwise the next IB might start reading commands with the page table still invalid. Signed-off-by: Christian König <deathsimple@vodafone.de> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
c71721324c
commit
58f8cf56f9
|
@ -1586,4 +1586,8 @@ void cayman_vm_flush(struct radeon_device *rdev, int ridx, struct radeon_vm *vm)
|
||||||
/* bits 0-7 are the VM contexts0-7 */
|
/* bits 0-7 are the VM contexts0-7 */
|
||||||
radeon_ring_write(ring, PACKET0(VM_INVALIDATE_REQUEST, 0));
|
radeon_ring_write(ring, PACKET0(VM_INVALIDATE_REQUEST, 0));
|
||||||
radeon_ring_write(ring, 1 << vm->id);
|
radeon_ring_write(ring, 1 << vm->id);
|
||||||
|
|
||||||
|
/* sync PFP to ME, otherwise we might get invalid PFP reads */
|
||||||
|
radeon_ring_write(ring, PACKET3(PACKET3_PFP_SYNC_ME, 0));
|
||||||
|
radeon_ring_write(ring, 0x0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -502,6 +502,7 @@
|
||||||
#define PACKET3_MPEG_INDEX 0x3A
|
#define PACKET3_MPEG_INDEX 0x3A
|
||||||
#define PACKET3_WAIT_REG_MEM 0x3C
|
#define PACKET3_WAIT_REG_MEM 0x3C
|
||||||
#define PACKET3_MEM_WRITE 0x3D
|
#define PACKET3_MEM_WRITE 0x3D
|
||||||
|
#define PACKET3_PFP_SYNC_ME 0x42
|
||||||
#define PACKET3_SURFACE_SYNC 0x43
|
#define PACKET3_SURFACE_SYNC 0x43
|
||||||
# define PACKET3_CB0_DEST_BASE_ENA (1 << 6)
|
# define PACKET3_CB0_DEST_BASE_ENA (1 << 6)
|
||||||
# define PACKET3_CB1_DEST_BASE_ENA (1 << 7)
|
# define PACKET3_CB1_DEST_BASE_ENA (1 << 7)
|
||||||
|
|
|
@ -2868,6 +2868,10 @@ void si_vm_flush(struct radeon_device *rdev, int ridx, struct radeon_vm *vm)
|
||||||
radeon_ring_write(ring, VM_INVALIDATE_REQUEST >> 2);
|
radeon_ring_write(ring, VM_INVALIDATE_REQUEST >> 2);
|
||||||
radeon_ring_write(ring, 0);
|
radeon_ring_write(ring, 0);
|
||||||
radeon_ring_write(ring, 1 << vm->id);
|
radeon_ring_write(ring, 1 << vm->id);
|
||||||
|
|
||||||
|
/* sync PFP to ME, otherwise we might get invalid PFP reads */
|
||||||
|
radeon_ring_write(ring, PACKET3(PACKET3_PFP_SYNC_ME, 0));
|
||||||
|
radeon_ring_write(ring, 0x0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue