[PATCH] drm/amdgpu: Init data to avoid oops while reading pp_num_states.

Alex Deucher alexdeucher at gmail.com
Wed Apr 22 21:16:18 UTC 2020


On Wed, Apr 22, 2020 at 9:13 AM limingyu <limingyu at uniontech.com> wrote:
>
> For chip like CHIP_OLAND with si enabled(amdgpu.si_support=1),
> the amdgpu will expose pp_num_states to the /sys directory.
> In this moment, read the pp_num_states file will excute the
> amdgpu_get_pp_num_states func. In our case, the data hasn't
> been initialized, so the kernel will access some ilegal
> address, trigger the segmentfault and system will reboot soon:
>
>     uos at uos-PC:~$ cat /sys/devices/pci0000\:00/0000\:00\:00.0/0000\:01\:00
>     .0/pp_num_states
>
>     Message from syslogd at uos-PC at Apr 22 09:26:20 ...
>      kernel:[   82.154129] Internal error: Oops: 96000004 [#1] SMP
>
> This patch aims to fix this problem, avoid that reading file
> triggers the kernel sementfault.
>
> Signed-off-by: limingyu <limingyu at uniontech.com>
> Signed-off-by: zhoubinbin <zhoubinbin at uniontech.com>

Applied.  Thanks!

Alex

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
> index abe94a55ecad..17de9dc60ea1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
> @@ -444,8 +444,10 @@ static ssize_t amdgpu_get_pp_num_states(struct device *dev,
>                 ret = smu_get_power_num_states(&adev->smu, &data);
>                 if (ret)
>                         return ret;
> -       } else if (adev->powerplay.pp_funcs->get_pp_num_states)
> +       } else if (adev->powerplay.pp_funcs->get_pp_num_states) {
>                 amdgpu_dpm_get_pp_num_states(adev, &data);
> +       } else
> +               memset(&data, 0, sizeof(data));
>
>         pm_runtime_mark_last_busy(ddev->dev);
>         pm_runtime_put_autosuspend(ddev->dev);
> --
> 2.20.1
>
>
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list