Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Kocialkowski <paul.kocialkowski@linux.intel.com>
To: Lyude Paul <lyude@redhat.com>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH i-g-t v2] tests/chamelium: Add common suspend and hibernate tests for DP and HDMI
Date: Mon, 19 Jun 2017 12:08:56 +0300	[thread overview]
Message-ID: <1497863336.1411.1.camel@linux.intel.com> (raw)
In-Reply-To: <1497655689.18958.8.camel@redhat.com>

Hi,

On Fri, 2017-06-16 at 19:28 -0400, Lyude Paul wrote:
> On Fri, 2017-06-16 at 17:17 +0300, Paul Kocialkowski wrote:
> > This adds two new tests: common-hpd-after-suspend and
> > common-hpd-after-hibernate that are aimed at testing HPD change during
> > suspend/hibernate for both DP and HDMI, at the same time.
> > 
> > The interest in bringing this test up is to reduce the time spent in
> > testing, with the downside of less precision regarding the test's
> > outcome. The per-connector tests are still available to get a more
> > precise idea of which connector causes a failure, when that happens.
> > 
> > VGA is explicitly excluded from this test as there is currently no
> > way of doing delayed hpd pulses for it.
> > 
> > > Signed-off-by: Paul Kocialkowski <paul.kocialkowski@linux.intel.com>
> > 
> > ---
> >  tests/chamelium.c | 86
> > +++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 86 insertions(+)
> > 
> > diff --git a/tests/chamelium.c b/tests/chamelium.c
> > index 76b14e95..d569c8ee 100644
> > --- a/tests/chamelium.c
> > +++ b/tests/chamelium.c
> > @@ -241,6 +241,80 @@ test_suspend_resume_hpd(data_t *data, struct
> > chamelium_port *port,
> >  }
> >  
> >  static void
> > +test_suspend_resume_hpd_common(data_t *data, enum igt_suspend_state state,
> > +			       enum igt_suspend_test test)
> > +{
> > +	struct udev_monitor *mon = igt_watch_hotplug();
> > +	struct chamelium_port *port;
> > +	int p;
> > +
> > +	for (p = 0; p < data->port_count; p++) {
> > +		port = data->ports[p];
> > +		if (chamelium_port_get_type(port) ==
> > DRM_MODE_CONNECTOR_VGA)
> > +			continue;
> > +
> > +		reset_state(data, port);
> > +
> > +		igt_debug("Testing port %s\n",
> > chamelium_port_get_name(port));
> > +	}
> > +
> > +	igt_set_autoresume_delay(SUSPEND_RESUME_DELAY);
> > +	igt_flush_hotplugs(mon);
> > +
> > +	/* Make sure we notice new connectors after resuming */
> > +	for (p = 0; p < data->port_count; p++) {
> > +		port = data->ports[p];
> > +		if (chamelium_port_get_type(port) ==
> > DRM_MODE_CONNECTOR_VGA)
> > +			continue;
> > +
> > +		chamelium_async_hpd_pulse_start(data->chamelium, port,
> > false,
> > +						SUSPEND_RESUME_DELAY / 2);
> > +	}
> > +
> > +	igt_system_suspend_autoresume(state, test);
> > +	chamelium_async_hpd_pulse_finish(data->chamelium);
> > +
> > +	igt_assert(igt_hotplug_detected(mon, HOTPLUG_TIMEOUT));
> > +
> > +	for (p = 0; p < data->port_count; p++) {
> > +		port = data->ports[p];
> > +		if (chamelium_port_get_type(port) ==
> > DRM_MODE_CONNECTOR_VGA)
> > +			continue;
> > +
> > +		igt_assert_eq(reprobe_connector(data, port),
> > +			      DRM_MODE_CONNECTED);
> > +	}
> > +
> > +	igt_flush_hotplugs(mon);
> > +
> > +	/* Now make sure we notice disconnected connectors after resuming
> > */
> > +	for (p = 0; p < data->port_count; p++) {
> > +		port = data->ports[p];
> > +		if (chamelium_port_get_type(port) ==
> > DRM_MODE_CONNECTOR_VGA)
> > +			continue;
> > +
> > +		chamelium_async_hpd_pulse_start(data->chamelium, port,
> > true,
> > +						SUSPEND_RESUME_DELAY / 2);
> > +	}
> > +
> > +	igt_system_suspend_autoresume(state, test);
> > +	chamelium_async_hpd_pulse_finish(data->chamelium);
> > +
> > +	igt_assert(igt_hotplug_detected(mon, HOTPLUG_TIMEOUT));
> > +
> > +	for (p = 0; p < data->port_count; p++) {
> > +		port = data->ports[p];
> > +		if (chamelium_port_get_type(port) ==
> > DRM_MODE_CONNECTOR_VGA)
> > +			continue;
> > +
> > +		igt_assert_eq(reprobe_connector(data, port),
> > +			      DRM_MODE_DISCONNECTED);
> > +	}
> > +
> > +	igt_cleanup_hotplug(mon);
> > +}
> > +
> > +static void
> 
> For smaller bits of code this isn't a big deal since we're talking
> about tests here, but this is a lot of code to have for a single
> function like this. Mind splitting this into something like (feel free
> to take some liberty with the function naming)

That is quite right, this is indeed starting to look too big. Thanks for
pointing it out. I'll send v2 with a dedicated function as suggested.

> test_suspend_resume_hpd(data_t *data, enum igt_suspend_state state, enum
> igt_suspend_test test)
>   → try_suspend_resume_hpd(data_t *data, enum igt_suspend_state state, enum
> igt_suspend_test test, bool connected)
> 
> Other then that, looks good. With the changes mentioned:
> 
> Reviewed-by: Lyude Paul <lyude@redhat.com>
> 
> >  test_suspend_resume_edid_change(data_t *data, struct chamelium_port *port,
> >  				enum igt_suspend_state state,
> >  				enum igt_suspend_test test,
> > @@ -750,6 +824,18 @@ igt_main
> >  			test_hpd_without_ddc(&data, port);
> >  	}
> >  
> > +	igt_subtest_group {
> > +		igt_subtest("common-hpd-after-suspend")
> > +			test_suspend_resume_hpd_common(&data,
> > +						       SUSPEND_STATE_MEM,
> > +						       SUSPEND_TEST_NONE);
> > +
> > +		igt_subtest("common-hpd-after-hibernate")
> > +			test_suspend_resume_hpd_common(&data,
> > +						       SUSPEND_STATE_DISK,
> > +						       SUSPEND_TEST_DEVICES
> > );
> > +	}
> > +
> >  	igt_fixture {
> >  		close(data.drm_fd);
> >  	}
-- 
Paul Kocialkowski <paul.kocialkowski@linux.intel.com>
Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

      reply	other threads:[~2017-06-19  9:09 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-16 14:17 [PATCH i-g-t v2] tests/chamelium: Add common suspend and hibernate tests for DP and HDMI Paul Kocialkowski
2017-06-16 23:28 ` Lyude Paul
2017-06-19  9:08   ` Paul Kocialkowski [this message]

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=1497863336.1411.1.camel@linux.intel.com \
    --to=paul.kocialkowski@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=lyude@redhat.com \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox