diff options
Diffstat (limited to 'i915-vga-arbiter.patch')
-rw-r--r-- | i915-vga-arbiter.patch | 83 |
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 */ \ |