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

drm/amdgpu: Disallow partition query during reset



Reject queries to get current partition modes during reset. Also, don't
accept sysfs interface requests to switch compute partition mode while
in reset.

Signed-off-by: default avatarLijo Lazar <lijo.lazar@amd.com>
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: default avatarAsad Kamal <asad.kamal@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent af081975
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1353,6 +1353,10 @@ static ssize_t amdgpu_gfx_get_current_compute_partition(struct device *dev,
	struct amdgpu_device *adev = drm_to_adev(ddev);
	int mode;

	/* Only minimal precaution taken to reject requests while in reset.*/
	if (amdgpu_in_reset(adev))
		return -EPERM;

	mode = amdgpu_xcp_query_partition_mode(adev->xcp_mgr,
					       AMDGPU_XCP_FL_NONE);

@@ -1396,8 +1400,14 @@ static ssize_t amdgpu_gfx_set_compute_partition(struct device *dev,
		return -EINVAL;
	}

	/* Don't allow a switch while under reset */
	if (!down_read_trylock(&adev->reset_domain->sem))
		return -EPERM;

	ret = amdgpu_xcp_switch_partition_mode(adev->xcp_mgr, mode);

	up_read(&adev->reset_domain->sem);

	if (ret)
		return ret;

+4 −0
Original line number Diff line number Diff line
@@ -1230,6 +1230,10 @@ static ssize_t current_memory_partition_show(
	struct amdgpu_device *adev = drm_to_adev(ddev);
	enum amdgpu_memory_partition mode;

	/* Only minimal precaution taken to reject requests while in reset */
	if (amdgpu_in_reset(adev))
		return -EPERM;

	mode = adev->gmc.gmc_funcs->query_mem_partition_mode(adev);
	if ((mode >= ARRAY_SIZE(nps_desc)) ||
	    (BIT(mode) & AMDGPU_ALL_NPS_MASK) != BIT(mode))