From: Takashi Iwai <tiwai@suse.de>
Subject: drm/i915: Disable tv output on i9x5gm
Patch-mainline: Never, tentative workaround for 4.12.x kernel
References: bsc#1086657, bsc#1133897
The TV output detection on i965GM chip is known to be badly broken,
causing the stall at vblank over intel_tv_dtect().
WARNING: CPU: 0 PID: 2007 at ../drivers/gpu/drm/drm_irq.c:1326 drm_wait_one_vblank+0x149/0x180 [drm]()
vblank wait timed out on crtc 0
Call Trace:
[<ffffffff81019f29>] dump_trace+0x59/0x320
[<ffffffff8101a2ea>] show_stack_log_lvl+0xfa/0x180
[<ffffffff8101b091>] show_stack+0x21/0x40
[<ffffffff81339397>] dump_stack+0x5c/0x85
[<ffffffff81080431>] warn_slowpath_common+0x81/0xb0
[<ffffffff810804ac>] warn_slowpath_fmt+0x4c/0x50
[<ffffffffa00984c9>] drm_wait_one_vblank+0x149/0x180 [drm]
[<ffffffffa02314ef>] i9xx_crtc_disable+0x2f/0x420 [i915]
[<ffffffffa0236b1a>] intel_atomic_commit+0xfa/0x6f0 [i915]
[<ffffffffa023c6d3>] intel_release_load_detect_pipe+0xe3/0x150 [i915]
[<ffffffffa0274313>] intel_tv_detect+0x383/0x580 [i915]
[<ffffffffa0129ba4>] drm_helper_probe_single_connector_modes_merge_bits+0x2d4/0x480 [drm_kms_helper]
[<ffffffffa00a3cd1>] drm_mode_getconnector+0x301/0x3a0 [drm]
[<ffffffffa0096833>] drm_ioctl+0x223/0x460 [drm]
[<ffffffff8122289c>] do_vfs_ioctl+0x30c/0x570
[<ffffffff81222b74>] SyS_ioctl+0x74/0x80
[<ffffffff8162cdf2>] entry_SYSCALL_64_fastpath+0x16/0x71
DWARF2 unwinder stuck at entry_SYSCALL_64_fastpath+0x16/0x71
There have been many similar bug reports in the upstream, but this has
been papered over, or appearing in a different form.
https://bugs.freedesktop.org/show_bug.cgi?id=93782
https://bugs.freedesktop.org/show_bug.cgi?id=96781
As an ad hoc workaround, simply disable the TV outputs on the
chipset. To be sure, we disable the TV output on other similar
chipsets, too.
This patch was originally taken from SLE12-SP2/SP3 wrt bsc#1039700
with a hope that the upstream will ever resolve this, but it still
remains as a dream, so far.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
drivers/gpu/drm/i915/i915_pci.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -129,7 +129,7 @@ static const struct intel_device_info in
.is_mobile = 1,
.cursor_needs_physical = 1,
.has_overlay = 1, .overlay_needs_physical = 1,
- .supports_tv = 1,
+ /* .supports_tv = 1, */ /* causes vblank mess (bsc#1086657) */
.has_fbc = 1,
.hws_needs_physical = 1,
.unfenced_needs_alignment = 1,
@@ -150,7 +150,7 @@ static const struct intel_device_info in
.is_mobile = 1,
.has_hotplug = 1, .cursor_needs_physical = 1,
.has_overlay = 1, .overlay_needs_physical = 1,
- .supports_tv = 1,
+ /* .supports_tv = 1, */ /* causes vblank mess (bsc#1086657) */
.has_fbc = 1,
.hws_needs_physical = 1,
.unfenced_needs_alignment = 1,
@@ -195,7 +195,7 @@ static const struct intel_device_info in
PLATFORM(INTEL_I965GM),
.is_mobile = 1, .has_fbc = 1,
.has_overlay = 1,
- .supports_tv = 1,
+ /* .supports_tv = 1, */ /* causes vblank mess (bsc#1086657) */
.hws_needs_physical = 1,
.has_snoop = false,
};
@@ -210,7 +210,7 @@ static const struct intel_device_info in
GEN4_FEATURES,
PLATFORM(INTEL_GM45),
.is_mobile = 1, .has_fbc = 1,
- .supports_tv = 1,
+ /* .supports_tv = 1, */ /* causes vblank mess (bsc#1086657) */
.ring_mask = RENDER_RING | BSD_RING,
};