summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--0011-drm-915-Limit-audio-CDCLK-2BCLK-constraint-back-to-GLK-only.patch63
-rw-r--r--0011-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch130
-rw-r--r--PKGBUILD10
3 files changed, 68 insertions, 135 deletions
diff --git a/0011-drm-915-Limit-audio-CDCLK-2BCLK-constraint-back-to-GLK-only.patch b/0011-drm-915-Limit-audio-CDCLK-2BCLK-constraint-back-to-GLK-only.patch
new file mode 100644
index 0000000..5c8cbde
--- /dev/null
+++ b/0011-drm-915-Limit-audio-CDCLK-2BCLK-constraint-back-to-GLK-only.patch
@@ -0,0 +1,63 @@
+From 238026166679e618b3bad1c86b0e37a43303b6b0 Mon Sep 17 00:00:00 2001
+From: Kai Vehmanen <kai.vehmanen@linux.intel.com>
+Date: Tue, 31 Dec 2019 16:00:07 +0200
+Subject: drm/i915: Limit audio CDCLK>=2*BCLK constraint back to GLK only
+
+Revert changes done in commit f6ec9483091f ("drm/i915: extend audio
+CDCLK>=2*BCLK constraint to more platforms"). Audio drivers
+communicate with i915 over HDA bus multiple times during system
+boot-up and each of these transactions result in matching
+get_power/put_power calls to i915, and depending on the platform,
+a modeset change causing visible flicker.
+
+GLK is the only platform with minimum CDCLK significantly lower
+than BCLK, and thus for GLK setting a higher CDCLK is mandatory.
+
+For other platforms, minimum CDCLK is close but below 2*BCLK
+(e.g. on ICL, CDCLK=176.4kHz with BCLK=96kHz). Spec-wise the constraint
+should be set, but in practise no communication errors have been
+reported and the downside if set is the flicker observed at boot-time.
+
+Revert to old behaviour until better mechanism to manage
+probe-time clocks is available.
+
+The full CDCLK>=2*BCLK constraint is still enforced at pipe
+enable time in intel_crtc_compute_min_cdclk().
+
+Bugzilla: https://gitlab.freedesktop.org/drm/intel/issues/913
+Fixes: f6ec9483091f ("drm/i915: extend audio CDCLK>=2*BCLK constraint to more platforms")
+Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
+Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20191231140007.31728-1-kai.vehmanen@linux.intel.com
+(cherry picked from commit 1ee48a61aa57dbdbc3cd2808d8b28df40d938e44)
+Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
+---
+ drivers/gpu/drm/i915/display/intel_audio.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/display/intel_audio.c b/drivers/gpu/drm/i915/display/intel_audio.c
+index 05ef43b13d1c..0cf475f3063c 100644
+--- a/drivers/gpu/drm/i915/display/intel_audio.c
++++ b/drivers/gpu/drm/i915/display/intel_audio.c
+@@ -858,7 +858,7 @@ static unsigned long i915_audio_component_get_power(struct device *kdev)
+ }
+
+ /* Force CDCLK to 2*BCLK as long as we need audio powered. */
+- if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
++ if (IS_GEMINILAKE(dev_priv))
+ glk_force_audio_cdclk(dev_priv, true);
+
+ if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
+@@ -877,7 +877,7 @@ static void i915_audio_component_put_power(struct device *kdev,
+
+ /* Stop forcing CDCLK to 2*BCLK if no need for audio to be powered. */
+ if (--dev_priv->audio_power_refcount == 0)
+- if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
++ if (IS_GEMINILAKE(dev_priv))
+ glk_force_audio_cdclk(dev_priv, false);
+
+ intel_display_power_put(dev_priv, POWER_DOMAIN_AUDIO, cookie);
+--
+cgit v1.2.1-1-g437b
+
diff --git a/0011-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch b/0011-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch
deleted file mode 100644
index 5ee3f39..0000000
--- a/0011-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From 8c19c0f7eacb125b9a097d080a385d527f8ff836 Mon Sep 17 00:00:00 2001
-From: Chris Wilson <chris@chris-wilson.co.uk>
-Date: Mon, 30 Dec 2019 11:15:30 +0000
-Subject: drm/i915/gt: Detect if we miss WaIdleLiteRestore
-
-In order to avoid confusing the HW, we must never submit an empty ring
-during lite-restore, that is we should always advance the RING_TAIL
-before submitting to stay ahead of the RING_HEAD.
-
-Normally this is prevented by keeping a couple of spare NOPs in the
-request->wa_tail so that on resubmission we can advance the tail. This
-relies on the request only being resubmitted once, which is the normal
-condition as it is seen once for ELSP[1] and then later in ELSP[0]. On
-preemption, the requests are unwound and the tail reset back to the
-normal end point (as we know the request is incomplete and therefore its
-RING_HEAD is even earlier).
-
-However, if this w/a should fail we would try and resubmit the request
-with the RING_TAIL already set to the location of this request's wa_tail
-potentially causing a GPU hang. We can spot when we do try and
-incorrectly resubmit without advancing the RING_TAIL and spare any
-embarrassment by forcing the context restore.
-
-In the case of preempt-to-busy, we leave the requests running on the HW
-while we unwind. As the ring is still live, we cannot rewind our
-rq->tail without forcing a reload so leave it set to rq->wa_tail and
-only force a reload if we resubmit after a lite-restore. (Normally, the
-forced reload will be a part of the preemption event.)
-
-Fixes: 22b7a426bbe1 ("drm/i915/execlists: Preempt-to-busy")
-Closes: https://gitlab.freedesktop.org/drm/intel/issues/673
-Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
-Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
-Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
-Cc: stable@vger.kernel.org
-Link: https://patchwork.freedesktop.org/patch/msgid/20191209023215.3519970-1-chris@chris-wilson.co.uk
-(cherry picked from commit 82c69bf58650e644c61aa2bf5100b63a1070fd2f)
----
- drivers/gpu/drm/i915/gt/intel_lrc.c | 42 ++++++++++++++++++-------------------
- 1 file changed, 20 insertions(+), 22 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
-index 06a506c29463..6600b2e08fe3 100644
---- a/drivers/gpu/drm/i915/gt/intel_lrc.c
-+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
-@@ -471,12 +471,6 @@ lrc_descriptor(struct intel_context *ce, struct intel_engine_cs *engine)
- return desc;
- }
-
--static void unwind_wa_tail(struct i915_request *rq)
--{
-- rq->tail = intel_ring_wrap(rq->ring, rq->wa_tail - WA_TAIL_BYTES);
-- assert_ring_tail_valid(rq->ring, rq->tail);
--}
--
- static struct i915_request *
- __unwind_incomplete_requests(struct intel_engine_cs *engine)
- {
-@@ -495,7 +489,6 @@ __unwind_incomplete_requests(struct intel_engine_cs *engine)
- continue; /* XXX */
-
- __i915_request_unsubmit(rq);
-- unwind_wa_tail(rq);
-
- /*
- * Push the request back into the queue for later resubmission.
-@@ -649,13 +642,29 @@ execlists_schedule_out(struct i915_request *rq)
- i915_request_put(rq);
- }
-
--static u64 execlists_update_context(const struct i915_request *rq)
-+static u64 execlists_update_context(struct i915_request *rq)
- {
- struct intel_context *ce = rq->hw_context;
-- u64 desc;
-+ u64 desc = ce->lrc_desc;
-+ u32 tail;
-
-- ce->lrc_reg_state[CTX_RING_TAIL + 1] =
-- intel_ring_set_tail(rq->ring, rq->tail);
-+ /*
-+ * WaIdleLiteRestore:bdw,skl
-+ *
-+ * We should never submit the context with the same RING_TAIL twice
-+ * just in case we submit an empty ring, which confuses the HW.
-+ *
-+ * We append a couple of NOOPs (gen8_emit_wa_tail) after the end of
-+ * the normal request to be able to always advance the RING_TAIL on
-+ * subsequent resubmissions (for lite restore). Should that fail us,
-+ * and we try and submit the same tail again, force the context
-+ * reload.
-+ */
-+ tail = intel_ring_set_tail(rq->ring, rq->tail);
-+ if (unlikely(ce->lrc_reg_state[CTX_RING_TAIL + 1] == tail))
-+ desc |= CTX_DESC_FORCE_RESTORE;
-+ ce->lrc_reg_state[CTX_RING_TAIL + 1] = tail;
-+ rq->tail = rq->wa_tail;
-
- /*
- * Make sure the context image is complete before we submit it to HW.
-@@ -674,7 +683,6 @@ static u64 execlists_update_context(const struct i915_request *rq)
- */
- mb();
-
-- desc = ce->lrc_desc;
- ce->lrc_desc &= ~CTX_DESC_FORCE_RESTORE;
-
- return desc;
-@@ -1149,16 +1157,6 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
- if (!list_is_last(&last->sched.link,
- &engine->active.requests))
- return;
--
-- /*
-- * WaIdleLiteRestore:bdw,skl
-- * Apply the wa NOOPs to prevent
-- * ring:HEAD == rq:TAIL as we resubmit the
-- * request. See gen8_emit_fini_breadcrumb() for
-- * where we prepare the padding after the
-- * end of the request.
-- */
-- last->tail = last->wa_tail;
- }
- }
-
---
-cgit v1.2.1-1-g437b
-
-
diff --git a/PKGBUILD b/PKGBUILD
index 158680b..cb56821 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -17,7 +17,7 @@
pkgbase=linux-ck
_supver=5
_majver=4
-_minver=11
+_minver=12
_gccpatchver='20190822'
_ckpatchversion=ck1
if [ "$_minver" == "0" ]; then
@@ -49,7 +49,7 @@ source=(
0008-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-suspend.patch
0009-drm-i915-Fix-audio-power-up-sequence-for-gen10-display.patch
0010-drm-i915-extend-audio-CDCLK-2BCLK-constraint-to-more-platforms.patch
- 0011-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch
+ 0011-drm-915-Limit-audio-CDCLK-2BCLK-constraint-back-to-GLK-only.patch
0012-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-register-offset.patch
0013-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch
0014-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch
@@ -65,7 +65,7 @@ validpgpkeys=(
'647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
)
# https://www.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc
-b2sums=('38f2620f7773ddd1d26e0638f1e2200e5f37611dc1d606a4200e352a4593bd934f109ee936093194347a26f8797683bbed5e9b81fab353d23bbe1bf28fda2ddc'
+b2sums=('f08d30011b2021724a240f45a4d0a92ba01b97d0d2d33ce0d88aeb6dfb0a2e5a532fd55ad0a2ef0e3ec160cb23b351a09b494382e80b0db85bcfe7cfeaa554dd'
'SKIP'
'8e25246725016ac6a1452592b092616aacba744ee6d1f87355b141011e31d91b2faca01494930a8bb4b816f92f86929098cc60bf786bdc68513e7bc572b06226'
'0e4e01200c6250c6d251d2cb38889e9f488e07b1014ea8c8f81182457cf057ce444b14e21afc786671115ec0b100e3ce9b32a5785c2b0b07b11d956887f477d3'
@@ -77,7 +77,7 @@ b2sums=('38f2620f7773ddd1d26e0638f1e2200e5f37611dc1d606a4200e352a4593bd934f109ee
'f28183f6fd07ba0e6787e935d56dd683435e0bdd6e04cba717aa5b0da093d40a79a422f3398b813e41d70411cbd664045518050fd9b61a0350e75e36e747c345'
'7fc476dc0fef4d0a11c3f04c33a0350eae87115dcafcfb96a453112041ba88e1cf5a3535c95069568c849f04c356e2bde0686c8e5ba25be7a781b775f808a43c'
'9d1ad2023e9ffc92a4ccb6194a858267fbb6286c13784b8b8a2af3d5814abd0e4229409489f8a6bea5157193324dba58553ba03229169809bec73a8cc59c26ba'
- 'da61a317ad2994f3c0cfe320cfd2d731eaa2aafe0a0fb52d3118e50a2a4299842e94b478a49bfb629a82571f50bcb6c52174808311711e3d3ee05df205881ab2'
+ '7d6e7b7c2791971de427b346732c3fa345635db68c84c0b1ac736862fc62da61516975ccd78b28d3df50967d8ae1fe6b3251383733f797c19c1671b8b8a5aa42'
'782f41ae6352cfc1c47ed54eddcded54969c7d43a326dc2d6593b373b4dc4672bc82a6d938090635dc02ef3b3b74e133a2170c7f9c6fd614641c7cb3b013ff2e'
'ae21b49fe1c6fef81aa93282d0a242c196a0378256e890013a05d4e2f3b79ad92526bd1088ab6e44fba511abeabcb328ef58907ab03214d21d2fb88ea702f3e0'
'e1da80f3c9197e62223398b717e0c3ecfcdc7f33fa6477a9e8634ae806823c208bd5e05401a0b72a506d8e1df5a5cdf6624ff88926e7042156ee0fb6278e3ca3'
@@ -114,7 +114,7 @@ prepare() {
patch -p1 -i ../0008-drm-i915-save-AUD_FREQ_CNTRL-state-at-audio-domain-suspend.patch
patch -p1 -i ../0009-drm-i915-Fix-audio-power-up-sequence-for-gen10-display.patch
patch -p1 -i ../0010-drm-i915-extend-audio-CDCLK-2BCLK-constraint-to-more-platforms.patch
- patch -p1 -i ../0011-drm-i915-gt-Detect-if-we-miss-WaIdleLiteRestore.patch
+ patch -p1 -i ../0011-drm-915-Limit-audio-CDCLK-2BCLK-constraint-back-to-GLK-only.patch
patch -p1 -i ../0012-pinctrl-sunrisepoint-Add-missing-Interrupt-Status-register-offset.patch
patch -p1 -i ../0013-Revert-iwlwifi-mvm-fix-scan-config-command-size.patch
patch -p1 -i ../0014-e1000e-Revert-e1000e-Make-watchdog-use-delayed-work.patch