Commit bb418f99 authored by Hawking Zhang's avatar Hawking Zhang Committed by Alex Deucher
Browse files

drm/amdgpu: Init compute partition mode for gfx v12_1



Init compute partition mode for gfx v12_1

Signed-off-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: default avatarLikun Gao <Likun.Gao@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent c58d8a66
Loading
Loading
Loading
Loading
+28 −6
Original line number Diff line number Diff line
@@ -2454,17 +2454,39 @@ static int gfx_v12_1_xcc_cp_resume(struct amdgpu_device *adev,

static int gfx_v12_1_cp_resume(struct amdgpu_device *adev)
{
	int i, r, num_xcc;
	int num_xcc, num_xcp, num_xcc_per_xcp;
	int r = 0;

	num_xcc = NUM_XCC(adev->gfx.xcc_mask);
	if (amdgpu_sriov_vf(adev)) {
		enum amdgpu_gfx_partition mode;

		mode = amdgpu_xcp_query_partition_mode(adev->xcp_mgr,
						       AMDGPU_XCP_FL_NONE);
		if (mode == AMDGPU_UNKNOWN_COMPUTE_PARTITION_MODE)
			return -EINVAL;
		if (adev->gfx.funcs &&
		    adev->gfx.funcs->get_xccs_per_xcp) {
			num_xcc_per_xcp = adev->gfx.funcs->get_xccs_per_xcp(adev);
			adev->gfx.num_xcc_per_xcp = num_xcc_per_xcp;
			num_xcp = num_xcc / num_xcc_per_xcp;
		} else {
			return -EINVAL;
		}
		r = amdgpu_xcp_init(adev->xcp_mgr, num_xcp, mode);

	} else {
		if (amdgpu_xcp_query_partition_mode(adev->xcp_mgr,
						    AMDGPU_XCP_FL_NONE) ==
		    AMDGPU_UNKNOWN_COMPUTE_PARTITION_MODE)
			r = amdgpu_xcp_switch_partition_mode(adev->xcp_mgr,
							     amdgpu_user_partt_mode);
	}

	for (i = 0; i < num_xcc; i++) {
		r = gfx_v12_1_xcc_cp_resume(adev, i);
	if (r)
		return r;
	}

	return 0;
	return gfx_v12_1_xcc_cp_resume(adev, adev->gfx.xcc_mask);
}

static int gfx_v12_1_gfxhub_enable(struct amdgpu_device *adev)