All of lore.kernel.org
 help / color / mirror / Atom feed
From: ville.syrjala@linux.intel.com
To: dri-devel@lists.freedesktop.org
Cc: stable@vger.kernel.org, Adam Jackson <ajax@redhat.com>
Subject: [PATCH 1/7] drm: Don't overwrite UNVERFIED mode status to OK
Date: Thu,  3 Dec 2015 23:14:09 +0200	[thread overview]
Message-ID: <1449177255-9515-2-git-send-email-ville.syrjala@linux.intel.com> (raw)
In-Reply-To: <1449177255-9515-1-git-send-email-ville.syrjala@linux.intel.com>

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

The way the mode probing works is this:
1. All modes currently on the mode list are marked as UNVERIFIED
2. New modes are on the probed_modes list (they start with
   status OK)
3. Modes are moved from the probed_modes list to the actual
   mode list. If a mode already on the mode list is deemed
   to match one of the probed modes, the duplicate is dropped
   and the mode status updated to OK. After this the
   probed_modes list will be empty.
4. All modes on the mode list are verified to not violate any
   constraints. Any that do are marked as such.
5. Any mode left with a non-OK status is pruned from the list,
   with an appropriate debug message.

What all this means is that any mode on the original list that
didn't have a duplicate on the probed_modes list, should be left
with status UNVERFIED (or previously could have been left with
some other status, but never OK).

I broke that in
commit 05acaec334fc ("drm: Reorganize probed mode validation")
by always assigning something to the mode->status during the validation
step. So any mode from the old list that still passed the validation
would be left on the list with status OK in the end.

Fix this by not doing the basic mode validation unless the mode
already has status OK (meaning it came from the probed_modes list,
or at least a duplicate of it was on that list). This way we will
correctly prune away any mode from the old mode list that didn't
appear on the probed_modes list.

Cc: stable@vger.kernel.org
Cc: Adam Jackson <ajax@redhat.com>
Fixes: 05acaec334fc ("drm: Reorganize probed mode validation")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/drm_probe_helper.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
index 94ba39e34299..b9b3bd9349ff 100644
--- a/drivers/gpu/drm/drm_probe_helper.c
+++ b/drivers/gpu/drm/drm_probe_helper.c
@@ -229,7 +229,8 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect
 		mode_flags |= DRM_MODE_FLAG_3D_MASK;
 
 	list_for_each_entry(mode, &connector->modes, head) {
-		mode->status = drm_mode_validate_basic(mode);
+		if (mode->status == MODE_OK)
+			mode->status = drm_mode_validate_basic(mode);
 
 		if (mode->status == MODE_OK)
 			mode->status = drm_mode_validate_size(mode, maxX, maxY);
-- 
2.4.10


  reply	other threads:[~2015-12-03 21:14 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-03 21:14 [PATCH 0/7] drm: Fix mode pruning ville.syrjala
2015-12-03 21:14 ` ville.syrjala [this message]
2015-12-04  8:17   ` [PATCH 1/7] drm: Don't overwrite UNVERFIED mode status to OK Daniel Vetter
2015-12-04  8:17     ` Daniel Vetter
2015-12-04 12:23     ` Ville Syrjälä
2015-12-04 12:23       ` Ville Syrjälä
2015-12-10 21:07     ` Ville Syrjälä
2015-12-10 21:07       ` Ville Syrjälä
2015-12-03 21:14 ` [PATCH 2/7] drm: Rename MODE_UNVERIFIED to MODE_STALE ville.syrjala
2015-12-04  8:18   ` Daniel Vetter
2015-12-10 20:39   ` [PATCH v2 " ville.syrjala
2015-12-03 21:14 ` [PATCH 3/7] drm: Reindent enum drm_mode_status ville.syrjala
2015-12-04  8:18   ` Daniel Vetter
2015-12-04  9:15     ` Ville Syrjälä
2015-12-03 21:14 ` [PATCH 4/7] drm: Flatten drm_mode_connector_list_update() a bit ville.syrjala
2015-12-04  8:19   ` Daniel Vetter
2015-12-03 21:14 ` [PATCH 5/7] drm: Only merge mode type bits between new probed modes ville.syrjala
2015-12-04  8:29   ` Daniel Vetter
2015-12-04 13:13   ` [PATCH v2 " ville.syrjala
2015-12-03 21:14 ` [PATCH 6/7] drm: Drop drm_helper_probe_single_connector_modes_nomerge() ville.syrjala
2015-12-04  8:30   ` Daniel Vetter
2015-12-03 21:14 ` [PATCH 7/7] drm/sti: Drop bogus drm_mode_sort() call ville.syrjala
2015-12-04  8:31   ` Daniel Vetter
2015-12-11  8:34 ` [PATCH 0/7] drm: Fix mode pruning Daniel Vetter

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=1449177255-9515-2-git-send-email-ville.syrjala@linux.intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=ajax@redhat.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=stable@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.