* [PATCH] drm/i915/vlv: Enable polling when we shut off all power domains
@ 2016-04-21 15:44 Lyude
0 siblings, 0 replies; only message in thread
From: Lyude @ 2016-04-21 15:44 UTC (permalink / raw)
To: intel-gfx
Cc: Lyude, stable, Daniel Vetter, Jani Nikula, David Airlie,
open list:INTEL DRM DRIVERS (excluding Poulsbo, Moorestow...),
linux-kernel@vger.kernel.org (open list)
Unfortunately HPD isn't functional once we shut off all of the power
domains. Unfortunately we can end up shutting off all of the power
domains in any situation where we don't have any monitors connected,
essentially breaking hpd for the user unless they reboot with one of
their monitors connected.
In addition, enabling polling has to be done in it's own seperate
worker. The reason for this is that vlv_display_power_well_init/deinit()
will get called during the DRM polling process and try to grab the locks
required for turning on polling and cause a deadlock.
This breaks runtime PM due to the constant wakeups, so this is more of a
temporary workaround then a solution.
Signed-off-by: Lyude <cpaul@redhat.com>
Cc: stable@vger.kernel.org
---
drivers/gpu/drm/i915/intel_display.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 551541b303..f644814 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14531,7 +14531,22 @@ static void intel_setup_outputs(struct drm_device *dev)
intel_dp_is_edp(dev, PORT_C))
intel_dp_init(dev, VLV_DP_C, PORT_C);
- if (IS_CHERRYVIEW(dev)) {
+ if (IS_VALLEYVIEW(dev)) {
+ struct intel_connector *connector;
+
+ /*
+ * On vlv, turning off all of the power domains results
+ * in a loss of hpd, enable polling on all of the
+ * connectors so that drm polls them when this happens
+ */
+ drm_modeset_lock(&dev->mode_config.connection_mutex,
+ NULL);
+ for_each_intel_connector(dev, connector) {
+ connector->polled = DRM_CONNECTOR_POLL_CONNECT |
+ DRM_CONNECTOR_POLL_DISCONNECT;
+ }
+ drm_modeset_unlock(&dev->mode_config.connection_mutex);
+ } else if (IS_CHERRYVIEW(dev)) {
/* eDP not supported on port D, so don't check VBT */
if (I915_READ(CHV_HDMID) & SDVO_DETECTED)
intel_hdmi_init(dev, CHV_HDMID, PORT_D);
--
2.5.5
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2016-04-21 15:46 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-21 15:44 [PATCH] drm/i915/vlv: Enable polling when we shut off all power domains Lyude
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®