]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.6-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Jul 2016 20:32:41 +0000 (13:32 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Jul 2016 20:32:41 +0000 (13:32 -0700)
added patches:
drm-i915-revert-displayport-fast-link-training-feature.patch
ovl-do-d_type-check-only-if-work-dir-creation-was-successful.patch
ovl-warn-instead-of-error-if-d_type-is-not-supported.patch

queue-4.6/drm-i915-revert-displayport-fast-link-training-feature.patch [new file with mode: 0644]
queue-4.6/ovl-do-d_type-check-only-if-work-dir-creation-was-successful.patch [new file with mode: 0644]
queue-4.6/ovl-warn-instead-of-error-if-d_type-is-not-supported.patch [new file with mode: 0644]
queue-4.6/series

diff --git a/queue-4.6/drm-i915-revert-displayport-fast-link-training-feature.patch b/queue-4.6/drm-i915-revert-displayport-fast-link-training-feature.patch
new file mode 100644 (file)
index 0000000..57fd856
--- /dev/null
@@ -0,0 +1,121 @@
+From 34511dce4b35685d3988d5c8b100d11a068db5bd Mon Sep 17 00:00:00 2001
+From: Mika Kahola <mika.kahola@intel.com>
+Date: Mon, 20 Jun 2016 11:10:26 +0300
+Subject: drm/i915: Revert DisplayPort fast link training feature
+
+From: Mika Kahola <mika.kahola@intel.com>
+
+commit 34511dce4b35685d3988d5c8b100d11a068db5bd upstream.
+
+It has been found out that in some HW combination the DisplayPort
+fast link training feature caused screen flickering. Let's revert
+this feature for now until we can ensure that the feature works for
+all platforms.
+
+This is a manual revert of commits 5fa836a9d859 ("drm/i915: DP link
+training optimization") and 4e96c97742f4 ("drm/i915: eDP link training
+optimization").
+
+Fixes: 5fa836a9d859 ("drm/i915: DP link training optimization")
+Fixes: 4e96c97742f4 ("drm/i915: eDP link training optimization")
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91393
+Reviewed-by: Jani Nikula <jani.nikula@intel.com>
+Signed-off-by: Mika Kahola <mika.kahola@intel.com>
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1466410226-19543-1-git-send-email-mika.kahola@intel.com
+(cherry picked from commit 91df09d92ad82c8778ca218097bf827f154292ca)
+Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/intel_dp.c               |    3 ---
+ drivers/gpu/drm/i915/intel_dp_link_training.c |   25 ++-----------------------
+ drivers/gpu/drm/i915/intel_drv.h              |    2 --
+ 3 files changed, 2 insertions(+), 28 deletions(-)
+
+--- a/drivers/gpu/drm/i915/intel_dp.c
++++ b/drivers/gpu/drm/i915/intel_dp.c
+@@ -5022,9 +5022,6 @@ intel_dp_hpd_pulse(struct intel_digital_
+       intel_display_power_get(dev_priv, power_domain);
+       if (long_hpd) {
+-              /* indicate that we need to restart link training */
+-              intel_dp->train_set_valid = false;
+-
+               if (!intel_digital_port_connected(dev_priv, intel_dig_port))
+                       goto mst_fail;
+--- a/drivers/gpu/drm/i915/intel_dp_link_training.c
++++ b/drivers/gpu/drm/i915/intel_dp_link_training.c
+@@ -85,8 +85,7 @@ static bool
+ intel_dp_reset_link_train(struct intel_dp *intel_dp,
+                       uint8_t dp_train_pat)
+ {
+-      if (!intel_dp->train_set_valid)
+-              memset(intel_dp->train_set, 0, sizeof(intel_dp->train_set));
++      memset(intel_dp->train_set, 0, sizeof(intel_dp->train_set));
+       intel_dp_set_signal_levels(intel_dp);
+       return intel_dp_set_link_train(intel_dp, dp_train_pat);
+ }
+@@ -161,22 +160,6 @@ intel_dp_link_training_clock_recovery(st
+                       break;
+               }
+-              /*
+-               * if we used previously trained voltage and pre-emphasis values
+-               * and we don't get clock recovery, reset link training values
+-               */
+-              if (intel_dp->train_set_valid) {
+-                      DRM_DEBUG_KMS("clock recovery not ok, reset");
+-                      /* clear the flag as we are not reusing train set */
+-                      intel_dp->train_set_valid = false;
+-                      if (!intel_dp_reset_link_train(intel_dp,
+-                                                     DP_TRAINING_PATTERN_1 |
+-                                                     DP_LINK_SCRAMBLING_DISABLE)) {
+-                              DRM_ERROR("failed to enable link training\n");
+-                              return;
+-                      }
+-                      continue;
+-              }
+               /* Check to see if we've tried the max voltage */
+               for (i = 0; i < intel_dp->lane_count; i++)
+@@ -284,7 +267,6 @@ intel_dp_link_training_channel_equalizat
+               /* Make sure clock is still ok */
+               if (!drm_dp_clock_recovery_ok(link_status,
+                                             intel_dp->lane_count)) {
+-                      intel_dp->train_set_valid = false;
+                       intel_dp_link_training_clock_recovery(intel_dp);
+                       intel_dp_set_link_train(intel_dp,
+                                               training_pattern |
+@@ -301,7 +283,6 @@ intel_dp_link_training_channel_equalizat
+               /* Try 5 times, then try clock recovery if that fails */
+               if (tries > 5) {
+-                      intel_dp->train_set_valid = false;
+                       intel_dp_link_training_clock_recovery(intel_dp);
+                       intel_dp_set_link_train(intel_dp,
+                                               training_pattern |
+@@ -322,10 +303,8 @@ intel_dp_link_training_channel_equalizat
+       intel_dp_set_idle_link_train(intel_dp);
+-      if (channel_eq) {
+-              intel_dp->train_set_valid = true;
++      if (channel_eq)
+               DRM_DEBUG_KMS("Channel EQ done. DP Training successful\n");
+-      }
+ }
+ void intel_dp_stop_link_train(struct intel_dp *intel_dp)
+--- a/drivers/gpu/drm/i915/intel_drv.h
++++ b/drivers/gpu/drm/i915/intel_drv.h
+@@ -811,8 +811,6 @@ struct intel_dp {
+       /* This is called before a link training is starterd */
+       void (*prepare_link_retrain)(struct intel_dp *intel_dp);
+-      bool train_set_valid;
+-
+       /* Displayport compliance testing */
+       unsigned long compliance_test_type;
+       unsigned long compliance_test_data;
diff --git a/queue-4.6/ovl-do-d_type-check-only-if-work-dir-creation-was-successful.patch b/queue-4.6/ovl-do-d_type-check-only-if-work-dir-creation-was-successful.patch
new file mode 100644 (file)
index 0000000..ea4d5be
--- /dev/null
@@ -0,0 +1,54 @@
+From 21765194cecf2e4514ad75244df459f188140a0f Mon Sep 17 00:00:00 2001
+From: Vivek Goyal <vgoyal@redhat.com>
+Date: Fri, 20 May 2016 09:04:26 -0400
+Subject: ovl: Do d_type check only if work dir creation was successful
+
+From: Vivek Goyal <vgoyal@redhat.com>
+
+commit 21765194cecf2e4514ad75244df459f188140a0f upstream.
+
+d_type check requires successful creation of workdir as iterates
+through work dir and expects work dir to be present in it. If that's
+not the case, this check will always return d_type not supported even
+if underlying filesystem might be supporting it.
+
+So don't do this check if work dir creation failed in previous step.
+
+Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
+Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/overlayfs/super.c |   19 +++++++++++--------
+ 1 file changed, 11 insertions(+), 8 deletions(-)
+
+--- a/fs/overlayfs/super.c
++++ b/fs/overlayfs/super.c
+@@ -1064,16 +1064,19 @@ static int ovl_fill_super(struct super_b
+               /*
+                * Upper should support d_type, else whiteouts are visible.
+                * Given workdir and upper are on same fs, we can do
+-               * iterate_dir() on workdir.
++               * iterate_dir() on workdir. This check requires successful
++               * creation of workdir in previous step.
+                */
+-              err = ovl_check_d_type_supported(&workpath);
+-              if (err < 0)
+-                      goto out_put_workdir;
++              if (ufs->workdir) {
++                      err = ovl_check_d_type_supported(&workpath);
++                      if (err < 0)
++                              goto out_put_workdir;
+-              if (!err) {
+-                      pr_err("overlayfs: upper fs needs to support d_type.\n");
+-                      err = -EINVAL;
+-                      goto out_put_workdir;
++                      if (!err) {
++                              pr_err("overlayfs: upper fs needs to support d_type.\n");
++                              err = -EINVAL;
++                              goto out_put_workdir;
++                      }
+               }
+       }
diff --git a/queue-4.6/ovl-warn-instead-of-error-if-d_type-is-not-supported.patch b/queue-4.6/ovl-warn-instead-of-error-if-d_type-is-not-supported.patch
new file mode 100644 (file)
index 0000000..37f5c43
--- /dev/null
@@ -0,0 +1,54 @@
+From e7c0b5991dd1be7b6f6dc2b54a15a0f47b64b007 Mon Sep 17 00:00:00 2001
+From: Vivek Goyal <vgoyal@redhat.com>
+Date: Fri, 1 Jul 2016 10:02:44 -0400
+Subject: ovl: warn instead of error if d_type is not supported
+
+From: Vivek Goyal <vgoyal@redhat.com>
+
+commit e7c0b5991dd1be7b6f6dc2b54a15a0f47b64b007 upstream.
+
+overlay needs underlying fs to support d_type. Recently I put in a
+patch in to detect this condition and started failing mount if
+underlying fs did not support d_type.
+
+But this breaks existing configurations over kernel upgrade. Those who
+are running docker (partially broken configuration) with xfs not
+supporting d_type, are surprised that after kernel upgrade docker does
+not run anymore.
+
+https://github.com/docker/docker/issues/22937#issuecomment-229881315
+
+So instead of erroring out, detect broken configuration and warn
+about it. This should allow existing docker setups to continue
+working after kernel upgrade.
+
+Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
+Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
+Fixes: 45aebeaf4f67 ("ovl: Ensure upper filesystem supports d_type")
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/overlayfs/super.c |   12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+--- a/fs/overlayfs/super.c
++++ b/fs/overlayfs/super.c
+@@ -1072,11 +1072,13 @@ static int ovl_fill_super(struct super_b
+                       if (err < 0)
+                               goto out_put_workdir;
+-                      if (!err) {
+-                              pr_err("overlayfs: upper fs needs to support d_type.\n");
+-                              err = -EINVAL;
+-                              goto out_put_workdir;
+-                      }
++                      /*
++                       * We allowed this configuration and don't want to
++                       * break users over kernel upgrade. So warn instead
++                       * of erroring out.
++                       */
++                      if (!err)
++                              pr_warn("overlayfs: upper fs needs to support d_type.\n");
+               }
+       }
index 2985d4890dbe7dc0c536d5d7704f99f529cd3b46..1d36152b01bb19714c52adc024ac09644e645232 100644 (file)
@@ -198,3 +198,6 @@ tmpfs-don-t-undo-fallocate-past-its-last-page.patch
 tmpfs-fix-regression-hang-in-fallocate-undo.patch
 crypto-rsa-pkcs1pad-fix-rsa-pkcs1pad-request-struct.patch
 crypto-qat-make-qat_asym_algs.o-depend-on-asn1-headers.patch
+drm-i915-revert-displayport-fast-link-training-feature.patch
+ovl-do-d_type-check-only-if-work-dir-creation-was-successful.patch
+ovl-warn-instead-of-error-if-d_type-is-not-supported.patch