Skip to content

Commit 70f7eb6

Browse files
committed
drm/amdgpu: disable gfxoff when using register read interface
When gfxoff is enabled, accessing gfx registers via MMIO can lead to a hang. Bug: https://bugzilla.kernel.org/show_bug.cgi?id=205497 Acked-by: Xiaojie Yuan <[email protected]> Reviewed-by: Evan Quan <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent dda0f45 commit 70f7eb6

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,15 +655,19 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
655655
return -ENOMEM;
656656
alloc_size = info->read_mmr_reg.count * sizeof(*regs);
657657

658-
for (i = 0; i < info->read_mmr_reg.count; i++)
658+
amdgpu_gfx_off_ctrl(adev, false);
659+
for (i = 0; i < info->read_mmr_reg.count; i++) {
659660
if (amdgpu_asic_read_register(adev, se_num, sh_num,
660661
info->read_mmr_reg.dword_offset + i,
661662
&regs[i])) {
662663
DRM_DEBUG_KMS("unallowed offset %#x\n",
663664
info->read_mmr_reg.dword_offset + i);
664665
kfree(regs);
666+
amdgpu_gfx_off_ctrl(adev, true);
665667
return -EFAULT;
666668
}
669+
}
670+
amdgpu_gfx_off_ctrl(adev, true);
667671
n = copy_to_user(out, regs, min(size, alloc_size));
668672
kfree(regs);
669673
return n ? -EFAULT : 0;

0 commit comments

Comments
 (0)