[igt-dev] [PATCH] tests/kms_dp_aux_dev: Handle AUX failures on disconnected MST connectors
Imre Deak
imre.deak at intel.com
Tue Oct 13 11:36:32 UTC 2020
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.
>
> >
> > 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
More information about the igt-dev
mailing list