From: Hans de Goede <hdegoede@redhat.com> To: Geert Uytterhoeven <geert@linux-m68k.org>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch> Cc: dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, linux-m68k@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/5] drm/modes: Extract drm_mode_parse_cmdline_named_mode() Date: Fri, 8 Jul 2022 21:45:58 +0200 [thread overview] Message-ID: <c95724ad-a3b0-2ac8-5413-b971626e7e63@redhat.com> (raw) In-Reply-To: <402dea47269f2e3960946d186ba3cb118066e74a.1657301107.git.geert@linux-m68k.org> Hi, On 7/8/22 20:21, Geert Uytterhoeven wrote: > Extract the code to check for a named mode parameter into its own > function, to streamline the main parsing flow. > > Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> > --- > drivers/gpu/drm/drm_modes.c | 41 +++++++++++++++++++++++++++---------- > 1 file changed, 30 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > index 30a7be97707bfb16..434383469e9d984d 100644 > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -1749,6 +1749,30 @@ static const char * const drm_named_modes_whitelist[] = { > "PAL", > }; > > +static int drm_mode_parse_cmdline_named_mode(const char *name, > + unsigned int length, > + bool refresh, > + struct drm_cmdline_mode *mode) > +{ > + unsigned int i; > + int ret; > + > + for (i = 0; i < ARRAY_SIZE(drm_named_modes_whitelist); i++) { > + ret = str_has_prefix(name, drm_named_modes_whitelist[i]); > + if (!ret) As discussed in my review of 1/5 this needs to become: if (ret != length) > + continue; Which renders my other comment on this patch (length not being used) mute. Regards, Hans > + > + if (refresh) > + return -EINVAL; /* named + refresh is invalid */ > + > + strcpy(mode->name, drm_named_modes_whitelist[i]); > + mode->specified = true; > + return 0; > + } > + > + return 0; > +} > + > /** > * drm_mode_parse_command_line_for_connector - parse command line modeline for connector > * @mode_option: optional per connector mode option > @@ -1785,7 +1809,7 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option, > const char *bpp_ptr = NULL, *refresh_ptr = NULL, *extra_ptr = NULL; > const char *options_ptr = NULL; > char *bpp_end_ptr = NULL, *refresh_end_ptr = NULL; > - int i, len, ret; > + int len, ret; > > memset(mode, 0, sizeof(*mode)); > mode->panel_orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN; > @@ -1823,16 +1847,11 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option, > } > > /* First check for a named mode */ > - for (i = 0; mode_end && i < ARRAY_SIZE(drm_named_modes_whitelist); i++) { > - ret = str_has_prefix(name, drm_named_modes_whitelist[i]); > - if (ret) { > - if (refresh_ptr) > - return false; /* named + refresh is invalid */ > - > - strcpy(mode->name, drm_named_modes_whitelist[i]); > - mode->specified = true; > - break; > - } > + if (mode_end) { > + ret = drm_mode_parse_cmdline_named_mode(name, mode_end, > + refresh_ptr, mode); > + if (ret) > + return false; > } > > /* No named mode? Check for a normal mode argument, e.g. 1024x768 */
WARNING: multiple messages have this Message-ID (diff)
From: Hans de Goede <hdegoede@redhat.com> To: Geert Uytterhoeven <geert@linux-m68k.org>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch> Cc: linux-fbdev@vger.kernel.org, linux-m68k@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/5] drm/modes: Extract drm_mode_parse_cmdline_named_mode() Date: Fri, 8 Jul 2022 21:45:58 +0200 [thread overview] Message-ID: <c95724ad-a3b0-2ac8-5413-b971626e7e63@redhat.com> (raw) In-Reply-To: <402dea47269f2e3960946d186ba3cb118066e74a.1657301107.git.geert@linux-m68k.org> Hi, On 7/8/22 20:21, Geert Uytterhoeven wrote: > Extract the code to check for a named mode parameter into its own > function, to streamline the main parsing flow. > > Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> > --- > drivers/gpu/drm/drm_modes.c | 41 +++++++++++++++++++++++++++---------- > 1 file changed, 30 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > index 30a7be97707bfb16..434383469e9d984d 100644 > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -1749,6 +1749,30 @@ static const char * const drm_named_modes_whitelist[] = { > "PAL", > }; > > +static int drm_mode_parse_cmdline_named_mode(const char *name, > + unsigned int length, > + bool refresh, > + struct drm_cmdline_mode *mode) > +{ > + unsigned int i; > + int ret; > + > + for (i = 0; i < ARRAY_SIZE(drm_named_modes_whitelist); i++) { > + ret = str_has_prefix(name, drm_named_modes_whitelist[i]); > + if (!ret) As discussed in my review of 1/5 this needs to become: if (ret != length) > + continue; Which renders my other comment on this patch (length not being used) mute. Regards, Hans > + > + if (refresh) > + return -EINVAL; /* named + refresh is invalid */ > + > + strcpy(mode->name, drm_named_modes_whitelist[i]); > + mode->specified = true; > + return 0; > + } > + > + return 0; > +} > + > /** > * drm_mode_parse_command_line_for_connector - parse command line modeline for connector > * @mode_option: optional per connector mode option > @@ -1785,7 +1809,7 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option, > const char *bpp_ptr = NULL, *refresh_ptr = NULL, *extra_ptr = NULL; > const char *options_ptr = NULL; > char *bpp_end_ptr = NULL, *refresh_end_ptr = NULL; > - int i, len, ret; > + int len, ret; > > memset(mode, 0, sizeof(*mode)); > mode->panel_orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN; > @@ -1823,16 +1847,11 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option, > } > > /* First check for a named mode */ > - for (i = 0; mode_end && i < ARRAY_SIZE(drm_named_modes_whitelist); i++) { > - ret = str_has_prefix(name, drm_named_modes_whitelist[i]); > - if (ret) { > - if (refresh_ptr) > - return false; /* named + refresh is invalid */ > - > - strcpy(mode->name, drm_named_modes_whitelist[i]); > - mode->specified = true; > - break; > - } > + if (mode_end) { > + ret = drm_mode_parse_cmdline_named_mode(name, mode_end, > + refresh_ptr, mode); > + if (ret) > + return false; > } > > /* No named mode? Check for a normal mode argument, e.g. 1024x768 */
next prev parent reply other threads:[~2022-07-08 19:46 UTC|newest] Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-07-08 18:21 [PATCH 0/5] drm/modes: Command line mode selection fixes and improvements Geert Uytterhoeven 2022-07-08 18:21 ` Geert Uytterhoeven 2022-07-08 18:21 ` [PATCH 1/5] drm/modes: parse_cmdline: Handle empty mode name part Geert Uytterhoeven 2022-07-08 18:21 ` Geert Uytterhoeven 2022-07-08 19:28 ` Hans de Goede 2022-07-08 19:28 ` Hans de Goede 2022-07-08 20:06 ` Geert Uytterhoeven 2022-07-08 20:06 ` Geert Uytterhoeven 2022-07-08 20:09 ` Geert Uytterhoeven 2022-07-08 20:09 ` Geert Uytterhoeven 2022-07-08 18:21 ` [PATCH 2/5] drm/modes: Extract drm_mode_parse_cmdline_named_mode() Geert Uytterhoeven 2022-07-08 18:21 ` Geert Uytterhoeven 2022-07-08 19:45 ` Hans de Goede [this message] 2022-07-08 19:45 ` Hans de Goede 2022-07-08 20:14 ` Geert Uytterhoeven 2022-07-08 20:14 ` Geert Uytterhoeven 2022-07-08 18:21 ` [PATCH 3/5] drm/modes: parse_cmdline: Make mode->*specified handling more uniform Geert Uytterhoeven 2022-07-08 18:21 ` Geert Uytterhoeven 2022-07-08 18:21 ` [PATCH 4/5] drm/modes: Add support for driver-specific named modes Geert Uytterhoeven 2022-07-08 18:21 ` Geert Uytterhoeven 2022-07-11 9:03 ` Thomas Zimmermann 2022-07-11 9:03 ` Thomas Zimmermann 2022-07-11 9:35 ` Maxime Ripard 2022-07-11 9:35 ` Maxime Ripard 2022-07-11 11:11 ` Thomas Zimmermann 2022-07-11 11:11 ` Thomas Zimmermann 2022-07-11 11:42 ` Maxime Ripard 2022-07-11 11:42 ` Maxime Ripard 2022-07-11 11:59 ` Geert Uytterhoeven 2022-07-11 11:59 ` Geert Uytterhoeven 2022-07-11 12:02 ` Maxime Ripard 2022-07-11 12:02 ` Maxime Ripard 2022-07-11 12:08 ` Geert Uytterhoeven 2022-07-11 12:08 ` Geert Uytterhoeven 2022-07-13 9:37 ` Maxime Ripard 2022-07-13 9:37 ` Maxime Ripard 2022-07-14 8:42 ` Geert Uytterhoeven 2022-07-14 8:42 ` Geert Uytterhoeven 2022-07-11 9:35 ` Geert Uytterhoeven 2022-07-11 9:35 ` Geert Uytterhoeven 2022-07-11 11:03 ` Thomas Zimmermann 2022-07-11 11:03 ` Thomas Zimmermann 2022-07-08 18:21 ` [PATCH 5/5] drm/modes: parse_cmdline: Add support for named modes containing dashes Geert Uytterhoeven 2022-07-08 18:21 ` Geert Uytterhoeven 2022-07-08 19:36 ` [PATCH 0/5] drm/modes: Command line mode selection fixes and improvements Hans de Goede 2022-07-08 19:36 ` Hans de Goede 2022-07-11 9:04 ` Thomas Zimmermann 2022-07-11 9:04 ` Thomas Zimmermann
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=c95724ad-a3b0-2ac8-5413-b971626e7e63@redhat.com \ --to=hdegoede@redhat.com \ --cc=airlied@linux.ie \ --cc=daniel@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --cc=geert@linux-m68k.org \ --cc=linux-fbdev@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-m68k@vger.kernel.org \ --cc=maarten.lankhorst@linux.intel.com \ --cc=mripard@kernel.org \ --cc=tzimmermann@suse.de \ /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: linkBe 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.