[igt-dev] [PATCH] tests/kms_dp_aux_dev: Handle AUX failures on disconnected MST connectors

Ville Syrjälä ville.syrjala at linux.intel.com
Tue Oct 13 12:56:30 UTC 2020


On Tue, Oct 13, 2020 at 02:36:32PM +0300, Imre Deak wrote:
> On Tue, Oct 13, 2020 at 02:27:12PM +0300, Ville Syrjälä wrote:
> > On Mon, Oct 12, 2020 at 08:56:54PM +0300, Imre Deak wrote:
> > > The DPCD of an MST connector is read out with a REMOTE_DPCD_READ MST
> > > request. If the given connector is disconnected this read will result in
> > > an MST NAK reply and this will be reported as an EIO error to the
> > > initiator of the AUX read.
> > > 
> > > Handle this in the test that attempts to read the DPCD of any exposed
> > > connector, whether they are connected or not.
> > 
> > MST connectors get nuked once disconnected no? So is this just to avoid
> > some race with the connector disappearing during the test?
> 
> During enumeration of the ports of an MSTB (in response to a hotplug
> when at least one port is connected) a connector is added for all
> (output) ports, even if they are not connected. If a port gets unplugged
> the connector is removed yes, but a new connector for this port is added
> back since the parent MSTB is reprobed then.

That's quite confusing. Why are we trying to base the lifetime of the
connector on two different things?

Also I don't remember seeing any extra connectors for disconnected
ports on MST devices. So a bit confused.

> 
> > 
> > > 
> > > Signed-off-by: Imre Deak <imre.deak at intel.com>
> > > ---
> > >  tests/kms_dp_aux_dev.c | 16 +++++++++++++---
> > >  1 file changed, 13 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/tests/kms_dp_aux_dev.c b/tests/kms_dp_aux_dev.c
> > > index 4f52434a..39fc2b92 100644
> > > --- a/tests/kms_dp_aux_dev.c
> > > +++ b/tests/kms_dp_aux_dev.c
> > > @@ -34,6 +34,14 @@
> > >  
> > >  IGT_TEST_DESCRIPTION("Test that /dev/drm_dp_aux reads work");
> > >  
> > > +static bool is_mst_connector(int drm_fd, uint32_t connector_id)
> > > +{
> > > +	return kmstest_get_property(drm_fd, connector_id,
> > > +				    DRM_MODE_OBJECT_CONNECTOR,
> > > +				    "PATH", NULL,
> > > +				    NULL, NULL);
> > > +}
> > > +
> > >  static bool test(int drm_fd, uint32_t connector_id)
> > >  {
> > >  	drmModeConnector *connector;
> > > @@ -67,10 +75,12 @@ static bool test(int drm_fd, uint32_t connector_id)
> > >  		igt_assert(fd >= 0);
> > >  
> > >  		ret = read(fd, buf, sizeof(buf));
> > > -		igt_assert(ret == sizeof(buf) || errno == ETIMEDOUT);
> > > -
> > >  		igt_info("%s: %s\n", path,
> > > -			 ret > 0 ? "success" : "timed out");
> > > +			 ret > 0 ? "success" : strerror(errno));
> > > +
> > > +		igt_assert(ret == sizeof(buf) ||
> > > +			   errno == ETIMEDOUT ||
> > > +			   (errno == EIO && is_mst_connector(drm_fd, connector_id)));
> > >  
> > >  		close(fd);
> > >  
> > > -- 
> > > 2.20.1
> > > 
> > > _______________________________________________
> > > igt-dev mailing list
> > > igt-dev at lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/igt-dev
> > 
> > -- 
> > Ville Syrjälä
> > Intel

-- 
Ville Syrjälä
Intel


More information about the igt-dev mailing list