]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Oct 2015 16:34:18 +0000 (09:34 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Oct 2015 16:34:18 +0000 (09:34 -0700)
added patches:
dm-thin-fix-missing-pool-reference-count-decrement-in-pool_ctr-error-path.patch
drm-radeon-add-pm-sysfs-files-late.patch

queue-3.14/dm-thin-fix-missing-pool-reference-count-decrement-in-pool_ctr-error-path.patch [new file with mode: 0644]
queue-3.14/drm-radeon-add-pm-sysfs-files-late.patch [new file with mode: 0644]
queue-3.14/series

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 (file)
index 0000000..94df9c0
--- /dev/null
@@ -0,0 +1,28 @@
+From ba30670f4d5292c4e7f7980bbd5071f7c4794cdd Mon Sep 17 00:00:00 2001
+From: Mike Snitzer <snitzer@redhat.com>
+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 <snitzer@redhat.com>
+
+commit ba30670f4d5292c4e7f7980bbd5071f7c4794cdd upstream.
+
+Fixes: ac8c3f3df ("dm thin: generate event when metadata threshold passed")
+Signed-off-by: Mike Snitzer <snitzer@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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 (file)
index 0000000..ea55ffe
--- /dev/null
@@ -0,0 +1,131 @@
+From 51a4726b04e880fdd9b4e0e58b13f70b0a68a7f5 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 30 Sep 2015 16:45:52 -0400
+Subject: drm/radeon: add pm sysfs files late
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+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 <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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;
+ }
index b12bbeff42ccf5ab4d78b47f95e035bf3b6f1f93..1f61661d0670cf0fe067869fffd1f8ad4005eb62 100644 (file)
@@ -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