From: Sonika Jindal <sonika.jindal@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH 3/5] drm/i915: Read HDMI EDID only when required
Date: Thu, 9 Jul 2015 17:34:28 +0530 [thread overview]
Message-ID: <1436443470-28890-4-git-send-email-sonika.jindal@intel.com> (raw)
In-Reply-To: <1436443470-28890-1-git-send-email-sonika.jindal@intel.com>
From: Shashank Sharma <shashank.sharma@intel.com>
This patch makes sure that the HDMI detect function
reads EDID only when its forced to do it. All the other
times, it uses the connector->detect_edid which was cached
during hotplug handling in the hdmi_probe() function. As the
probe function gets called before detect in the interrupt handler
and handles the EDID cacheing part, its absolutely safe to assume
that presence of EDID reflects monitor connected and viceversa.
This will save us from many race conditions between hotplug/unplug
detect call handler threads and userspace calls for the same.
The previous patch in this patch series explains this in detail.
Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
---
drivers/gpu/drm/i915/intel_hdmi.c | 26 ++++++++++++++++++++------
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 064ddd8..1fb6919 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1362,19 +1362,33 @@ static enum drm_connector_status
intel_hdmi_detect(struct drm_connector *connector, bool force)
{
enum drm_connector_status status;
+ struct intel_connector *intel_connector =
+ to_intel_connector(connector);
DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
connector->base.id, connector->name);
+ /*
+ * There are many userspace calls which probe EDID from
+ * detect path. In case on multiple hotplug/unplug, these
+ * can cause race conditions while probing EDID. Also its
+ * waste of CPU cycles to read the EDID again and again
+ * unless there is a real hotplug.
+ * So until we are forced, check connector status
+ * based on availability of cached EDID. This will avoid many of
+ * these race conditions and timing problems.
+ */
+ if (force)
+ intel_hdmi_probe(intel_connector->encoder);
- intel_hdmi_unset_edid(connector);
-
- if (intel_hdmi_set_edid(connector)) {
+ if (intel_connector->detect_edid) {
struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector);
-
- hdmi_to_dig_port(intel_hdmi)->base.type = INTEL_OUTPUT_HDMI;
status = connector_status_connected;
- } else
+ hdmi_to_dig_port(intel_hdmi)->base.type = INTEL_OUTPUT_HDMI;
+ DRM_DEBUG_DRIVER("hdmi status = connected\n");
+ } else {
status = connector_status_disconnected;
+ DRM_DEBUG_DRIVER("hdmi status = disconnected\n");
+ }
return status;
}
--
1.7.10.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-07-09 12:15 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-09 12:04 [PATCH 0/5] HDMI optimization series Sonika Jindal
2015-07-09 12:04 ` [PATCH 1/5] drm/i915: add attached connector to hdmi container Sonika Jindal
2015-07-09 12:04 ` [PATCH 2/5] drm/i915: Add HDMI probe function Sonika Jindal
2015-07-09 12:04 ` Sonika Jindal [this message]
2015-07-09 12:04 ` [PATCH 4/5] drm/i915: Check live status before reading edid Sonika Jindal
2015-07-09 17:27 ` Daniel Vetter
2015-07-10 4:31 ` Jindal, Sonika
2015-07-13 11:05 ` [PATCH] " Sonika Jindal
2015-07-13 14:55 ` Daniel Vetter
2015-07-14 4:46 ` Jindal, Sonika
2015-07-14 7:55 ` Daniel Vetter
2016-07-12 11:39 ` [PATCH 4/5] " David Weinehall
2016-07-13 11:59 ` Daniel Vetter
2016-07-13 12:09 ` Chris Wilson
2016-07-13 12:17 ` Chris Wilson
2016-07-14 17:42 ` David Weinehall
2016-08-01 10:09 ` Chris Wilson
2016-08-02 14:32 ` Chris Wilson
2016-08-02 15:04 ` Jindal, Sonika
2015-07-09 12:04 ` [PATCH 5/5] drm/i915: Set edid from detect only if forced Sonika Jindal
2015-07-09 15:24 ` shuang.he
2015-07-13 10:49 ` [PATCH] drm/i915: Set edid from init and not from detect Sonika Jindal
2015-07-13 11:40 ` Chris Wilson
2015-07-13 11:59 ` Jindal, Sonika
2015-07-13 14:57 ` Daniel Vetter
2015-07-14 3:48 ` Sharma, Shashank
2015-07-14 7:59 ` Daniel Vetter
2015-07-14 8:09 ` Sharma, Shashank
2015-07-14 9:03 ` Daniel Vetter
2015-07-14 11:33 ` Sharma, Shashank
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1436443470-28890-4-git-send-email-sonika.jindal@intel.com \
--to=sonika.jindal@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox