From: Greg Kroah-Hartman Date: Fri, 23 Oct 2015 16:34:18 +0000 (-0700) Subject: 3.14-stable patches X-Git-Tag: v3.14.56~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d1a939d78df71079b007c426cc060696356c66bd;p=thirdparty%2Fkernel%2Fstable-queue.git 3.14-stable patches added patches: dm-thin-fix-missing-pool-reference-count-decrement-in-pool_ctr-error-path.patch drm-radeon-add-pm-sysfs-files-late.patch --- diff --git a/queue-3.14/dm-thin-fix-missing-pool-reference-count-decrement-in-pool_ctr-error-path.patch b/queue-3.14/dm-thin-fix-missing-pool-reference-count-decrement-in-pool_ctr-error-path.patch new file mode 100644 index 00000000000..94df9c069d7 --- /dev/null +++ b/queue-3.14/dm-thin-fix-missing-pool-reference-count-decrement-in-pool_ctr-error-path.patch @@ -0,0 +1,28 @@ +From ba30670f4d5292c4e7f7980bbd5071f7c4794cdd Mon Sep 17 00:00:00 2001 +From: Mike Snitzer +Date: Tue, 13 Oct 2015 12:04:28 -0400 +Subject: dm thin: fix missing pool reference count decrement in pool_ctr error path + +From: Mike Snitzer + +commit ba30670f4d5292c4e7f7980bbd5071f7c4794cdd upstream. + +Fixes: ac8c3f3df ("dm thin: generate event when metadata threshold passed") +Signed-off-by: Mike Snitzer +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/dm-thin.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/md/dm-thin.c ++++ b/drivers/md/dm-thin.c +@@ -2373,7 +2373,7 @@ static int pool_ctr(struct dm_target *ti + metadata_low_callback, + pool); + if (r) +- goto out_free_pt; ++ goto out_flags_changed; + + pt->callbacks.congested_fn = pool_is_congested; + dm_table_add_target_callbacks(ti->table, &pt->callbacks); diff --git a/queue-3.14/drm-radeon-add-pm-sysfs-files-late.patch b/queue-3.14/drm-radeon-add-pm-sysfs-files-late.patch new file mode 100644 index 00000000000..ea55ffe83ae --- /dev/null +++ b/queue-3.14/drm-radeon-add-pm-sysfs-files-late.patch @@ -0,0 +1,131 @@ +From 51a4726b04e880fdd9b4e0e58b13f70b0a68a7f5 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Wed, 30 Sep 2015 16:45:52 -0400 +Subject: drm/radeon: add pm sysfs files late + +From: Alex Deucher + +commit 51a4726b04e880fdd9b4e0e58b13f70b0a68a7f5 upstream. + +They were added relatively early in the driver init process +which meant that in some cases the driver was not finished +initializing before external tools tried to use them which +could result in a crash depending on the timing. + +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/radeon_display.c | 14 +------ + drivers/gpu/drm/radeon/radeon_pm.c | 63 +++++++++++++++++++------------- + 2 files changed, 40 insertions(+), 37 deletions(-) + +--- a/drivers/gpu/drm/radeon/radeon_display.c ++++ b/drivers/gpu/drm/radeon/radeon_display.c +@@ -1479,18 +1479,8 @@ int radeon_modeset_init(struct radeon_de + radeon_fbdev_init(rdev); + drm_kms_helper_poll_init(rdev->ddev); + +- if (rdev->pm.dpm_enabled) { +- /* do dpm late init */ +- ret = radeon_pm_late_init(rdev); +- if (ret) { +- rdev->pm.dpm_enabled = false; +- DRM_ERROR("radeon_pm_late_init failed, disabling dpm\n"); +- } +- /* set the dpm state for PX since there won't be +- * a modeset to call this. +- */ +- radeon_pm_compute_clocks(rdev); +- } ++ /* do pm late init */ ++ ret = radeon_pm_late_init(rdev); + + return 0; + } +--- a/drivers/gpu/drm/radeon/radeon_pm.c ++++ b/drivers/gpu/drm/radeon/radeon_pm.c +@@ -1153,14 +1153,6 @@ static int radeon_pm_init_old(struct rad + INIT_DELAYED_WORK(&rdev->pm.dynpm_idle_work, radeon_dynpm_idle_work_handler); + + if (rdev->pm.num_power_states > 1) { +- /* where's the best place to put these? */ +- ret = device_create_file(rdev->dev, &dev_attr_power_profile); +- if (ret) +- DRM_ERROR("failed to create device file for power profile\n"); +- ret = device_create_file(rdev->dev, &dev_attr_power_method); +- if (ret) +- DRM_ERROR("failed to create device file for power method\n"); +- + if (radeon_debugfs_pm_init(rdev)) { + DRM_ERROR("Failed to register debugfs file for PM!\n"); + } +@@ -1218,20 +1210,6 @@ static int radeon_pm_init_dpm(struct rad + goto dpm_failed; + rdev->pm.dpm_enabled = true; + +- ret = device_create_file(rdev->dev, &dev_attr_power_dpm_state); +- if (ret) +- DRM_ERROR("failed to create device file for dpm state\n"); +- ret = device_create_file(rdev->dev, &dev_attr_power_dpm_force_performance_level); +- if (ret) +- DRM_ERROR("failed to create device file for dpm state\n"); +- /* XXX: these are noops for dpm but are here for backwards compat */ +- ret = device_create_file(rdev->dev, &dev_attr_power_profile); +- if (ret) +- DRM_ERROR("failed to create device file for power profile\n"); +- ret = device_create_file(rdev->dev, &dev_attr_power_method); +- if (ret) +- DRM_ERROR("failed to create device file for power method\n"); +- + if (radeon_debugfs_pm_init(rdev)) { + DRM_ERROR("Failed to register debugfs file for dpm!\n"); + } +@@ -1371,9 +1349,44 @@ int radeon_pm_late_init(struct radeon_de + int ret = 0; + + if (rdev->pm.pm_method == PM_METHOD_DPM) { +- mutex_lock(&rdev->pm.mutex); +- ret = radeon_dpm_late_enable(rdev); +- mutex_unlock(&rdev->pm.mutex); ++ if (rdev->pm.dpm_enabled) { ++ ret = device_create_file(rdev->dev, &dev_attr_power_dpm_state); ++ if (ret) ++ DRM_ERROR("failed to create device file for dpm state\n"); ++ ret = device_create_file(rdev->dev, &dev_attr_power_dpm_force_performance_level); ++ if (ret) ++ DRM_ERROR("failed to create device file for dpm state\n"); ++ /* XXX: these are noops for dpm but are here for backwards compat */ ++ ret = device_create_file(rdev->dev, &dev_attr_power_profile); ++ if (ret) ++ DRM_ERROR("failed to create device file for power profile\n"); ++ ret = device_create_file(rdev->dev, &dev_attr_power_method); ++ if (ret) ++ DRM_ERROR("failed to create device file for power method\n"); ++ ++ mutex_lock(&rdev->pm.mutex); ++ ret = radeon_dpm_late_enable(rdev); ++ mutex_unlock(&rdev->pm.mutex); ++ if (ret) { ++ rdev->pm.dpm_enabled = false; ++ DRM_ERROR("radeon_pm_late_init failed, disabling dpm\n"); ++ } else { ++ /* set the dpm state for PX since there won't be ++ * a modeset to call this. ++ */ ++ radeon_pm_compute_clocks(rdev); ++ } ++ } ++ } else { ++ if (rdev->pm.num_power_states > 1) { ++ /* where's the best place to put these? */ ++ ret = device_create_file(rdev->dev, &dev_attr_power_profile); ++ if (ret) ++ DRM_ERROR("failed to create device file for power profile\n"); ++ ret = device_create_file(rdev->dev, &dev_attr_power_method); ++ if (ret) ++ DRM_ERROR("failed to create device file for power method\n"); ++ } + } + return ret; + } diff --git a/queue-3.14/series b/queue-3.14/series index b12bbeff42c..1f61661d067 100644 --- a/queue-3.14/series +++ b/queue-3.14/series @@ -18,3 +18,5 @@ i2c-s3c2410-enable-runtimepm-before-registering-to-the-core.patch i2c-designware-do-not-use-parameters-from-acpi-on-dell-inspiron-7348.patch workqueue-make-sure-delayed-work-run-in-local-cpu.patch drm-nouveau-fbcon-take-runpm-reference-when-userspace-has-an-open-fd.patch +drm-radeon-add-pm-sysfs-files-late.patch +dm-thin-fix-missing-pool-reference-count-decrement-in-pool_ctr-error-path.patch