[PATCH 2/2] drm/amdgpu: disable gfxoff when using register read interface

Alex Deucher alexdeucher at gmail.com
Fri Nov 15 16:14:46 UTC 2019


Ping?

On Thu, Nov 14, 2019 at 11:42 AM Alex Deucher <alexdeucher at gmail.com> wrote:
>
> When gfxoff is enabled, accessing gfx registers via MMIO
> can lead to a hang.
>
> Bug: https://bugzilla.kernel.org/show_bug.cgi?id=205497
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> index 6ddea7607ad0..5f3b3a705b29 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> @@ -659,15 +659,19 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
>                         return -ENOMEM;
>                 alloc_size = info->read_mmr_reg.count * sizeof(*regs);
>
> -               for (i = 0; i < info->read_mmr_reg.count; i++)
> +               amdgpu_gfx_off_ctrl(adev, false);
> +               for (i = 0; i < info->read_mmr_reg.count; i++) {
>                         if (amdgpu_asic_read_register(adev, se_num, sh_num,
>                                                       info->read_mmr_reg.dword_offset + i,
>                                                       &regs[i])) {
>                                 DRM_DEBUG_KMS("unallowed offset %#x\n",
>                                               info->read_mmr_reg.dword_offset + i);
>                                 kfree(regs);
> +                               amdgpu_gfx_off_ctrl(adev, true);
>                                 return -EFAULT;
>                         }
> +               }
> +               amdgpu_gfx_off_ctrl(adev, true);
>                 n = copy_to_user(out, regs, min(size, alloc_size));
>                 kfree(regs);
>                 return n ? -EFAULT : 0;
> --
> 2.23.0
>


More information about the amd-gfx mailing list