Commit 057e335c authored by Yifan Zha's avatar Yifan Zha Committed by Alex Deucher
Browse files

drm/amdgpu: Init MMVM_CONTEXTS_DISABLE in gmc11 golden setting under SRIOV



[Why]
If disable the mmhub vm contexts(set MMVM_CONTEXTS_DISABLE to 0xffff),
driver loading failed on vf due to fence fallback timer expired on all rings.
FLR cannot reset MMVM_CONTEXTS_DISABLE.
So this vf can not be recovered anymore unless trigger a whole gpu reset.

[How]
Under SRIOV, init MMVM_CONTEXTS_DISABLE in gmc11 golden register setting.

Signed-off-by: default avatarYifan Zha <Yifan.Zha@amd.com>
Reviewed-by: default avatarHorace Chen <Horace.Chen@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 5f3401ee
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -104,6 +104,8 @@ struct amdgpu_vmhub {
	uint32_t	vm_cntx_cntl_vm_fault;
	uint32_t	vm_l2_bank_select_reserved_cid2;

	uint32_t	vm_contexts_disable;

	const struct amdgpu_vmhub_funcs *vmhub_funcs;
};

+6 −0
Original line number Diff line number Diff line
@@ -862,6 +862,12 @@ static int gmc_v11_0_sw_fini(void *handle)

static void gmc_v11_0_init_golden_registers(struct amdgpu_device *adev)
{
	if (amdgpu_sriov_vf(adev)) {
		struct amdgpu_vmhub *hub = &adev->vmhub[AMDGPU_MMHUB_0];

		WREG32(hub->vm_contexts_disable, 0);
		return;
	}
}

/**
+3 −0
Original line number Diff line number Diff line
@@ -517,6 +517,9 @@ static void mmhub_v3_0_init(struct amdgpu_device *adev)
	hub->vm_l2_bank_select_reserved_cid2 =
		SOC15_REG_OFFSET(MMHUB, 0, regMMVM_L2_BANK_SELECT_RESERVED_CID2);

	hub->vm_contexts_disable =
		SOC15_REG_OFFSET(MMHUB, 0, regMMVM_CONTEXTS_DISABLE);

	hub->vmhub_funcs = &mmhub_v3_0_vmhub_funcs;
}