summaryrefslogtreecommitdiffstats
path: root/core/modules/kernel-vanilla
diff options
context:
space:
mode:
authorSimon Rettberg2018-10-25 13:25:36 +0200
committerYour Name2018-10-25 13:25:36 +0200
commit94cb0ef45b90e384ce10f638e10fbaf2ddaccc82 (patch)
treec51bfaf1f6b65206926b2774785cd23398c97d1d /core/modules/kernel-vanilla
parent[dnbd3] Bump version (diff)
downloadmltk-94cb0ef45b90e384ce10f638e10fbaf2ddaccc82.tar.gz
mltk-94cb0ef45b90e384ce10f638e10fbaf2ddaccc82.tar.xz
mltk-94cb0ef45b90e384ce10f638e10fbaf2ddaccc82.zip
[kernel-vanilla] Dirty hack to fix hangs on HP Compaq 8200
Just remove random calls that seem to make things hang on this particular machine. If people report crashes we might have to do some actual debugging. Low prio as this machine is relatively out and about to be phased out..
Diffstat (limited to 'core/modules/kernel-vanilla')
-rw-r--r--core/modules/kernel-vanilla/patches/dirty-hack-vblank-hang-i915.patch68
1 files changed, 68 insertions, 0 deletions
diff --git a/core/modules/kernel-vanilla/patches/dirty-hack-vblank-hang-i915.patch b/core/modules/kernel-vanilla/patches/dirty-hack-vblank-hang-i915.patch
new file mode 100644
index 00000000..f8179684
--- /dev/null
+++ b/core/modules/kernel-vanilla/patches/dirty-hack-vblank-hang-i915.patch
@@ -0,0 +1,68 @@
+diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
+index 7c22fac3..de70665f 100644
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -653,6 +653,7 @@ enum intel_sbi_destination {
+ #define QUIRK_PIN_SWIZZLED_PAGES (1<<5)
+ #define QUIRK_INCREASE_T12_DELAY (1<<6)
+ #define QUIRK_INCREASE_DDI_DISABLED_TIME (1<<7)
++#define QUIRK_SKIP_WAITS (1<<13)
+
+ struct intel_fbdev;
+ struct intel_fbc_work;
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index 00486c74..f72e8591 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -12466,7 +12466,8 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
+
+ intel_atomic_commit_fence_wait(intel_state);
+
+- drm_atomic_helper_wait_for_dependencies(state);
++ if (!(dev_priv->quirks & QUIRK_SKIP_WAITS))
++ drm_atomic_helper_wait_for_dependencies(state);
+
+ if (intel_state->modeset)
+ intel_display_power_get(dev_priv, POWER_DOMAIN_MODESET);
+@@ -12568,7 +12569,8 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
+ * - switch over to the vblank wait helper in the core after that since
+ * we don't need out special handling any more.
+ */
+- drm_atomic_helper_wait_for_flip_done(dev, state);
++ if (!(dev_priv->quirks & QUIRK_SKIP_WAITS))
++ drm_atomic_helper_wait_for_flip_done(dev, state);
+
+ /*
+ * Now that the vblank has passed, we can go ahead and program the
+@@ -14662,6 +14664,13 @@ static void quirk_increase_ddi_disabled_time(struct drm_device *dev)
+ DRM_INFO("Applying Increase DDI Disabled quirk\n");
+ }
+
++static void quirk_ignore_wait(struct drm_device *dev)
++{
++ struct drm_i915_private *dev_priv = to_i915(dev);
++ dev_priv->quirks |= QUIRK_SKIP_WAITS;
++ DRM_INFO("Skipping wait for vblank and dependencies\n");
++}
++
+ struct intel_quirk {
+ int device;
+ int subsystem_vendor;
+@@ -14704,6 +14713,9 @@ static struct intel_quirk intel_quirks[] = {
+ /* Sony Vaio Y cannot use SSC on LVDS */
+ { 0x0046, 0x104d, 0x9076, quirk_ssc_force_disable },
+
++ /* HP Compaq 8200 */
++ { 0x0102, 0x103c, 0x1494, quirk_ignore_wait },
++
+ /* Acer Aspire 5734Z must invert backlight brightness */
+ { 0x2a42, 0x1025, 0x0459, quirk_invert_brightness },
+
+@@ -14762,6 +14774,7 @@ static void intel_init_quirks(struct drm_device *dev)
+ struct pci_dev *d = dev->pdev;
+ int i;
+
++ DRM_INFO("iGPU: dev: %04x, subven: %04x, subdev: %04x\n", d->device, d->subsystem_vendor, d->subsystem_device);
+ for (i = 0; i < ARRAY_SIZE(intel_quirks); i++) {
+ struct intel_quirk *q = &intel_quirks[i];
+