unsigned long flags;
uint32_t seq;
- if (adev->mes.ring[0].sched.ready) {
+ if (adev->mes.ring[MES_PIPE_INST(xcc_inst, 0)].sched.ready) {
amdgpu_mes_reg_write_reg_wait(adev, reg0, reg1,
ref, mask, xcc_inst);
return;
static void gmc_v12_1_flush_gpu_tlb(struct amdgpu_device *adev, uint32_t vmid,
uint32_t vmhub, uint32_t flush_type)
{
+ u32 inst;
+
+ if (vmhub >= AMDGPU_MMHUB0(0))
+ inst = 0;
+ else
+ inst = vmhub;
+
/* This is necessary for SRIOV as well as for GFXOFF to function
* properly under bare metal
*/
- if (((adev->gfx.kiq[0].ring.sched.ready || adev->mes.ring[0].sched.ready) &&
+ if (((adev->gfx.kiq[inst].ring.sched.ready ||
+ adev->mes.ring[MES_PIPE_INST(inst, 0)].sched.ready) &&
(amdgpu_sriov_runtime(adev) || !amdgpu_sriov_vf(adev)))) {
struct amdgpu_vmhub *hub = &adev->vmhub[vmhub];
const unsigned eng = 17;
u32 ack = hub->vm_inv_eng0_ack + hub->eng_distance * eng;
amdgpu_gmc_fw_reg_write_reg_wait(adev, req, ack, inv_req,
- 1 << vmid, 0);
+ 1 << vmid, inst);
return;
}