Commit f8588f05 authored by Lijo Lazar's avatar Lijo Lazar Committed by Alex Deucher
Browse files

drm/amdgpu: Show current compute partition on VF



Enable sysfs node for current compute partition mode on VFs also.

Signed-off-by: default avatarLijo Lazar <lijo.lazar@amd.com>
Reviewed-by: default avatarVignesh Chander <Vignesh.Chander@amd.com>
Tested-by: default avatarVignesh Chander <Vignesh.Chander@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent b3c68716
Loading
Loading
Loading
Loading
+27 −2
Original line number Diff line number Diff line
@@ -1604,21 +1604,46 @@ static DEVICE_ATTR(available_compute_partition, 0444,

int amdgpu_gfx_sysfs_init(struct amdgpu_device *adev)
{
	struct amdgpu_xcp_mgr *xcp_mgr = adev->xcp_mgr;
	bool xcp_switch_supported;
	int r;

	if (!xcp_mgr)
		return 0;

	xcp_switch_supported =
		(xcp_mgr->funcs && xcp_mgr->funcs->switch_partition_mode);

	if (!xcp_switch_supported)
		dev_attr_current_compute_partition.attr.mode &=
			~(S_IWUSR | S_IWGRP | S_IWOTH);

	r = device_create_file(adev->dev, &dev_attr_current_compute_partition);
	if (r)
		return r;

	r = device_create_file(adev->dev, &dev_attr_available_compute_partition);
	if (xcp_switch_supported)
		r = device_create_file(adev->dev,
				       &dev_attr_available_compute_partition);

	return r;
}

void amdgpu_gfx_sysfs_fini(struct amdgpu_device *adev)
{
	struct amdgpu_xcp_mgr *xcp_mgr = adev->xcp_mgr;
	bool xcp_switch_supported;

	if (!xcp_mgr)
		return;

	xcp_switch_supported =
		(xcp_mgr->funcs && xcp_mgr->funcs->switch_partition_mode);
	device_remove_file(adev->dev, &dev_attr_current_compute_partition);
	device_remove_file(adev->dev, &dev_attr_available_compute_partition);

	if (xcp_switch_supported)
		device_remove_file(adev->dev,
				   &dev_attr_available_compute_partition);
}

int amdgpu_gfx_sysfs_isolation_shader_init(struct amdgpu_device *adev)
+4 −8
Original line number Diff line number Diff line
@@ -1165,12 +1165,9 @@ static int gfx_v9_4_3_sw_init(struct amdgpu_ip_block *ip_block)
	if (r)
		return r;


	if (!amdgpu_sriov_vf(adev)) {
	r = amdgpu_gfx_sysfs_init(adev);
	if (r)
		return r;
	}

	gfx_v9_4_3_alloc_ip_dump(adev);

@@ -1201,7 +1198,6 @@ static int gfx_v9_4_3_sw_fini(struct amdgpu_ip_block *ip_block)
	gfx_v9_4_3_mec_fini(adev);
	amdgpu_bo_unref(&adev->gfx.rlc.clear_state_obj);
	gfx_v9_4_3_free_microcode(adev);
	if (!amdgpu_sriov_vf(adev))
	amdgpu_gfx_sysfs_fini(adev);
	amdgpu_gfx_sysfs_isolation_shader_fini(adev);