diff options
author | Dave Airlie <airlied@redhat.com> | 2015-10-21 20:24:55 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2015-10-21 20:24:55 -0400 |
commit | c50f13f911b90a722308bffbf26187ff3890aa1e (patch) | |
tree | 0a0f6a316a123be939664c19985b07c14bc5885b /drivers | |
parent | c2a75586ff27ee7636bb2bf33ee66992a6603e49 (diff) | |
parent | 677c884ff6370add1360e2b9558285355ebe2b36 (diff) |
Merge branch 'drm-fixes-4.3' of git://people.freedesktop.org/~agd5f/linux into drm-fixes
Just a crash fix for radeon and amdgpu if the user has forcibly disabled
dpm and tries to access the pwm sysfs controls.
* 'drm-fixes-4.3' of git://people.freedesktop.org/~agd5f/linux:
drm/amdgpu: add missing dpm check for KV dpm late init
drm/amdgpu/dpm: don't add pwm attributes if DPM is disabled
drm/radeon/dpm: don't add pwm attributes if DPM is disabled
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/kv_dpm.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_pm.c | 8 |
3 files changed, 15 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c index efed11509f4a..ed2bbe5b10af 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | |||
@@ -294,10 +294,14 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj, | |||
294 | struct amdgpu_device *adev = dev_get_drvdata(dev); | 294 | struct amdgpu_device *adev = dev_get_drvdata(dev); |
295 | umode_t effective_mode = attr->mode; | 295 | umode_t effective_mode = attr->mode; |
296 | 296 | ||
297 | /* Skip limit attributes if DPM is not enabled */ | 297 | /* Skip attributes if DPM is not enabled */ |
298 | if (!adev->pm.dpm_enabled && | 298 | if (!adev->pm.dpm_enabled && |
299 | (attr == &sensor_dev_attr_temp1_crit.dev_attr.attr || | 299 | (attr == &sensor_dev_attr_temp1_crit.dev_attr.attr || |
300 | attr == &sensor_dev_attr_temp1_crit_hyst.dev_attr.attr)) | 300 | attr == &sensor_dev_attr_temp1_crit_hyst.dev_attr.attr || |
301 | attr == &sensor_dev_attr_pwm1.dev_attr.attr || | ||
302 | attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr || | ||
303 | attr == &sensor_dev_attr_pwm1_max.dev_attr.attr || | ||
304 | attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) | ||
301 | return 0; | 305 | return 0; |
302 | 306 | ||
303 | /* Skip fan attributes if fan is not present */ | 307 | /* Skip fan attributes if fan is not present */ |
diff --git a/drivers/gpu/drm/amd/amdgpu/kv_dpm.c b/drivers/gpu/drm/amd/amdgpu/kv_dpm.c index 9745ed3a9aef..7e9154c7f1db 100644 --- a/drivers/gpu/drm/amd/amdgpu/kv_dpm.c +++ b/drivers/gpu/drm/amd/amdgpu/kv_dpm.c | |||
@@ -2997,6 +2997,9 @@ static int kv_dpm_late_init(void *handle) | |||
2997 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 2997 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
2998 | int ret; | 2998 | int ret; |
2999 | 2999 | ||
3000 | if (!amdgpu_dpm) | ||
3001 | return 0; | ||
3002 | |||
3000 | /* init the sysfs and debugfs files late */ | 3003 | /* init the sysfs and debugfs files late */ |
3001 | ret = amdgpu_pm_sysfs_init(adev); | 3004 | ret = amdgpu_pm_sysfs_init(adev); |
3002 | if (ret) | 3005 | if (ret) |
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c index 44489cce7458..6a0a176e26ec 100644 --- a/drivers/gpu/drm/radeon/radeon_pm.c +++ b/drivers/gpu/drm/radeon/radeon_pm.c | |||
@@ -717,10 +717,14 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj, | |||
717 | struct radeon_device *rdev = dev_get_drvdata(dev); | 717 | struct radeon_device *rdev = dev_get_drvdata(dev); |
718 | umode_t effective_mode = attr->mode; | 718 | umode_t effective_mode = attr->mode; |
719 | 719 | ||
720 | /* Skip limit attributes if DPM is not enabled */ | 720 | /* Skip attributes if DPM is not enabled */ |
721 | if (rdev->pm.pm_method != PM_METHOD_DPM && | 721 | if (rdev->pm.pm_method != PM_METHOD_DPM && |
722 | (attr == &sensor_dev_attr_temp1_crit.dev_attr.attr || | 722 | (attr == &sensor_dev_attr_temp1_crit.dev_attr.attr || |
723 | attr == &sensor_dev_attr_temp1_crit_hyst.dev_attr.attr)) | 723 | attr == &sensor_dev_attr_temp1_crit_hyst.dev_attr.attr || |
724 | attr == &sensor_dev_attr_pwm1.dev_attr.attr || | ||
725 | attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr || | ||
726 | attr == &sensor_dev_attr_pwm1_max.dev_attr.attr || | ||
727 | attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) | ||
724 | return 0; | 728 | return 0; |
725 | 729 | ||
726 | /* Skip fan attributes if fan is not present */ | 730 | /* Skip fan attributes if fan is not present */ |