drm/radeon: fix const IB handling v2
Const IBs are executed on the CE not the CP, so we can't fence them in the normal way. So submit them directly before the IB instead, just as the documentation says. v2: keep the extra documentation Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -354,7 +354,7 @@ static int radeon_cs_ib_chunk(struct radeon_device *rdev,
|
||||
}
|
||||
radeon_cs_sync_rings(parser);
|
||||
parser->ib.vm_id = 0;
|
||||
r = radeon_ib_schedule(rdev, &parser->ib);
|
||||
r = radeon_ib_schedule(rdev, &parser->ib, NULL);
|
||||
if (r) {
|
||||
DRM_ERROR("Failed to schedule IB !\n");
|
||||
}
|
||||
@@ -452,25 +452,24 @@ static int radeon_cs_ib_vm_chunk(struct radeon_device *rdev,
|
||||
}
|
||||
radeon_cs_sync_rings(parser);
|
||||
|
||||
parser->ib.vm_id = vm->id;
|
||||
/* ib pool is bind at 0 in virtual address space,
|
||||
* so gpu_addr is the offset inside the pool bo
|
||||
*/
|
||||
parser->ib.gpu_addr = parser->ib.sa_bo->soffset;
|
||||
|
||||
if ((rdev->family >= CHIP_TAHITI) &&
|
||||
(parser->chunk_const_ib_idx != -1)) {
|
||||
parser->const_ib.vm_id = vm->id;
|
||||
/* ib pool is bind at 0 in virtual address space to gpu_addr is the
|
||||
* offset inside the pool bo
|
||||
/* ib pool is bind at 0 in virtual address space,
|
||||
* so gpu_addr is the offset inside the pool bo
|
||||
*/
|
||||
parser->const_ib.gpu_addr = parser->const_ib.sa_bo->soffset;
|
||||
r = radeon_ib_schedule(rdev, &parser->const_ib);
|
||||
if (r)
|
||||
goto out;
|
||||
r = radeon_ib_schedule(rdev, &parser->ib, &parser->const_ib);
|
||||
} else {
|
||||
r = radeon_ib_schedule(rdev, &parser->ib, NULL);
|
||||
}
|
||||
|
||||
parser->ib.vm_id = vm->id;
|
||||
/* ib pool is bind at 0 in virtual address space to gpu_addr is the
|
||||
* offset inside the pool bo
|
||||
*/
|
||||
parser->ib.gpu_addr = parser->ib.sa_bo->soffset;
|
||||
parser->ib.is_const_ib = false;
|
||||
r = radeon_ib_schedule(rdev, &parser->ib);
|
||||
out:
|
||||
if (!r) {
|
||||
if (vm->fence) {
|
||||
|
Reference in New Issue
Block a user