aboutsummarylogtreecommitdiffstats
path: root/i915-vga-arbiter.patch
diff options
context:
space:
mode:
Diffstat (limited to 'i915-vga-arbiter.patch')
-rw-r--r--i915-vga-arbiter.patch83
1 files changed, 39 insertions, 44 deletions
diff --git a/i915-vga-arbiter.patch b/i915-vga-arbiter.patch
index 9bc17d067997..0393762136f1 100644
--- a/i915-vga-arbiter.patch
+++ b/i915-vga-arbiter.patch
@@ -37,10 +37,38 @@ until after vgacon->fbcon handoff.
---
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
-index 26996e1839e2..2569e2a91e6b 100644
+index aabf09f89cad..528c6886a0b5 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
-@@ -18665,6 +18665,7 @@ static void intel_hpd_poll_fini(struct drm_i915_private *i915)
+@@ -17887,9 +17887,11 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915)
+
+ intel_bios_init(i915);
+
+- ret = intel_vga_register(i915);
+- if (ret)
+- goto cleanup_bios;
++ if (!i915_modparams.enable_hd_vgaarb || !HAS_PCH_SPLIT(i915)) {
++ ret = intel_vga_register(i915);
++ if (ret)
++ goto cleanup_bios;
++ }
+
+ /* FIXME: completely on the wrong abstraction layer */
+ intel_power_domains_init_hw(i915, false);
+@@ -18048,6 +18050,12 @@ int intel_modeset_init(struct drm_i915_private *i915)
+ if (ret)
+ return ret;
+
++ /*
++ * Must do this after fbcon init so that
++ * vgacon_save_screen() works during the handover.
++ */
++ intel_vga_disable_mem(i915);
++
+ /* Only enable hotplug handling once the fbdev is fully set up. */
+ intel_hpd_init(i915);
+
+@@ -18895,6 +18903,7 @@ static void intel_hpd_poll_fini(struct drm_i915_private *i915)
/* part #1: call before irq uninstall */
void intel_modeset_driver_remove(struct drm_i915_private *i915)
{
@@ -49,10 +77,10 @@ index 26996e1839e2..2569e2a91e6b 100644
flush_workqueue(i915->modeset_wq);
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
-index 3a06f72c9859..8c034bbf455a 100644
+index d10b7c8cde3f..3daaa0bd3b60 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
-@@ -507,6 +507,7 @@ int vlv_get_cck_clock_hpll(struct drm_i915_private *dev_priv,
+@@ -514,6 +514,7 @@ int vlv_get_cck_clock_hpll(struct drm_i915_private *dev_priv,
void lpt_pch_enable(const struct intel_crtc_state *crtc_state);
void lpt_disable_pch_transcoder(struct drm_i915_private *dev_priv);
void lpt_disable_iclkip(struct drm_i915_private *dev_priv);
@@ -123,58 +151,25 @@ index ba5b55b917f0..7e2af7924e99 100644
+void intel_vga_disable_mem(struct drm_i915_private *i915);
+
#endif /* __INTEL_VGA_H__ */
-diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
-index 34ee12f3f02d..a46477eb9e34 100644
---- a/drivers/gpu/drm/i915/i915_drv.c
-+++ b/drivers/gpu/drm/i915/i915_drv.c
-@@ -233,9 +233,11 @@ static int i915_driver_modeset_probe_noirq(struct drm_i915_private *i915)
-
- intel_bios_init(i915);
-
-- ret = intel_vga_register(i915);
-- if (ret)
-- goto cleanup_bios;
-+ if (!i915_modparams.enable_hd_vgaarb || !HAS_PCH_SPLIT(i915)) {
-+ ret = intel_vga_register(i915);
-+ if (ret)
-+ goto cleanup_bios;
-+ }
-
- intel_power_domains_init_hw(i915, false);
-
-@@ -280,6 +282,12 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915)
- if (ret)
- goto cleanup_gem;
-
-+ /*
-+ * Must do this after fbcon init so that
-+ * vgacon_save_screen() works during the handover.
-+ */
-+ intel_vga_disable_mem(i915);
-+
- /* Only enable hotplug handling once the fbdev is fully set up. */
- intel_hpd_init(i915);
-
diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
-index 8d8db9ff0a48..c187e96aa597 100644
+index 7f139ea4a90b..f23476551569 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
-@@ -135,6 +135,9 @@ i915_param_named_unsafe(invert_brightness, int, 0400,
+@@ -140,6 +140,9 @@ i915_param_named_unsafe(invert_brightness, int, 0400,
i915_param_named(disable_display, bool, 0400,
- "Disable display (default: false)");
+ "Disable display (default: false)");
+i915_param_named(enable_hd_vgaarb, bool, 0444,
+ "Enable support for VGA arbitration on Intel HD IGD. (default: false)");
+
i915_param_named(mmio_debug, int, 0400,
- "Enable the MMIO debug code for the first N failures (default: off). "
- "This may negatively affect performance.");
-
+ "Enable the MMIO debug code for the first N failures (default: off). "
+ "This may negatively affect performance.");
diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h
-index 4f21bfffbf0e..3f3bfb5eff5d 100644
+index 330c03e2b4f7..b44a4b7dba4d 100644
--- a/drivers/gpu/drm/i915/i915_params.h
+++ b/drivers/gpu/drm/i915/i915_params.h
-@@ -70,6 +70,7 @@ struct drm_printer;
+@@ -72,6 +72,7 @@ struct drm_printer;
param(char *, force_probe, CONFIG_DRM_I915_FORCE_PROBE, 0400) \
param(unsigned long, fake_lmem_start, 0, 0400) \
/* leave bools at the end to not create holes */ \