On Wed, Apr 22, 2020 at 9:13 AM limingyu <limingyu@xxxxxxxxxxxxx> 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@uos-PC:~$ cat /sys/devices/pci0000\:00/0000\:00\:00.0/0000\:01\:00 > .0/pp_num_states > > Message from syslogd@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@xxxxxxxxxxxxx> > Signed-off-by: zhoubinbin <zhoubinbin@xxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx