From: Greg Kroah-Hartman Date: Mon, 25 Jul 2016 20:32:41 +0000 (-0700) Subject: 4.6-stable patches X-Git-Tag: v4.6.5~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=be8096866147c1be3d88a2dd86a09481306e5cc2;p=thirdparty%2Fkernel%2Fstable-queue.git 4.6-stable patches 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 --- 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 index 00000000000..57fd8568c83 --- /dev/null +++ b/queue-4.6/drm-i915-revert-displayport-fast-link-training-feature.patch @@ -0,0 +1,121 @@ +From 34511dce4b35685d3988d5c8b100d11a068db5bd Mon Sep 17 00:00:00 2001 +From: Mika Kahola +Date: Mon, 20 Jun 2016 11:10:26 +0300 +Subject: drm/i915: Revert DisplayPort fast link training feature + +From: Mika Kahola + +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 +Signed-off-by: Mika Kahola +Signed-off-by: Jani Nikula +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..ea4d5be1b78 --- /dev/null +++ b/queue-4.6/ovl-do-d_type-check-only-if-work-dir-creation-was-successful.patch @@ -0,0 +1,54 @@ +From 21765194cecf2e4514ad75244df459f188140a0f Mon Sep 17 00:00:00 2001 +From: Vivek Goyal +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 + +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 +Signed-off-by: Miklos Szeredi +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..37f5c436769 --- /dev/null +++ b/queue-4.6/ovl-warn-instead-of-error-if-d_type-is-not-supported.patch @@ -0,0 +1,54 @@ +From e7c0b5991dd1be7b6f6dc2b54a15a0f47b64b007 Mon Sep 17 00:00:00 2001 +From: Vivek Goyal +Date: Fri, 1 Jul 2016 10:02:44 -0400 +Subject: ovl: warn instead of error if d_type is not supported + +From: Vivek Goyal + +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 +Signed-off-by: Miklos Szeredi +Fixes: 45aebeaf4f67 ("ovl: Ensure upper filesystem supports d_type") +Signed-off-by: Greg Kroah-Hartman + +--- + 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"); + } + } + diff --git a/queue-4.6/series b/queue-4.6/series index 2985d4890db..1d36152b01b 100644 --- a/queue-4.6/series +++ b/queue-4.6/series @@ -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