[PATCH v10 67/69] drm/connector: Drop redundant hdmi vendor/product fields

Maxime Ripard mripard at kernel.org
Tue Sep 8 05:26:42 PDT 2026


On Fri, Aug 21, 2026 at 06:30:31PM +0300, Cristian Ciocaltea wrote:
> On 8/20/26 1:10 PM, Maxime Ripard wrote:
> > On Fri, Jul 31, 2026 at 07:20:14PM +0300, Cristian Ciocaltea wrote:
> >> Now that all users migrated to the new drmm_connector_hdmi_init()
> >> signature, vendor and product are provided through struct
> >> drm_connector_hdmi_funcs, a reference to which is already stored in
> >> drm_connector_hdmi.
> >>
> >> Drop the redundant fields from drm_connector_hdmi and point its users to
> >> hdmi.funcs->vendor and hdmi.funcs->product instead.
> >>
> >> This allows simplifying the related connector registration tests by
> >> getting rid of the now unnecessary KUNIT_EXPECT_MEMEQ() checks.
> >>
> >> Tested-by: Diederik de Haas <diederik at cknow-tech.com>  # NanoPC-T6 LTS, Rock 5B
> >> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea at collabora.com>
> >> ---
> >>  drivers/gpu/drm/display/drm_hdmi_state_helper.c |  4 +--
> >>  drivers/gpu/drm/drm_connector.c                 |  4 ---
> >>  drivers/gpu/drm/tests/drm_connector_test.c      | 41 +++----------------------
> >>  include/drm/drm_connector.h                     | 14 ++-------
> >>  4 files changed, 8 insertions(+), 55 deletions(-)
> >>
> [...]
> 
> >>  /*
> >>   * Test that the registration of a connector with a vendor name at the
> >> - * maximum length succeeds, and is stored padded without the trailing
> >> - * zero.
> >> + * maximum length succeeds.
> >>   */
> >>  static void drm_test_connector_hdmi_init_vendor_length_exact(struct kunit *test)
> >>  {
> >>  	struct drm_connector_init_priv *priv = test->priv;
> >> -	const char expected_vendor[DRM_CONNECTOR_HDMI_VENDOR_LEN] = {
> >> -		'V', 'e', 'n', 'd', 'o', 'r',
> >> -		'V', 'e',
> >> -	};
> >>  	int ret;
> >>  
> >>  	priv->hdmi_funcs = dummy_hdmi_funcs;
> >> @@ -911,10 +882,6 @@ static void drm_test_connector_hdmi_init_vendor_length_exact(struct kunit *test)
> >>  				       DRM_MODE_CONNECTOR_HDMIA,
> >>  				       &priv->ddc);
> >>  	KUNIT_EXPECT_EQ(test, ret, 0);
> >> -	KUNIT_EXPECT_MEMEQ(test,
> >> -			   priv->connector.hdmi.vendor,
> >> -			   expected_vendor,
> >> -			   sizeof(priv->connector.hdmi.vendor));
> >>  }
> > 
> > Unfortunately, these tests were useful, and are there to match what the
> > spec asks for.
> 
> I've just added a new test to cover this, as well as a couple of prerequisites
> to consolidate SPD InfoFrame handling:
> 
> * video/hdmi: Define SPD InfoFrame field lengths and use strtomem_pad()
> 
>   HDMI specification defines the SPD InfoFrame Vendor Name and Product
>   Description as fixed-size fields, 8 and 16 bytes respectively, padded
>   with zeros and left without any trailing NUL when a name spans the whole
>   field.
> 
>   Give those lengths a name and mark the fields as non-strings, so that
>   the copies can be handed over to strtomem_pad(), which implements
>   precisely the required semantics.  This also bounds the reads from the
>   source strings, whereas the open-coded strlen() could run past the end
>   of the buffer in the hdmi_spd_infoframe_unpack() path, where the names
>   come straight from the wire and are not NUL-terminated.
> 
>   While at it, replace the related magic numbers in the pack and unpack
>   helpers with the new defines.
> 
> * drm/connector: Use the SPD InfoFrame field length defines
> 
>   DRM_CONNECTOR_HDMI_{VENDOR,PRODUCT}_LEN used to size the vendor and
>   product arrays in struct drm_connector_hdmi.  Those arrays are gone and
>   both names are now only validated before being copied into the SPD
>   InfoFrame, hence the limits they have to be checked against are the ones
>   of the SPD InfoFrame fields themselves.
> 
>   Switch the remaining users over to
>   HDMI_SPD_INFOFRAME_{VENDOR,PRODUCT}_LEN and drop the DRM specific
>   defines, so that the two cannot drift apart.
> 
> * drm/tests: hdmi: Add SPD InfoFrame vendor/product coverage
> 
>   The vendor and product strings provided through struct
>   drm_connector_hdmi_funcs end up in the SPD InfoFrame, whose fields are
>   defined by the HDMI specification as fixed-size: 8 bytes for the vendor
>   name and 16 bytes for the product description, padded with zeros and
>   left without any trailing NUL when a name spans the whole field.
> 
>   Nothing exercises that so far, since the SPD InfoFrame is only generated
>   for connectors implementing the related hooks, which none of the
>   existing test funcs provides.
> 
>   Add a connector variant supplying those hooks, along with parametrized
>   tests covering both the padded and the exact length cases.

I'm not sure why we need to add a new test here. It's exactly what the
test above is supposed to check. Making it a shell of what it was
testing and then adding yet another one that tests what the former used
to test seems suboptimal to me.

Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 273 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-rockchip/attachments/20260908/0d70fcfe/attachment.sig>


More information about the Linux-rockchip mailing list