nouveau.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime@cerno.tech>
To: Jernej Skrabec <jernej.skrabec@gmail.com>,
	Rodrigo Vivi <rodrigo.vivi@intel.com>,
	Ben Skeggs <bskeggs@redhat.com>,  David Airlie <airlied@linux.ie>,
	Maxime Ripard <mripard@kernel.org>,
	Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
	 Emma Anholt <emma@anholt.net>, Karol Herbst <kherbst@redhat.com>,
	Samuel Holland <samuel@sholland.org>,
	 Jani Nikula <jani.nikula@linux.intel.com>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	Daniel Vetter <daniel@ffwll.ch>,  Lyude Paul <lyude@redhat.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	 Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
	Chen-Yu Tsai <wens@csie.org>
Cc: Dom Cobley <dom@raspberrypi.com>,
	nouveau@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-sunxi@lists.linux.dev, Hans de Goede <hdegoede@redhat.com>,
	Noralf Trønnes <noralf@tronnes.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Maxime Ripard <maxime@cerno.tech>,
	Mateusz Kwiatkowski <kfyatek+publicgit@gmail.com>,
	Phil Elwell <phil@raspberrypi.com>,
	linux-arm-kernel@lists.infradead.org
Subject: [Nouveau] [PATCH v2 18/33] drm/modes: Bail out of named mode parsing early if it's a status
Date: Thu, 22 Sep 2022 16:25:35 +0200	[thread overview]
Message-ID: <20220728-rpi-analog-tv-properties-v2-18-f733a0ed9f90@cerno.tech> (raw)
In-Reply-To: <20220728-rpi-analog-tv-properties-v2-0-f733a0ed9f90@cerno.tech>

The name we are given is the first part of the command line, the part
before any option.

The most trivial case is thus that we're parsing a mode. However, the
connection status uses a single character to encode what status we want
to force on a connector.

It's thus fairly easy to confuse that character with a named mode, and
our current code works because the list of the named modes we consider
doesn't start with any of those characters.

However, it's not very obvious and quite fragile, so let's add an
explicit test for this, with some comment to explain what's going on.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>

diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
index dc5d5bdbea7a..9cee0ad806b8 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -2249,6 +2249,15 @@ static int drm_mode_parse_cmdline_named_mode(const char *name,
 	if (strnchr(name, name_end, '='))
 		return 0;
 
+#define STR_STRICT_EQ(str, len, cmp) \
+	(str_has_prefix(str, cmp) == len)
+
+	/* The connection status extras can be set without a mode. */
+	if (STR_STRICT_EQ(name, name_end, "d") ||
+	    STR_STRICT_EQ(name, name_end, "D") ||
+	    STR_STRICT_EQ(name, name_end, "e"))
+		return 0;
+
 	/*
 	 * We're sure we're a named mode at that point, iterate over the
 	 * list of modes we're aware of.

-- 
b4 0.10.0

  parent reply	other threads:[~2022-09-22 14:27 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-22 14:25 [Nouveau] [PATCH v2 00/33] drm: Analog TV Improvements Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 01/33] drm/tests: Order Kunit tests in Makefile Maxime Ripard
2022-09-23  8:06   ` Thomas Zimmermann
2022-09-24 17:33   ` Noralf Trønnes
2022-09-22 14:25 ` [Nouveau] [PATCH v2 02/33] drm/tests: Add Kunit Helpers Maxime Ripard
2022-09-24 17:56   ` Noralf Trønnes
2022-09-24 18:06     ` Noralf Trønnes
2022-09-26  9:36       ` Maxime Ripard
2022-09-26 12:15         ` Noralf Trønnes
2022-09-22 14:25 ` [Nouveau] [PATCH v2 03/33] drm/atomic-helper: Rename drm_atomic_helper_connector_tv_reset to avoid ambiguity Maxime Ripard
2022-09-23  8:09   ` Thomas Zimmermann
2022-09-22 14:25 ` [Nouveau] [PATCH v2 04/33] drm/connector: Rename subconnector state variable Maxime Ripard
2022-09-23  8:14   ` Thomas Zimmermann
2022-09-22 14:25 ` [Nouveau] [PATCH v2 05/33] drm/atomic: Add TV subconnector property to get/set_property Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 06/33] drm/connector: Rename legacy TV property Maxime Ripard
2022-09-22 20:44   ` Lyude Paul
2022-09-23  8:19   ` Thomas Zimmermann
2022-09-26  9:50     ` Maxime Ripard
2022-09-26 12:34       ` Thomas Zimmermann
2022-09-24 15:38   ` Noralf Trønnes
2022-09-22 14:25 ` [Nouveau] [PATCH v2 07/33] drm/connector: Only register TV mode property if present Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 08/33] drm/connector: Rename drm_mode_create_tv_properties Maxime Ripard
2022-09-22 20:45   ` Lyude Paul
2022-09-24 15:43   ` Noralf Trønnes
2022-09-22 14:25 ` [Nouveau] [PATCH v2 09/33] drm/connector: Add TV standard property Maxime Ripard
2022-09-24 15:52   ` Noralf Trønnes
2022-09-26 10:01     ` Maxime Ripard
2022-09-26 12:59       ` Noralf Trønnes
2022-09-22 14:25 ` [Nouveau] [PATCH v2 10/33] drm/modes: Add a function to generate analog display modes Maxime Ripard
2022-09-23  9:05   ` Thomas Zimmermann
2022-09-23  9:18     ` Jani Nikula
2022-09-23 10:16       ` Thomas Zimmermann
2022-09-26 10:18         ` Maxime Ripard
2022-09-26 10:55           ` Thomas Zimmermann
2022-09-26 10:17     ` Maxime Ripard
2022-09-26 10:34       ` Geert Uytterhoeven
2022-09-26 11:17         ` Thomas Zimmermann
2022-09-26 12:42           ` Maxime Ripard
2022-09-26 13:02             ` Thomas Zimmermann
2022-09-22 14:25 ` [Nouveau] [PATCH v2 11/33] drm/modes: Only consider bpp and refresh before options Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 12/33] drm/modes: parse_cmdline: Add support for named modes containing dashes Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 13/33] drm/client: Add some tests for drm_connector_pick_cmdline_mode() Maxime Ripard
2022-09-23  9:15   ` Thomas Zimmermann
2022-09-23  9:26     ` Javier Martinez Canillas
2022-09-23 10:30       ` Thomas Zimmermann
2022-09-23 11:01         ` Javier Martinez Canillas
2022-09-23 11:14         ` Maxime Ripard
2022-09-23 11:59   ` Jani Nikula
2022-09-22 14:25 ` [Nouveau] [PATCH v2 14/33] drm/modes: Move named modes parsing to a separate function Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 15/33] drm/modes: Bail out of named mode parsing if empty Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 16/33] drm/modes: Bail out of named mode parsing early if it's a number Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 17/33] drm/modes: Bail out of named mode parsing early if it's an option Maxime Ripard
2022-09-22 14:25 ` Maxime Ripard [this message]
2022-09-22 14:25 ` [Nouveau] [PATCH v2 19/33] drm/modes: Switch to named mode descriptors Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 20/33] drm/modes: Fill drm_cmdline mode from named modes Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 21/33] drm/connector: Add pixel clock to cmdline mode Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 22/33] drm/connector: Add a function to lookup a TV mode by its name Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 23/33] drm/modes: Introduce the tv_mode property as a command-line option Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 24/33] drm/modes: Properly generate a drm_display_mode from a named mode Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 25/33] drm/modes: Introduce more named modes Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 26/33] drm/atomic-helper: Add a TV properties reset helper Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 27/33] drm/atomic-helper: Add an analog TV atomic_check implementation Maxime Ripard
2022-09-24 15:58   ` Noralf Trønnes
2022-09-22 14:25 ` [Nouveau] [PATCH v2 28/33] drm/vc4: vec: Fix definition of PAL-M mode Maxime Ripard
2022-09-24 15:59   ` Noralf Trønnes
2022-09-22 14:25 ` [Nouveau] [PATCH v2 29/33] drm/vc4: vec: Use TV Reset implementation Maxime Ripard
2022-09-22 14:25 ` [Nouveau] [PATCH v2 30/33] drm/vc4: vec: Check for VEC output constraints Maxime Ripard
2022-09-24 16:00   ` Noralf Trønnes
2022-09-22 14:25 ` [Nouveau] [PATCH v2 31/33] drm/vc4: vec: Convert to the new TV mode property Maxime Ripard
2022-09-24 17:09   ` Noralf Trønnes
2022-09-22 14:25 ` [Nouveau] [PATCH v2 32/33] drm/vc4: vec: Add support for more analog TV standards Maxime Ripard
2022-09-24 17:12   ` Noralf Trønnes
2022-09-22 14:25 ` [Nouveau] [PATCH v2 33/33] drm/sun4i: tv: Convert to the new TV mode property Maxime Ripard
2022-09-22 14:31 ` [Nouveau] [PATCH v2 00/33] drm: Analog TV Improvements Maxime Ripard
2022-09-25 15:58 ` Noralf Trønnes

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=20220728-rpi-analog-tv-properties-v2-18-f733a0ed9f90@cerno.tech \
    --to=maxime@cerno.tech \
    --cc=airlied@linux.ie \
    --cc=bskeggs@redhat.com \
    --cc=daniel@ffwll.ch \
    --cc=dom@raspberrypi.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=emma@anholt.net \
    --cc=geert@linux-m68k.org \
    --cc=hdegoede@redhat.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@linux.intel.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=joonas.lahtinen@linux.intel.com \
    --cc=kfyatek+publicgit@gmail.com \
    --cc=kherbst@redhat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=lyude@redhat.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=noralf@tronnes.org \
    --cc=nouveau@lists.freedesktop.org \
    --cc=phil@raspberrypi.com \
    --cc=rodrigo.vivi@intel.com \
    --cc=samuel@sholland.org \
    --cc=tvrtko.ursulin@linux.intel.com \
    --cc=tzimmermann@suse.de \
    --cc=wens@csie.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;
as well as URLs for NNTP newsgroup(s).