From patchwork Thu Sep 22 14:25:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 12985348 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D124EC54EE9 for ; Thu, 22 Sep 2022 14:44:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=zrpAp4Nx9l9CW08Ywip/RCFSkjUD2BAuEdarirZuId4=; b=KuEEyDgW7IJ7/0 zKqRn5L4m8VkgcO460IdGuvUYwygCV20jvnNvMYh8rXC10lwwL2L3+s7nj2KfRvlE6RuumZbRc69B 9GqMDHV82rYl9Hg3yYTRQKeZvDqT8QmM9RuJjYdugVlO2miwoF79CGRHU6/ivtTbTU4j2SAXAhRFN K6ZUPyBRHTU1vM95dZG1hVZlVZoigBYVbDkRPV7p81trqIwDHFvtHUfn4jRYCbCyoECR3OFoaCW/t K2iVQ58HwE5KXUsvupA8Zk0Lv+iL4WRakY28qrx0Av0mcqzkRCe63WSdi83vZZ/epOnga04pf812/ Xhp+l7o6NN6OyCz8kq4A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1obNPw-00G8Do-UU; Thu, 22 Sep 2022 14:43:09 +0000 Received: from wnew4-smtp.messagingengine.com ([64.147.123.18]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1obNB1-00G17A-VZ for linux-arm-kernel@lists.infradead.org; Thu, 22 Sep 2022 14:27:46 +0000 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 MIME-Version: 1.0 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: =?unknown-8bit?q?Hans_de_Goede_=3Chdegoede=40redhat=2Ecom=3E=2C_nouveau?= =?unknown-8bit?q?=40lists=2Efreedesktop=2Eorg=2C_Geert_Uytterhoeven_=3Cgeer?= =?unknown-8bit?q?t=40linux-m68k=2Eorg=3E=2C?= =?unknown-8bit?q?_Dave_Stevenson_=3Cdave=2Estevenson=40raspberrypi=2Ecom=3E?= =?unknown-8bit?q?=2C_linux-kernel=40vger=2Ekernel=2Eorg=2C_linux-arm-kernel?= =?unknown-8bit?q?=40lists=2Einfradead=2Eorg=2C?= =?unknown-8bit?q?_Phil_Elwell_=3Cphil=40raspberrypi=2Ecom=3E=2C_intel-gfx=40?= =?unknown-8bit?q?lists=2Efreedesktop=2Eorg=2C_Noralf_Tr=C3=B8nnes_=3Cnoralf?= =?unknown-8bit?q?=40tronnes=2Eorg=3E=2C?= =?unknown-8bit?q?_Dom_Cobley_=3Cdom=40raspberrypi=2Ecom=3E=2C_linux-sunxi=40?= =?unknown-8bit?q?lists=2Elinux=2Edev=2C_Maxime_Ripard_=3Cmaxime=40cerno=2Et?= =?unknown-8bit?q?ech=3E=2C?= =?unknown-8bit?q?_Mateusz_Kwiatkowski_=3Ckfyatek+publicgit=40gmail=2Ecom=3E?= =?unknown-8bit?q?=2C_dri-devel=40lists=2Efreedesktop=2Eorg?= 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220922_072744_200145_0BBAA60B X-CRM114-Status: GOOD ( 12.63 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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.