From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from wnew4-smtp.messagingengine.com (wnew4-smtp.messagingengine.com [64.147.123.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A82103C26 for ; Thu, 22 Sep 2022 14:27:43 +0000 (UTC) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailnew.west.internal (Postfix) with ESMTP id E95022B05B2C; Thu, 22 Sep 2022 10:27:39 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Thu, 22 Sep 2022 10:27:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1663856859; x= 1663864059; bh=XzPimO3TGCZN1s10n/IWLqdGw90v+7NTrKZn456FDUw=; b=3 cDVSrU93OpIfH3kSzBnshRADcY253ne+mFqS5xlLS9Iln5kIr4Daeufz49Ee+Baf BDEUev0tMmCFqaxQBN8uG6rp/ifCMK266Yj82znPhgKnMgoaOWvyEf6CFGWsayfn wpemtKYY00Yn0oWlP7op2F8lM2RqX9Ck0X8RNQBlqPK8uDAczxC3+7qbw+UZwdM3 YfoENghlJ+NKrhRP3Pdo4TH68dYJicNcCLWp7VGYR9gI6FyQwbDETyr+eWZrZkKQ WWmXlHoEjN+vtlCa0QGdbnAajJiF+uSiplafJ54/bt2zCJb8GRRP7fID1r1+i6bm BbutW4VhRONAS8/Am8q1w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1663856859; x= 1663864059; bh=XzPimO3TGCZN1s10n/IWLqdGw90v+7NTrKZn456FDUw=; b=S 0E3nnYBHeJ7HHbhQHJFNN83I+j48ocCpiFyYTUCkY0xaYfu/JkJ1vUQeEmBH2Xzp BaDQyyck6bzsl+W8IXK2pp3sjiGoPJ0Zs64p4DfzsuXECyHWD8mCGTz7yFarvV/h 69M91NzDxx6AniRNdDz2tuJZjxXYXIsGOuWnH5XEigY8w8m//U8JCBgNkQQueL8d zKrd9/oQEM6DbOpBvlt9ghN+EPYylt+w8d5od6Yux56Aw99M6HyWvUKfXGYT6fE7 KTR/VwdiQun/C/yE1knz/O16Qy4lFBgHNCS0umBjAIx5KJLkC5iKDaHdjM5U70JC 62fXW14X/4GGSzTIILCig== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfeefgedgudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephfffufggtgfgkfhfjgfvvefosehtkeertdertdejnecuhfhrohhmpeforgig ihhmvgcutfhiphgrrhguuceomhgrgihimhgvsegtvghrnhhordhtvggthheqnecuggftrf grthhtvghrnhepudduudfhveejteefgedvffdvvedvjedugedukeejhedtlefhffevtefh jeeltdevnecuvehluhhsthgvrhfuihiivgepudenucfrrghrrghmpehmrghilhhfrhhomh epmhgrgihimhgvsegtvghrnhhordhtvggthh X-ME-Proxy: Feedback-ID: i8771445c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 22 Sep 2022 10:27:38 -0400 (EDT) From: Maxime Ripard Date: Thu, 22 Sep 2022 16:25:35 +0200 Subject: [PATCH v2 18/33] drm/modes: Bail out of named mode parsing early if it's a status Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Message-Id: <20220728-rpi-analog-tv-properties-v2-18-f733a0ed9f90@cerno.tech> References: <20220728-rpi-analog-tv-properties-v2-0-f733a0ed9f90@cerno.tech> In-Reply-To: <20220728-rpi-analog-tv-properties-v2-0-f733a0ed9f90@cerno.tech> To: Jernej Skrabec , Rodrigo Vivi , Ben Skeggs , David Airlie , Maxime Ripard , Joonas Lahtinen , Emma Anholt , Karol Herbst , Samuel Holland , Jani Nikula , Thomas Zimmermann , Daniel Vetter , Lyude Paul , Maarten Lankhorst , Tvrtko Ursulin , Chen-Yu Tsai Cc: Hans de Goede , nouveau@lists.freedesktop.org, Geert Uytterhoeven , Dave Stevenson , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Phil Elwell , intel-gfx@lists.freedesktop.org, Noralf Trønnes , Dom Cobley , linux-sunxi@lists.linux.dev, Maxime Ripard , Mateusz Kwiatkowski , dri-devel@lists.freedesktop.org X-Mailer: b4 0.10.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1396; i=maxime@cerno.tech; h=from:subject:message-id; bh=EPj2DquHuorBdZ9jZRn1PEir7mTLC2HDypL7NDzcn00=; b=owGbwMvMwCX2+D1vfrpE4FHG02pJDMk6BYGlD+/tOLf39jmWaV5rMqdOm+HVrZ58y8IqufGommqN 8KpdHaUsDGJcDLJiiiwxwuZL4k7Net3JxjcPZg4rE8gQBi5OAZjIv7eMDE/MlS097fyr+nQay1nXng pim/wtzemW2MHtJW9/L/zk3sHIsOP5ZY9Daw/blnkmbOXvO9GgYaoVcHR5ift98aYHs94mMgIA X-Developer-Key: i=maxime@cerno.tech; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D 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 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