summaryrefslogtreecommitdiffstats
path: root/include/drm
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-06-06 00:17:25 +0200
committerDave Airlie <airlied@redhat.com>2013-06-27 20:34:16 +1000
commit160954b7bca43da7cd3cfbce310e6df919a8216e (patch)
treec10b295d21363961641e452a92bb8179e05106f0 /include/drm
parent2b54f78190a2683f48f1295a4c28e98df042546a (diff)
downloadtalos-obmc-linux-160954b7bca43da7cd3cfbce310e6df919a8216e.tar.gz
talos-obmc-linux-160954b7bca43da7cd3cfbce310e6df919a8216e.zip
drm: kms_helper: don't lose hotplug event
There's a race window (small for hpd, 10s large for polled outputs) where userspace could sneak in with an unrelated connnector probe ioctl call and eat the hotplug event (since neither the hpd nor the poll code see a state change). To avoid this, check whether the connector state changes in all other ->detect calls (in the current helper code that's only probe_single) and if that's the case, fire off a hotplug event. Note that we can't directly call the hotplug event handler, since that expects that no locks are held (due to reentrancy with the fb code to update the kms console). Also, this requires that drivers using the probe_single helper function set up the poll work. All current drivers do that already, and with the reworked hpd handling there'll be no downside to unconditionally setting up the poll work any more. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'include/drm')
-rw-r--r--include/drm/drm_crtc.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index b9ddd3d42acf..0fd007af8de9 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -808,6 +808,7 @@ struct drm_mode_config {
/* output poll support */
bool poll_enabled;
bool poll_running;
+ bool delayed_event;
struct delayed_work output_poll_work;
/* pointers to standard properties */
OpenPOWER on IntegriCloud