Skip to content

Commit 75f138d

Browse files
Lijo Lazaralexdeucher
authored andcommitted
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: Lijo Lazar <lijo.lazar@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Reviewed-by: Asad Kamal <asad.kamal@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent af08197 commit 75f138d

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1353,6 +1353,10 @@ static ssize_t amdgpu_gfx_get_current_compute_partition(struct device *dev,
13531353
struct amdgpu_device *adev = drm_to_adev(ddev);
13541354
int mode;
13551355

1356+
/* Only minimal precaution taken to reject requests while in reset.*/
1357+
if (amdgpu_in_reset(adev))
1358+
return -EPERM;
1359+
13561360
mode = amdgpu_xcp_query_partition_mode(adev->xcp_mgr,
13571361
AMDGPU_XCP_FL_NONE);
13581362

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

1403+
/* Don't allow a switch while under reset */
1404+
if (!down_read_trylock(&adev->reset_domain->sem))
1405+
return -EPERM;
1406+
13991407
ret = amdgpu_xcp_switch_partition_mode(adev->xcp_mgr, mode);
14001408

1409+
up_read(&adev->reset_domain->sem);
1410+
14011411
if (ret)
14021412
return ret;
14031413

drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1230,6 +1230,10 @@ static ssize_t current_memory_partition_show(
12301230
struct amdgpu_device *adev = drm_to_adev(ddev);
12311231
enum amdgpu_memory_partition mode;
12321232

1233+
/* Only minimal precaution taken to reject requests while in reset */
1234+
if (amdgpu_in_reset(adev))
1235+
return -EPERM;
1236+
12331237
mode = adev->gmc.gmc_funcs->query_mem_partition_mode(adev);
12341238
if ((mode >= ARRAY_SIZE(nps_desc)) ||
12351239
(BIT(mode) & AMDGPU_ALL_NPS_MASK) != BIT(mode))

0 commit comments

Comments
 (0)