* [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip.
@ 2018-01-04 14:12 Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
` (10 more replies)
0 siblings, 11 replies; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
To: intel-gfx
kms_flip is meant for finding issues with page flip, but was used for
finding bugs in the vblank ioctl too. Move over some tests from kms_flip
to kms_vblank, and reduce their runtime to a minimum.
Changes since v1:
- Rebase on top of current head so the changes to kms_flip apply.
- Move hang test moving until after kms_vblank reorganization, for clarity.
Maarten Lankhorst (6):
tests/kms_flip: Remove blt/rcs flip tests.
kms_vblank: Reorganize subtests by pipe
tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v2.
kms_vblank: Add tests implemented in kms_flip
kms_flip: Remove redundant vblank tests.
kms_vblank: Remove teardown code from cleanup_crtc
tests/kms_flip.c | 58 +--------------
tests/kms_vblank.c | 205 +++++++++++++++++++++++++++++++++++++++--------------
2 files changed, 152 insertions(+), 111 deletions(-)
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests.
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
@ 2018-01-04 14:12 ` Maarten Lankhorst
2018-01-10 8:50 ` Daniel Vetter
2018-01-04 14:12 ` [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe Maarten Lankhorst
` (9 subsequent siblings)
10 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
To: intel-gfx
With the removal of mmio flips, blt and rcs flips are no longer
different from doing busy testing in kms_busy.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_flip.c | 40 +---------------------------------------
1 file changed, 1 insertion(+), 39 deletions(-)
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 2899f20e6c73..7689e65b521a 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -45,8 +45,7 @@
#include "igt_stats.h"
#define TEST_DPMS (1 << 0)
-#define TEST_WITH_DUMMY_BCS (1 << 1)
-#define TEST_WITH_DUMMY_RCS (1 << 2)
+
#define TEST_PAN (1 << 3)
#define TEST_MODESET (1 << 4)
#define TEST_CHECK_TS (1 << 5)
@@ -668,8 +667,6 @@ static unsigned int run_test_step(struct test_output *o)
struct vblank_reply vbl_reply;
unsigned int target_seq;
igt_hang_t hang;
- igt_spin_t *spin_rcs = 0;
- igt_spin_t *spin_bcs = 0;
target_seq = o->vblank_state.seq_step;
/* Absolute waits only works once we have a frame counter. */
@@ -691,20 +688,6 @@ static unsigned int run_test_step(struct test_output *o)
if (!(o->flags & TEST_SINGLE_BUFFER))
o->current_fb_id = !o->current_fb_id;
- if (o->flags & TEST_WITH_DUMMY_BCS) {
- spin_bcs = __igt_spin_batch_new(drm_fd, 0, I915_EXEC_BLT,
- o->fb_info[o->current_fb_id].gem_handle);
- igt_spin_batch_set_timeout(spin_bcs,
- NSEC_PER_SEC);
- }
-
- if (o->flags & TEST_WITH_DUMMY_RCS) {
- spin_rcs = __igt_spin_batch_new(drm_fd, 0, I915_EXEC_RENDER,
- o->fb_info[o->current_fb_id].gem_handle);
- igt_spin_batch_set_timeout(spin_rcs,
- NSEC_PER_SEC);
- }
-
if (o->flags & TEST_FB_RECREATE)
recreate_fb(o);
new_fb_id = o->fb_ids[o->current_fb_id];
@@ -809,10 +792,6 @@ static unsigned int run_test_step(struct test_output *o)
completed_events = EVENT_VBLANK;
}
}
- if (spin_rcs)
- igt_spin_batch_free(drm_fd, spin_rcs);
- if (spin_bcs)
- igt_spin_batch_free(drm_fd, spin_bcs);
if (do_flip && (o->flags & TEST_EBUSY))
igt_assert(do_page_flip(o, new_fb_id, true) == -EBUSY);
@@ -1065,10 +1044,6 @@ static unsigned int wait_for_events(struct test_output *o)
evctx.vblank_handler = vblank_handler;
evctx.page_flip_handler = page_flip_handler;
- /* make timeout lax with the dummy load */
- if (o->flags & (TEST_WITH_DUMMY_BCS | TEST_WITH_DUMMY_RCS))
- timeout.tv_sec *= 60;
-
FD_ZERO(&fds);
FD_SET(drm_fd, &fds);
do {
@@ -1099,9 +1074,6 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
igt_hang_t hang;
int count = 0;
- if (o->flags & (TEST_WITH_DUMMY_BCS | TEST_WITH_DUMMY_RCS))
- igt_require_gem(drm_fd);
-
memset(&hang, 0, sizeof(hang));
if (o->flags & TEST_HANG_ONCE)
hang = hang_gpu(drm_fd);
@@ -1571,15 +1543,7 @@ int main(int argc, char **argv)
{ 30, TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
"blocking-absolute-wf_vblank" },
{ 60, TEST_VBLANK | TEST_DPMS | TEST_EINVAL, "wf_vblank-vs-dpms" },
- { 60, TEST_VBLANK | TEST_DPMS | TEST_WITH_DUMMY_BCS,
- "blt-wf_vblank-vs-dpms" },
- { 60, TEST_VBLANK | TEST_DPMS | TEST_WITH_DUMMY_RCS,
- "rcs-wf_vblank-vs-dpms" },
{ 60, TEST_VBLANK | TEST_MODESET | TEST_EINVAL, "wf_vblank-vs-modeset" },
- { 60, TEST_VBLANK | TEST_MODESET | TEST_WITH_DUMMY_BCS,
- "blt-wf_vblank-vs-modeset" },
- { 60, TEST_VBLANK | TEST_MODESET | TEST_WITH_DUMMY_RCS,
- "rcs-wf_vblank-vs-modeset" },
{ 10, TEST_FLIP | TEST_BASIC, "plain-flip" },
{ 30, TEST_FLIP | TEST_EBUSY , "busy-flip" },
{ 30, TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
@@ -1589,8 +1553,6 @@ int main(int argc, char **argv)
{ 30, TEST_FLIP | TEST_RMFB | TEST_MODESET , "flip-vs-rmfb" },
{ 20, TEST_FLIP | TEST_DPMS | TEST_EINVAL | TEST_BASIC, "flip-vs-dpms" },
{ 30, TEST_FLIP | TEST_PAN, "flip-vs-panning" },
- { 60, TEST_FLIP | TEST_PAN | TEST_WITH_DUMMY_BCS, "blt-flip-vs-panning" },
- { 60, TEST_FLIP | TEST_PAN | TEST_WITH_DUMMY_RCS, "render-flip-vs-panning" },
{ 20, TEST_FLIP | TEST_MODESET | TEST_EINVAL | TEST_BASIC, "flip-vs-modeset" },
{ 30, TEST_FLIP | TEST_VBLANK_EXPIRED_SEQ,
"flip-vs-expired-vblank" },
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
@ 2018-01-04 14:12 ` Maarten Lankhorst
2018-01-10 8:57 ` Daniel Vetter
2018-01-04 14:12 ` [PATCH i-g-t v2 3/6] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v2 Maarten Lankhorst
` (8 subsequent siblings)
10 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
To: intel-gfx
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_vblank.c | 93 ++++++++++++++++++++++++++++--------------------------
1 file changed, 49 insertions(+), 44 deletions(-)
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 342e4ef23b97..e51e96c7f061 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -118,49 +118,41 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
int nchildren =
data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
igt_display_t *display = &data->display;
- igt_output_t *output;
- enum pipe p;
+ igt_output_t *output = data->output;
- for_each_pipe_with_valid_output(display, p, output) {
- data->pipe = p;
- prepare_crtc(data, fd, output);
+ prepare_crtc(data, fd, output);
- igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
- igt_subtest_name(),
- kmstest_pipe_name(data->pipe),
- igt_output_name(output),
- nchildren);
-
- if (data->flags & BUSY) {
- union drm_wait_vblank vbl;
-
- memset(&vbl, 0, sizeof(vbl));
- vbl.request.type =
- DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
- vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
- vbl.request.sequence = 120 + 12;
- igt_assert_eq(wait_vblank(fd, &vbl), 0);
- }
+ igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
+ igt_subtest_name(), kmstest_pipe_name(data->pipe),
+ igt_output_name(output), nchildren);
- igt_fork(child, nchildren)
- testfunc(data, fd, nchildren);
- igt_waitchildren();
-
- if (data->flags & BUSY) {
- struct drm_event_vblank buf;
- igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
- }
+ if (data->flags & BUSY) {
+ union drm_wait_vblank vbl;
- igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
+ memset(&vbl, 0, sizeof(vbl));
+ vbl.request.type =
+ DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
+ vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
+ vbl.request.sequence = 120 + 12;
+ igt_assert_eq(wait_vblank(fd, &vbl), 0);
+ }
- igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
- igt_subtest_name(),
- kmstest_pipe_name(data->pipe),
- igt_output_name(output));
+ igt_fork(child, nchildren)
+ testfunc(data, fd, nchildren);
+ igt_waitchildren();
- /* cleanup what prepare_crtc() has done */
- cleanup_crtc(data, fd, output);
+ if (data->flags & BUSY) {
+ struct drm_event_vblank buf;
+ igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
}
+
+ igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
+
+ igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
+ igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
+
+ /* cleanup what prepare_crtc() has done */
+ cleanup_crtc(data, fd, output);
}
static void crtc_id_subtest(data_t *data, int fd)
@@ -329,6 +321,8 @@ igt_main
{ "wait", vblank_wait, IDLE | FORKED | BUSY },
{ }
}, *f;
+ enum pipe p;
+
const struct {
const char *name;
unsigned int flags;
@@ -352,14 +346,25 @@ igt_main
igt_subtest("crtc-id")
crtc_id_subtest(&data, fd);
- for (f = funcs; f->name; f++) {
- for (m = modes; m->name; m++) {
- if (m->flags & ~f->valid)
- continue;
-
- igt_subtest_f("%s-%s", f->name, m->name) {
- data.flags = m->flags;
- run_test(&data, fd, f->func);
+ for_each_pipe_static(p) igt_subtest_group {
+ igt_fixture
+ igt_display_require_output_on_pipe(&data.display, p);
+
+ data.pipe = p;
+
+ for (f = funcs; f->name; f++) {
+ for (m = modes; m->name; m++) {
+ if (m->flags & ~f->valid)
+ continue;
+
+ igt_subtest_f("pipe-%s-%s-%s",
+ kmstest_pipe_name(data.pipe),
+ f->name, m->name) {
+ for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
+ data.flags = m->flags;
+ run_test(&data, fd, f->func);
+ }
+ }
}
}
}
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH i-g-t v2 3/6] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v2.
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe Maarten Lankhorst
@ 2018-01-04 14:12 ` Maarten Lankhorst
2018-01-08 10:23 ` [PATCH v3 i-g-t] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v3 Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 4/6] kms_vblank: Add tests implemented in kms_flip Maarten Lankhorst
` (7 subsequent siblings)
10 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
To: intel-gfx
There's no need to test this more than once. Add a NOHANG
flag which can be used to specify that a subtest can not
be run when hanging. If it's set on either the subtest or
the mode, the -hang test for this combination will not be
generated.
Changes since v1:
- Merge the patch that renamed HANG to NOHANG.
- Rebase after 'reorganize subtests by type'.
- Allow subtests to specify NOHANG too.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_flip.c | 10 +---------
tests/kms_vblank.c | 23 ++++++++++++++++++++++-
2 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 7689e65b521a..50c16b0debbf 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -72,7 +72,7 @@
#define TEST_SUSPEND (1 << 26)
#define TEST_TS_CONT (1 << 27)
#define TEST_BO_TOOBIG (1 << 28)
-#define TEST_HANG_ONCE (1 << 29)
+
#define TEST_BASIC (1 << 30)
#define EVENT_FLIP (1 << 0)
@@ -1071,13 +1071,8 @@ static unsigned int wait_for_events(struct test_output *o)
static unsigned event_loop(struct test_output *o, unsigned duration_ms)
{
unsigned long start, end;
- igt_hang_t hang;
int count = 0;
- memset(&hang, 0, sizeof(hang));
- if (o->flags & TEST_HANG_ONCE)
- hang = hang_gpu(drm_fd);
-
start = gettime_us();
while (1) {
@@ -1097,8 +1092,6 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
end = gettime_us();
- unhang_gpu(drm_fd, hang);
-
/* Flush any remaining events */
if (o->pending_events)
wait_for_events(o);
@@ -1565,7 +1558,6 @@ int main(int argc, char **argv)
TEST_CHECK_TS, "flip-vs-blocking-wf-vblank" },
{ 30, TEST_FLIP | TEST_MODESET | TEST_HANG | TEST_NOEVENT, "flip-vs-modeset-vs-hang" },
{ 30, TEST_FLIP | TEST_PAN | TEST_HANG, "flip-vs-panning-vs-hang" },
- { 30, TEST_VBLANK | TEST_HANG_ONCE, "vblank-vs-hang" },
{ 1, TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING, "flip-vs-bad-tiling" },
{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index e51e96c7f061..959ba46ca30f 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -54,6 +54,7 @@ typedef struct {
#define IDLE 1
#define BUSY 2
#define FORKED 4
+#define NOHANG 8
} data_t;
static double elapsed(const struct timespec *start,
@@ -119,6 +120,7 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
igt_display_t *display = &data->display;
igt_output_t *output = data->output;
+ igt_hang_t hang;
prepare_crtc(data, fd, output);
@@ -126,6 +128,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
igt_subtest_name(), kmstest_pipe_name(data->pipe),
igt_output_name(output), nchildren);
+ if (!(data->flags & NOHANG))
+ hang = igt_hang_ring(display->drm_fd, I915_EXEC_DEFAULT);
+
if (data->flags & BUSY) {
union drm_wait_vblank vbl;
@@ -148,6 +153,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
+ if (!(data->flags & NOHANG))
+ igt_post_hang_ring(fd, hang);
+
igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
@@ -354,12 +362,25 @@ igt_main
for (f = funcs; f->name; f++) {
for (m = modes; m->name; m++) {
- if (m->flags & ~f->valid)
+ if (m->flags & ~(f->valid | NOHANG))
continue;
igt_subtest_f("pipe-%s-%s-%s",
kmstest_pipe_name(data.pipe),
f->name, m->name) {
+ for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
+ data.flags = m->flags | NOHANG;
+ run_test(&data, fd, f->func);
+ }
+ }
+
+ /* Skip the -hang version if NOHANG flag is set */
+ if (f->valid & NOHANG || m->flags & NOHANG)
+ continue;
+
+ igt_subtest_f("pipe-%s-%s-%s-hang",
+ kmstest_pipe_name(data.pipe),
+ f->name, m->name) {
for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
data.flags = m->flags;
run_test(&data, fd, f->func);
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH i-g-t v2 4/6] kms_vblank: Add tests implemented in kms_flip
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
` (2 preceding siblings ...)
2018-01-04 14:12 ` [PATCH i-g-t v2 3/6] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v2 Maarten Lankhorst
@ 2018-01-04 14:12 ` Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 5/6] kms_flip: Remove redundant vblank tests Maarten Lankhorst
` (6 subsequent siblings)
10 siblings, 0 replies; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
To: intel-gfx
In kms_flip there are some tests for testing whether the
vblank counter is monotonically increasing. Add these subtests
to kms_vblank, where they belong.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_vblank.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 80 insertions(+), 4 deletions(-)
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 959ba46ca30f..362221c03677 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -51,10 +51,14 @@ typedef struct {
igt_output_t *output;
enum pipe pipe;
unsigned int flags;
-#define IDLE 1
-#define BUSY 2
-#define FORKED 4
-#define NOHANG 8
+#define IDLE 0x1
+#define BUSY 0x2
+#define FORKED 0x4
+#define NOHANG 0x8
+#define MODESET 0x10
+#define DPMS 0x20
+#define SUSPEND 0x40
+#define RPM 0x80
} data_t;
static double elapsed(const struct timespec *start,
@@ -124,6 +128,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
prepare_crtc(data, fd, output);
+ if (data->flags & RPM)
+ igt_require(igt_setup_runtime_pm());
+
igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
igt_subtest_name(), kmstest_pipe_name(data->pipe),
igt_output_name(output), nchildren);
@@ -315,6 +322,69 @@ static void vblank_wait(data_t *data, int fd, int nchildren)
elapsed(&start, &end, count));
}
+static int get_vblank(int fd, enum pipe pipe, unsigned flags)
+{
+ union drm_wait_vblank vbl;
+
+ memset(&vbl, 0, sizeof(vbl));
+ vbl.request.type = DRM_VBLANK_RELATIVE | kmstest_get_vbl_flag(pipe) | flags;
+ do_or_die(igt_ioctl(fd, DRM_IOCTL_WAIT_VBLANK, &vbl));
+
+ return vbl.reply.sequence;
+}
+
+static void vblank_ts_cont(data_t *data, int fd, int nchildren)
+{
+ igt_display_t *display = &data->display;
+ igt_output_t *output = data->output;
+ int seq1, seq2;
+ union drm_wait_vblank vbl;
+
+ seq1 = get_vblank(fd, data->pipe, 0);
+
+ if (data->flags & DPMS) {
+ igt_output_set_prop_value(output, IGT_CONNECTOR_DPMS, DRM_MODE_DPMS_OFF);
+ igt_display_commit(display);
+ }
+
+ if (data->flags & MODESET) {
+ igt_output_set_pipe(output, PIPE_NONE);
+ igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
+ }
+
+ if (data->flags & RPM)
+ igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+
+ if (data->flags & SUSPEND)
+ igt_system_suspend_autoresume(SUSPEND_STATE_MEM,
+ SUSPEND_TEST_NONE);
+
+ if (data->flags & (MODESET | DPMS)) {
+ /* Attempting to do a vblank while disabled should return -EINVAL */
+ memset(&vbl, 0, sizeof(vbl));
+ vbl.request.type = DRM_VBLANK_RELATIVE;
+ vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
+ igt_assert_eq(wait_vblank(fd, &vbl), -EINVAL);
+ }
+
+ if (data->flags & DPMS) {
+ igt_output_set_prop_value(output, IGT_CONNECTOR_DPMS, DRM_MODE_DPMS_ON);
+ igt_display_commit(display);
+ }
+
+ if (data->flags & MODESET) {
+ igt_output_set_pipe(output, data->pipe);
+ igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
+ }
+
+ seq2 = get_vblank(fd, data->pipe, 0);
+
+ igt_debug("testing ts continuity: Current frame %u, old frame %u\n", seq2, seq1);
+
+ igt_assert_f(seq2 - seq1 >= 0, "unexpected vblank seq %u, should be >= %u\n", seq2, seq1);
+ igt_assert_f(seq2 - seq1 <= 150, "unexpected vblank seq %u, should be < %u\n", seq2, seq1 + 150);
+}
+
igt_main
{
int fd;
@@ -327,6 +397,7 @@ igt_main
{ "accuracy", accuracy, IDLE },
{ "query", vblank_query, IDLE | FORKED | BUSY },
{ "wait", vblank_wait, IDLE | FORKED | BUSY },
+ { "ts-continuation", vblank_ts_cont, IDLE | SUSPEND | MODESET | DPMS | RPM },
{ }
}, *f;
enum pipe p;
@@ -339,6 +410,11 @@ igt_main
{ "forked", IDLE | FORKED },
{ "busy", BUSY },
{ "forked-busy", BUSY | FORKED },
+ { "dpms-rpm", DPMS | RPM | NOHANG },
+ { "dpms-suspend", DPMS | SUSPEND | NOHANG},
+ { "suspend", SUSPEND | NOHANG },
+ { "modeset", MODESET },
+ { "modeset-rpm", MODESET | RPM | NOHANG},
{ }
}, *m;
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH i-g-t v2 5/6] kms_flip: Remove redundant vblank tests.
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
` (3 preceding siblings ...)
2018-01-04 14:12 ` [PATCH i-g-t v2 4/6] kms_vblank: Add tests implemented in kms_flip Maarten Lankhorst
@ 2018-01-04 14:12 ` Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 6/6] kms_vblank: Remove teardown code from cleanup_crtc Maarten Lankhorst
` (5 subsequent siblings)
10 siblings, 0 replies; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
To: intel-gfx
wf_vblank is redundant with wf_vblank-ts-check, which also performs
a check but runs in the same way.
The -EINVAL vblank tests are reproduced in kms_vblank, as are the
vblank-vs-* tests.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_flip.c | 8 --------
1 file changed, 8 deletions(-)
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 50c16b0debbf..710ea52b4a8a 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -1527,7 +1527,6 @@ int main(int argc, char **argv)
int flags;
const char *name;
} tests[] = {
- { 30, TEST_VBLANK, "wf_vblank" },
{ 30, TEST_VBLANK | TEST_CHECK_TS, "wf_vblank-ts-check" },
{ 30, TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_CHECK_TS,
"blocking-wf_vblank" },
@@ -1535,8 +1534,6 @@ int main(int argc, char **argv)
"absolute-wf_vblank" },
{ 30, TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
"blocking-absolute-wf_vblank" },
- { 60, TEST_VBLANK | TEST_DPMS | TEST_EINVAL, "wf_vblank-vs-dpms" },
- { 60, TEST_VBLANK | TEST_MODESET | TEST_EINVAL, "wf_vblank-vs-modeset" },
{ 10, TEST_FLIP | TEST_BASIC, "plain-flip" },
{ 30, TEST_FLIP | TEST_EBUSY , "busy-flip" },
{ 30, TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
@@ -1568,11 +1565,6 @@ int main(int argc, char **argv)
{ 0, TEST_ENOENT | TEST_NOEVENT, "nonexisting-fb" },
{ 10, TEST_DPMS_OFF | TEST_DPMS | TEST_VBLANK_RACE, "dpms-vs-vblank-race" },
{ 10, TEST_MODESET | TEST_VBLANK_RACE, "modeset-vs-vblank-race" },
- { 10, TEST_VBLANK | TEST_DPMS | TEST_RPM | TEST_TS_CONT, "vblank-vs-dpms-rpm" },
- { 10, TEST_VBLANK | TEST_MODESET | TEST_RPM | TEST_TS_CONT, "vblank-vs-modeset-rpm" },
- { 0, TEST_VBLANK | TEST_DPMS | TEST_SUSPEND | TEST_TS_CONT, "vblank-vs-dpms-suspend" },
- { 0, TEST_VBLANK | TEST_MODESET | TEST_SUSPEND | TEST_TS_CONT, "vblank-vs-modeset-suspend" },
- { 0, TEST_VBLANK | TEST_SUSPEND | TEST_TS_CONT, "vblank-vs-suspend" },
{ 0, TEST_BO_TOOBIG | TEST_NO_2X_OUTPUT, "bo-too-big" },
};
int i;
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH i-g-t v2 6/6] kms_vblank: Remove teardown code from cleanup_crtc
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
` (4 preceding siblings ...)
2018-01-04 14:12 ` [PATCH i-g-t v2 5/6] kms_flip: Remove redundant vblank tests Maarten Lankhorst
@ 2018-01-04 14:12 ` Maarten Lankhorst
2018-01-10 9:32 ` Daniel Vetter
2018-01-04 14:49 ` ✓ Fi.CI.BAT: success for kms_vblank: Move tests over from kms_flip. (rev2) Patchwork
` (4 subsequent siblings)
10 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
To: intel-gfx
New way of doing things is calling igt_display_reset() before any
setup code. This way if the configuration stays the same, the initial
modeset will be a noop.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_vblank.c | 11 ++---------
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 362221c03677..d2154f1c7605 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -74,6 +74,8 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
igt_display_t *display = &data->display;
igt_plane_t *primary;
+ igt_display_reset(display);
+
/* select the pipe we want to use */
igt_output_set_pipe(output, data->pipe);
@@ -95,16 +97,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
{
- igt_display_t *display = &data->display;
- igt_plane_t *primary;
-
igt_remove_fb(fd, &data->primary_fb);
-
- primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
- igt_plane_set_fb(primary, NULL);
-
- igt_output_set_pipe(output, PIPE_ANY);
- igt_display_commit(display);
}
static int wait_vblank(int fd, union drm_wait_vblank *vbl)
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* ✓ Fi.CI.BAT: success for kms_vblank: Move tests over from kms_flip. (rev2)
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
` (5 preceding siblings ...)
2018-01-04 14:12 ` [PATCH i-g-t v2 6/6] kms_vblank: Remove teardown code from cleanup_crtc Maarten Lankhorst
@ 2018-01-04 14:49 ` Patchwork
2018-01-04 16:52 ` ✓ Fi.CI.IGT: " Patchwork
` (3 subsequent siblings)
10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-01-04 14:49 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: kms_vblank: Move tests over from kms_flip. (rev2)
URL : https://patchwork.freedesktop.org/series/36006/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
6db24416fdcdf5571125f9005089241cc6ba2652 lib/gem: Reset the global seqno at the start of each test
with latest DRM-Tip kernel build CI_DRM_3598
eb3dae33ff20 drm-tip: 2018y-01m-04d-13h-53m-17s UTC integration manifest
Testlist changes:
+++ 156 lines
--- 65 lines
Test debugfs_test:
Subgroup read_all_entries:
dmesg-warn -> DMESG-FAIL (fi-elk-e7500) fdo#103989
Test gem_mmap_gtt:
Subgroup basic-small-bo-tiledx:
pass -> FAIL (fi-gdg-551) fdo#102575
Test kms_pipe_crc_basic:
Subgroup suspend-read-crc-pipe-a:
pass -> DMESG-WARN (fi-kbl-r) fdo#104172 +1
Subgroup suspend-read-crc-pipe-b:
pass -> INCOMPLETE (fi-snb-2520m) fdo#103713
Test kms_psr_sink_crc:
Subgroup psr_basic:
pass -> DMESG-WARN (fi-skl-6700hq) fdo#104260
fdo#103989 https://bugs.freedesktop.org/show_bug.cgi?id=103989
fdo#102575 https://bugs.freedesktop.org/show_bug.cgi?id=102575
fdo#104172 https://bugs.freedesktop.org/show_bug.cgi?id=104172
fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
fdo#104260 https://bugs.freedesktop.org/show_bug.cgi?id=104260
fi-bdw-5557u total:288 pass:267 dwarn:0 dfail:0 fail:0 skip:21 time:422s
fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:432s
fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:372s
fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:485s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:278s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:480s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:486s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:477s
fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:459s
fi-elk-e7500 total:224 pass:168 dwarn:9 dfail:1 fail:0 skip:45
fi-gdg-551 total:288 pass:179 dwarn:0 dfail:0 fail:1 skip:108 time:264s
fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:513s
fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:393s
fi-hsw-4770r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:406s
fi-ilk-650 total:288 pass:228 dwarn:0 dfail:0 fail:0 skip:60 time:412s
fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:449s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:414s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:461s
fi-kbl-7560u total:288 pass:268 dwarn:1 dfail:0 fail:0 skip:19 time:498s
fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:451s
fi-kbl-r total:288 pass:260 dwarn:1 dfail:0 fail:0 skip:27 time:504s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:577s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:432s
fi-skl-6600u total:288 pass:260 dwarn:1 dfail:0 fail:0 skip:27 time:517s
fi-skl-6700hq total:288 pass:261 dwarn:1 dfail:0 fail:0 skip:26 time:525s
fi-skl-6700k2 total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:496s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:485s
fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:434s
fi-snb-2520m total:245 pass:211 dwarn:0 dfail:0 fail:0 skip:33
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:401s
Blacklisted hosts:
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:562s
fi-cnl-y total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:609s
fi-glk-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:475s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_746/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* ✓ Fi.CI.IGT: success for kms_vblank: Move tests over from kms_flip. (rev2)
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
` (6 preceding siblings ...)
2018-01-04 14:49 ` ✓ Fi.CI.BAT: success for kms_vblank: Move tests over from kms_flip. (rev2) Patchwork
@ 2018-01-04 16:52 ` Patchwork
2018-01-08 13:50 ` ✗ Fi.CI.BAT: failure for kms_vblank: Move tests over from kms_flip. (rev3) Patchwork
` (2 subsequent siblings)
10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-01-04 16:52 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: kms_vblank: Move tests over from kms_flip. (rev2)
URL : https://patchwork.freedesktop.org/series/36006/
State : success
== Summary ==
Test kms_flip:
Subgroup modeset-vs-vblank-race-interruptible:
fail -> PASS (shard-hsw) fdo#103060
Test kms_frontbuffer_tracking:
Subgroup fbc-1p-offscren-pri-shrfb-draw-render:
fail -> PASS (shard-snb) fdo#101623
Subgroup fbc-1p-primscrn-pri-shrfb-draw-render:
fail -> PASS (shard-hsw) fdo#103167
Test perf:
Subgroup polling:
pass -> FAIL (shard-hsw) fdo#102252
fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
fdo#101623 https://bugs.freedesktop.org/show_bug.cgi?id=101623
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
shard-hsw total:2804 pass:1576 dwarn:1 dfail:0 fail:11 skip:1216 time:7620s
shard-snb total:2804 pass:1321 dwarn:1 dfail:0 fail:13 skip:1469 time:6530s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_746/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 i-g-t] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v3.
2018-01-04 14:12 ` [PATCH i-g-t v2 3/6] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v2 Maarten Lankhorst
@ 2018-01-08 10:23 ` Maarten Lankhorst
2018-01-10 9:30 ` Daniel Vetter
0 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-08 10:23 UTC (permalink / raw)
To: intel-gfx
There's no need to test this more than once. Add a NOHANG
flag which can be used to specify that a subtest can not
be run when hanging. If it's set on either the subtest or
the mode, the -hang test for this combination will not be
generated.
Changes since v1:
- Merge the patch that renamed HANG to NOHANG.
- Rebase after 'reorganize subtests by type'.
- Allow subtests to specify NOHANG too.
Changes since v2:
- Mark accuracy test with NOHANG, gpu reset disables interrupts,
causing the test to fail.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_flip.c | 10 +---------
tests/kms_vblank.c | 25 +++++++++++++++++++++++--
2 files changed, 24 insertions(+), 11 deletions(-)
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 7689e65b521a..50c16b0debbf 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -72,7 +72,7 @@
#define TEST_SUSPEND (1 << 26)
#define TEST_TS_CONT (1 << 27)
#define TEST_BO_TOOBIG (1 << 28)
-#define TEST_HANG_ONCE (1 << 29)
+
#define TEST_BASIC (1 << 30)
#define EVENT_FLIP (1 << 0)
@@ -1071,13 +1071,8 @@ static unsigned int wait_for_events(struct test_output *o)
static unsigned event_loop(struct test_output *o, unsigned duration_ms)
{
unsigned long start, end;
- igt_hang_t hang;
int count = 0;
- memset(&hang, 0, sizeof(hang));
- if (o->flags & TEST_HANG_ONCE)
- hang = hang_gpu(drm_fd);
-
start = gettime_us();
while (1) {
@@ -1097,8 +1092,6 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
end = gettime_us();
- unhang_gpu(drm_fd, hang);
-
/* Flush any remaining events */
if (o->pending_events)
wait_for_events(o);
@@ -1565,7 +1558,6 @@ int main(int argc, char **argv)
TEST_CHECK_TS, "flip-vs-blocking-wf-vblank" },
{ 30, TEST_FLIP | TEST_MODESET | TEST_HANG | TEST_NOEVENT, "flip-vs-modeset-vs-hang" },
{ 30, TEST_FLIP | TEST_PAN | TEST_HANG, "flip-vs-panning-vs-hang" },
- { 30, TEST_VBLANK | TEST_HANG_ONCE, "vblank-vs-hang" },
{ 1, TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING, "flip-vs-bad-tiling" },
{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index e51e96c7f061..c56b82033b75 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -54,6 +54,7 @@ typedef struct {
#define IDLE 1
#define BUSY 2
#define FORKED 4
+#define NOHANG 8
} data_t;
static double elapsed(const struct timespec *start,
@@ -119,6 +120,7 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
igt_display_t *display = &data->display;
igt_output_t *output = data->output;
+ igt_hang_t hang;
prepare_crtc(data, fd, output);
@@ -126,6 +128,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
igt_subtest_name(), kmstest_pipe_name(data->pipe),
igt_output_name(output), nchildren);
+ if (!(data->flags & NOHANG))
+ hang = igt_hang_ring(display->drm_fd, I915_EXEC_DEFAULT);
+
if (data->flags & BUSY) {
union drm_wait_vblank vbl;
@@ -148,6 +153,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
+ if (!(data->flags & NOHANG))
+ igt_post_hang_ring(fd, hang);
+
igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
@@ -316,7 +324,7 @@ igt_main
void (*func)(data_t *, int, int);
unsigned int valid;
} funcs[] = {
- { "accuracy", accuracy, IDLE },
+ { "accuracy", accuracy, IDLE | NOHANG },
{ "query", vblank_query, IDLE | FORKED | BUSY },
{ "wait", vblank_wait, IDLE | FORKED | BUSY },
{ }
@@ -354,12 +362,25 @@ igt_main
for (f = funcs; f->name; f++) {
for (m = modes; m->name; m++) {
- if (m->flags & ~f->valid)
+ if (m->flags & ~(f->valid | NOHANG))
continue;
igt_subtest_f("pipe-%s-%s-%s",
kmstest_pipe_name(data.pipe),
f->name, m->name) {
+ for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
+ data.flags = m->flags | NOHANG;
+ run_test(&data, fd, f->func);
+ }
+ }
+
+ /* Skip the -hang version if NOHANG flag is set */
+ if (f->valid & NOHANG || m->flags & NOHANG)
+ continue;
+
+ igt_subtest_f("pipe-%s-%s-%s-hang",
+ kmstest_pipe_name(data.pipe),
+ f->name, m->name) {
for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
data.flags = m->flags;
run_test(&data, fd, f->func);
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 20+ messages in thread
* ✗ Fi.CI.BAT: failure for kms_vblank: Move tests over from kms_flip. (rev3)
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
` (7 preceding siblings ...)
2018-01-04 16:52 ` ✓ Fi.CI.IGT: " Patchwork
@ 2018-01-08 13:50 ` Patchwork
2018-01-08 15:08 ` ✓ Fi.CI.BAT: success " Patchwork
2018-01-08 20:00 ` ✗ Fi.CI.IGT: warning " Patchwork
10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-01-08 13:50 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: kms_vblank: Move tests over from kms_flip. (rev3)
URL : https://patchwork.freedesktop.org/series/36006/
State : failure
== Summary ==
IGT patchset tested on top of latest successful build
d5e51a60e5cbb807bcacd2655bd4ffe90a686bbb scripts/trace.pl: Optimize event parsing and processing
with latest DRM-Tip kernel build CI_DRM_3606
d8bf435a0cf9 drm-tip: 2018y-01m-08d-09h-58m-24s UTC integration manifest
Testlist changes:
+++ 150 lines
--- 65 lines
Test gem_mmap_gtt:
Subgroup basic-small-bo-tiledx:
pass -> FAIL (fi-gdg-551) fdo#102575
Test kms_pipe_crc_basic:
Subgroup read-crc-pipe-c-frame-sequence:
pass -> FAIL (fi-skl-6700k2)
Subgroup suspend-read-crc-pipe-a:
pass -> DMESG-WARN (fi-kbl-r) fdo#104172 +1
Subgroup suspend-read-crc-pipe-b:
incomplete -> PASS (fi-snb-2520m) fdo#103713
fdo#102575 https://bugs.freedesktop.org/show_bug.cgi?id=102575
fdo#104172 https://bugs.freedesktop.org/show_bug.cgi?id=104172
fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
fi-bdw-5557u total:288 pass:267 dwarn:0 dfail:0 fail:0 skip:21 time:420s
fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:429s
fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:373s
fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:488s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:283s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:487s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:489s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:474s
fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:464s
fi-elk-e7500 total:224 pass:168 dwarn:10 dfail:0 fail:0 skip:45
fi-gdg-551 total:288 pass:179 dwarn:0 dfail:0 fail:1 skip:108 time:277s
fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:517s
fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:394s
fi-hsw-4770r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:406s
fi-ilk-650 total:288 pass:228 dwarn:0 dfail:0 fail:0 skip:60 time:414s
fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:463s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:416s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:466s
fi-kbl-7560u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:501s
fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:453s
fi-kbl-r total:288 pass:260 dwarn:1 dfail:0 fail:0 skip:27 time:500s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:587s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:433s
fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:518s
fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:530s
fi-skl-6700k2 total:288 pass:263 dwarn:0 dfail:0 fail:1 skip:24 time:494s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:477s
fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:431s
fi-snb-2520m total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:522s
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:402s
Blacklisted hosts:
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:569s
fi-cnl-y total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:608s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_752/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* ✓ Fi.CI.BAT: success for kms_vblank: Move tests over from kms_flip. (rev3)
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
` (8 preceding siblings ...)
2018-01-08 13:50 ` ✗ Fi.CI.BAT: failure for kms_vblank: Move tests over from kms_flip. (rev3) Patchwork
@ 2018-01-08 15:08 ` Patchwork
2018-01-08 20:00 ` ✗ Fi.CI.IGT: warning " Patchwork
10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-01-08 15:08 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: kms_vblank: Move tests over from kms_flip. (rev3)
URL : https://patchwork.freedesktop.org/series/36006/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
d5e51a60e5cbb807bcacd2655bd4ffe90a686bbb scripts/trace.pl: Optimize event parsing and processing
with latest DRM-Tip kernel build CI_DRM_3607
70afdd6e5dfe drm-tip: 2018y-01m-08d-13h-41m-31s UTC integration manifest
Testlist changes:
+++ 150 lines
--- 65 lines
Test debugfs_test:
Subgroup read_all_entries:
dmesg-warn -> DMESG-FAIL (fi-elk-e7500) fdo#103989
Test kms_pipe_crc_basic:
Subgroup suspend-read-crc-pipe-a:
dmesg-warn -> PASS (fi-kbl-r) fdo#104172 +1
fdo#103989 https://bugs.freedesktop.org/show_bug.cgi?id=103989
fdo#104172 https://bugs.freedesktop.org/show_bug.cgi?id=104172
fi-bdw-5557u total:288 pass:267 dwarn:0 dfail:0 fail:0 skip:21 time:423s
fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:428s
fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:375s
fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:498s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:282s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:490s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:491s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:480s
fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:471s
fi-elk-e7500 total:224 pass:168 dwarn:9 dfail:1 fail:0 skip:45
fi-gdg-551 total:288 pass:179 dwarn:0 dfail:0 fail:1 skip:108 time:276s
fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:510s
fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:393s
fi-hsw-4770r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:403s
fi-ilk-650 total:288 pass:228 dwarn:0 dfail:0 fail:0 skip:60 time:417s
fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:458s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:415s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:471s
fi-kbl-7560u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:498s
fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:456s
fi-kbl-r total:288 pass:260 dwarn:1 dfail:0 fail:0 skip:27 time:502s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:581s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:434s
fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:512s
fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:529s
fi-skl-6700k2 total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:492s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:492s
fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:432s
fi-snb-2520m total:3 pass:2 dwarn:0 dfail:0 fail:0 skip:0
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:399s
Blacklisted hosts:
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:566s
fi-glk-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:474s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_754/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* ✗ Fi.CI.IGT: warning for kms_vblank: Move tests over from kms_flip. (rev3)
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
` (9 preceding siblings ...)
2018-01-08 15:08 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2018-01-08 20:00 ` Patchwork
10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-01-08 20:00 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: kms_vblank: Move tests over from kms_flip. (rev3)
URL : https://patchwork.freedesktop.org/series/36006/
State : warning
== Summary ==
Test drv_suspend:
Subgroup sysfs-reader-hibernate:
fail -> SKIP (shard-snb) fdo#103375 +1
Test kms_frontbuffer_tracking:
Subgroup fbc-1p-offscren-pri-shrfb-draw-render:
pass -> FAIL (shard-snb) fdo#101623 +1
Test kms_flip:
Subgroup modeset-vs-vblank-race-interruptible:
fail -> PASS (shard-hsw) fdo#103060
Test kms_setmode:
Subgroup basic:
fail -> PASS (shard-hsw) fdo#99912
Test kms_render:
Subgroup gpu-blit:
pass -> WARN (shard-hsw)
Test gem_tiled_swapping:
Subgroup non-threaded:
incomplete -> PASS (shard-hsw) fdo#104218
Test gem_eio:
Subgroup in-flight-contexts:
dmesg-warn -> PASS (shard-snb) fdo#104058
fdo#103375 https://bugs.freedesktop.org/show_bug.cgi?id=103375
fdo#101623 https://bugs.freedesktop.org/show_bug.cgi?id=101623
fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
fdo#104218 https://bugs.freedesktop.org/show_bug.cgi?id=104218
fdo#104058 https://bugs.freedesktop.org/show_bug.cgi?id=104058
shard-hsw total:2798 pass:1574 dwarn:1 dfail:0 fail:9 skip:1213 time:7564s
shard-snb total:2798 pass:1319 dwarn:1 dfail:0 fail:10 skip:1468 time:6582s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_754/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests.
2018-01-04 14:12 ` [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
@ 2018-01-10 8:50 ` Daniel Vetter
0 siblings, 0 replies; 20+ messages in thread
From: Daniel Vetter @ 2018-01-10 8:50 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
On Thu, Jan 04, 2018 at 03:12:38PM +0100, Maarten Lankhorst wrote:
> With the removal of mmio flips, blt and rcs flips are no longer
> different from doing busy testing in kms_busy.
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> tests/kms_flip.c | 40 +---------------------------------------
> 1 file changed, 1 insertion(+), 39 deletions(-)
>
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index 2899f20e6c73..7689e65b521a 100644
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -45,8 +45,7 @@
> #include "igt_stats.h"
>
> #define TEST_DPMS (1 << 0)
> -#define TEST_WITH_DUMMY_BCS (1 << 1)
> -#define TEST_WITH_DUMMY_RCS (1 << 2)
> +
> #define TEST_PAN (1 << 3)
> #define TEST_MODESET (1 << 4)
> #define TEST_CHECK_TS (1 << 5)
> @@ -668,8 +667,6 @@ static unsigned int run_test_step(struct test_output *o)
> struct vblank_reply vbl_reply;
> unsigned int target_seq;
> igt_hang_t hang;
> - igt_spin_t *spin_rcs = 0;
> - igt_spin_t *spin_bcs = 0;
>
> target_seq = o->vblank_state.seq_step;
> /* Absolute waits only works once we have a frame counter. */
> @@ -691,20 +688,6 @@ static unsigned int run_test_step(struct test_output *o)
> if (!(o->flags & TEST_SINGLE_BUFFER))
> o->current_fb_id = !o->current_fb_id;
>
> - if (o->flags & TEST_WITH_DUMMY_BCS) {
> - spin_bcs = __igt_spin_batch_new(drm_fd, 0, I915_EXEC_BLT,
> - o->fb_info[o->current_fb_id].gem_handle);
> - igt_spin_batch_set_timeout(spin_bcs,
> - NSEC_PER_SEC);
> - }
> -
> - if (o->flags & TEST_WITH_DUMMY_RCS) {
> - spin_rcs = __igt_spin_batch_new(drm_fd, 0, I915_EXEC_RENDER,
> - o->fb_info[o->current_fb_id].gem_handle);
> - igt_spin_batch_set_timeout(spin_rcs,
> - NSEC_PER_SEC);
> - }
> -
> if (o->flags & TEST_FB_RECREATE)
> recreate_fb(o);
> new_fb_id = o->fb_ids[o->current_fb_id];
> @@ -809,10 +792,6 @@ static unsigned int run_test_step(struct test_output *o)
> completed_events = EVENT_VBLANK;
> }
> }
> - if (spin_rcs)
> - igt_spin_batch_free(drm_fd, spin_rcs);
> - if (spin_bcs)
> - igt_spin_batch_free(drm_fd, spin_bcs);
>
> if (do_flip && (o->flags & TEST_EBUSY))
> igt_assert(do_page_flip(o, new_fb_id, true) == -EBUSY);
> @@ -1065,10 +1044,6 @@ static unsigned int wait_for_events(struct test_output *o)
> evctx.vblank_handler = vblank_handler;
> evctx.page_flip_handler = page_flip_handler;
>
> - /* make timeout lax with the dummy load */
> - if (o->flags & (TEST_WITH_DUMMY_BCS | TEST_WITH_DUMMY_RCS))
> - timeout.tv_sec *= 60;
> -
> FD_ZERO(&fds);
> FD_SET(drm_fd, &fds);
> do {
> @@ -1099,9 +1074,6 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
> igt_hang_t hang;
> int count = 0;
>
> - if (o->flags & (TEST_WITH_DUMMY_BCS | TEST_WITH_DUMMY_RCS))
> - igt_require_gem(drm_fd);
> -
> memset(&hang, 0, sizeof(hang));
> if (o->flags & TEST_HANG_ONCE)
> hang = hang_gpu(drm_fd);
> @@ -1571,15 +1543,7 @@ int main(int argc, char **argv)
> { 30, TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
> "blocking-absolute-wf_vblank" },
> { 60, TEST_VBLANK | TEST_DPMS | TEST_EINVAL, "wf_vblank-vs-dpms" },
> - { 60, TEST_VBLANK | TEST_DPMS | TEST_WITH_DUMMY_BCS,
> - "blt-wf_vblank-vs-dpms" },
> - { 60, TEST_VBLANK | TEST_DPMS | TEST_WITH_DUMMY_RCS,
> - "rcs-wf_vblank-vs-dpms" },
> { 60, TEST_VBLANK | TEST_MODESET | TEST_EINVAL, "wf_vblank-vs-modeset" },
> - { 60, TEST_VBLANK | TEST_MODESET | TEST_WITH_DUMMY_BCS,
> - "blt-wf_vblank-vs-modeset" },
> - { 60, TEST_VBLANK | TEST_MODESET | TEST_WITH_DUMMY_RCS,
> - "rcs-wf_vblank-vs-modeset" },
> { 10, TEST_FLIP | TEST_BASIC, "plain-flip" },
> { 30, TEST_FLIP | TEST_EBUSY , "busy-flip" },
> { 30, TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
> @@ -1589,8 +1553,6 @@ int main(int argc, char **argv)
> { 30, TEST_FLIP | TEST_RMFB | TEST_MODESET , "flip-vs-rmfb" },
> { 20, TEST_FLIP | TEST_DPMS | TEST_EINVAL | TEST_BASIC, "flip-vs-dpms" },
> { 30, TEST_FLIP | TEST_PAN, "flip-vs-panning" },
> - { 60, TEST_FLIP | TEST_PAN | TEST_WITH_DUMMY_BCS, "blt-flip-vs-panning" },
> - { 60, TEST_FLIP | TEST_PAN | TEST_WITH_DUMMY_RCS, "render-flip-vs-panning" },
> { 20, TEST_FLIP | TEST_MODESET | TEST_EINVAL | TEST_BASIC, "flip-vs-modeset" },
> { 30, TEST_FLIP | TEST_VBLANK_EXPIRED_SEQ,
> "flip-vs-expired-vblank" },
> --
> 2.15.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe
2018-01-04 14:12 ` [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe Maarten Lankhorst
@ 2018-01-10 8:57 ` Daniel Vetter
2018-01-10 9:04 ` Daniel Vetter
0 siblings, 1 reply; 20+ messages in thread
From: Daniel Vetter @ 2018-01-10 8:57 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
On Thu, Jan 04, 2018 at 03:12:39PM +0100, Maarten Lankhorst wrote:
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> tests/kms_vblank.c | 93 ++++++++++++++++++++++++++++--------------------------
> 1 file changed, 49 insertions(+), 44 deletions(-)
>
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index 342e4ef23b97..e51e96c7f061 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -118,49 +118,41 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
> int nchildren =
> data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
> igt_display_t *display = &data->display;
> - igt_output_t *output;
> - enum pipe p;
> + igt_output_t *output = data->output;
>
> - for_each_pipe_with_valid_output(display, p, output) {
> - data->pipe = p;
> - prepare_crtc(data, fd, output);
> + prepare_crtc(data, fd, output);
>
> - igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
> - igt_subtest_name(),
> - kmstest_pipe_name(data->pipe),
> - igt_output_name(output),
> - nchildren);
> -
> - if (data->flags & BUSY) {
> - union drm_wait_vblank vbl;
> -
> - memset(&vbl, 0, sizeof(vbl));
> - vbl.request.type =
> - DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
> - vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
> - vbl.request.sequence = 120 + 12;
> - igt_assert_eq(wait_vblank(fd, &vbl), 0);
> - }
> + igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
> + igt_subtest_name(), kmstest_pipe_name(data->pipe),
> + igt_output_name(output), nchildren);
>
> - igt_fork(child, nchildren)
> - testfunc(data, fd, nchildren);
> - igt_waitchildren();
> -
> - if (data->flags & BUSY) {
> - struct drm_event_vblank buf;
> - igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
> - }
> + if (data->flags & BUSY) {
> + union drm_wait_vblank vbl;
>
> - igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
> + memset(&vbl, 0, sizeof(vbl));
> + vbl.request.type =
> + DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
> + vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
> + vbl.request.sequence = 120 + 12;
> + igt_assert_eq(wait_vblank(fd, &vbl), 0);
> + }
>
> - igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> - igt_subtest_name(),
> - kmstest_pipe_name(data->pipe),
> - igt_output_name(output));
> + igt_fork(child, nchildren)
> + testfunc(data, fd, nchildren);
> + igt_waitchildren();
>
> - /* cleanup what prepare_crtc() has done */
> - cleanup_crtc(data, fd, output);
> + if (data->flags & BUSY) {
> + struct drm_event_vblank buf;
> + igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
> }
> +
> + igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
> +
> + igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> + igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
> +
> + /* cleanup what prepare_crtc() has done */
> + cleanup_crtc(data, fd, output);
> }
>
> static void crtc_id_subtest(data_t *data, int fd)
> @@ -329,6 +321,8 @@ igt_main
> { "wait", vblank_wait, IDLE | FORKED | BUSY },
> { }
> }, *f;
> + enum pipe p;
> +
> const struct {
> const char *name;
> unsigned int flags;
> @@ -352,14 +346,25 @@ igt_main
> igt_subtest("crtc-id")
> crtc_id_subtest(&data, fd);
>
> - for (f = funcs; f->name; f++) {
> - for (m = modes; m->name; m++) {
> - if (m->flags & ~f->valid)
> - continue;
> -
> - igt_subtest_f("%s-%s", f->name, m->name) {
> - data.flags = m->flags;
> - run_test(&data, fd, f->func);
> + for_each_pipe_static(p) igt_subtest_group {
Imo newline and {} and more indent, I was confused for a bit looking where
you have the igt_subtest_group :-)
Also we need to give the cibuglog folks a headups before pushing ofc.
With the bikeshed addressed:
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> + igt_fixture
> + igt_display_require_output_on_pipe(&data.display, p);
> +
> + data.pipe = p;
> +
> + for (f = funcs; f->name; f++) {
> + for (m = modes; m->name; m++) {
> + if (m->flags & ~f->valid)
> + continue;
> +
> + igt_subtest_f("pipe-%s-%s-%s",
> + kmstest_pipe_name(data.pipe),
> + f->name, m->name) {
> + for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> + data.flags = m->flags;
> + run_test(&data, fd, f->func);
> + }
> + }
> }
> }
> }
> --
> 2.15.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe
2018-01-10 8:57 ` Daniel Vetter
@ 2018-01-10 9:04 ` Daniel Vetter
2018-01-10 10:59 ` Maarten Lankhorst
0 siblings, 1 reply; 20+ messages in thread
From: Daniel Vetter @ 2018-01-10 9:04 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
On Wed, Jan 10, 2018 at 09:57:47AM +0100, Daniel Vetter wrote:
> On Thu, Jan 04, 2018 at 03:12:39PM +0100, Maarten Lankhorst wrote:
> > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > ---
> > tests/kms_vblank.c | 93 ++++++++++++++++++++++++++++--------------------------
> > 1 file changed, 49 insertions(+), 44 deletions(-)
> >
> > diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> > index 342e4ef23b97..e51e96c7f061 100644
> > --- a/tests/kms_vblank.c
> > +++ b/tests/kms_vblank.c
> > @@ -118,49 +118,41 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
> > int nchildren =
> > data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
> > igt_display_t *display = &data->display;
> > - igt_output_t *output;
> > - enum pipe p;
> > + igt_output_t *output = data->output;
> >
> > - for_each_pipe_with_valid_output(display, p, output) {
> > - data->pipe = p;
> > - prepare_crtc(data, fd, output);
> > + prepare_crtc(data, fd, output);
> >
> > - igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
> > - igt_subtest_name(),
> > - kmstest_pipe_name(data->pipe),
> > - igt_output_name(output),
> > - nchildren);
> > -
> > - if (data->flags & BUSY) {
> > - union drm_wait_vblank vbl;
> > -
> > - memset(&vbl, 0, sizeof(vbl));
> > - vbl.request.type =
> > - DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
> > - vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
> > - vbl.request.sequence = 120 + 12;
> > - igt_assert_eq(wait_vblank(fd, &vbl), 0);
> > - }
> > + igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
> > + igt_subtest_name(), kmstest_pipe_name(data->pipe),
> > + igt_output_name(output), nchildren);
> >
> > - igt_fork(child, nchildren)
> > - testfunc(data, fd, nchildren);
> > - igt_waitchildren();
> > -
> > - if (data->flags & BUSY) {
> > - struct drm_event_vblank buf;
> > - igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
> > - }
> > + if (data->flags & BUSY) {
> > + union drm_wait_vblank vbl;
> >
> > - igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
> > + memset(&vbl, 0, sizeof(vbl));
> > + vbl.request.type =
> > + DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
> > + vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
> > + vbl.request.sequence = 120 + 12;
> > + igt_assert_eq(wait_vblank(fd, &vbl), 0);
> > + }
> >
> > - igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> > - igt_subtest_name(),
> > - kmstest_pipe_name(data->pipe),
> > - igt_output_name(output));
> > + igt_fork(child, nchildren)
> > + testfunc(data, fd, nchildren);
> > + igt_waitchildren();
> >
> > - /* cleanup what prepare_crtc() has done */
> > - cleanup_crtc(data, fd, output);
> > + if (data->flags & BUSY) {
> > + struct drm_event_vblank buf;
> > + igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
> > }
> > +
> > + igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
> > +
> > + igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> > + igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
> > +
> > + /* cleanup what prepare_crtc() has done */
> > + cleanup_crtc(data, fd, output);
> > }
> >
> > static void crtc_id_subtest(data_t *data, int fd)
> > @@ -329,6 +321,8 @@ igt_main
> > { "wait", vblank_wait, IDLE | FORKED | BUSY },
> > { }
> > }, *f;
> > + enum pipe p;
> > +
> > const struct {
> > const char *name;
> > unsigned int flags;
> > @@ -352,14 +346,25 @@ igt_main
> > igt_subtest("crtc-id")
> > crtc_id_subtest(&data, fd);
> >
> > - for (f = funcs; f->name; f++) {
> > - for (m = modes; m->name; m++) {
> > - if (m->flags & ~f->valid)
> > - continue;
> > -
> > - igt_subtest_f("%s-%s", f->name, m->name) {
> > - data.flags = m->flags;
> > - run_test(&data, fd, f->func);
> > + for_each_pipe_static(p) igt_subtest_group {
>
> Imo newline and {} and more indent, I was confused for a bit looking where
> you have the igt_subtest_group :-)
>
> Also we need to give the cibuglog folks a headups before pushing ofc.
>
> With the bikeshed addressed:
>
> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>
>
> > + igt_fixture
> > + igt_display_require_output_on_pipe(&data.display, p);
> > +
> > + data.pipe = p;
> > +
> > + for (f = funcs; f->name; f++) {
> > + for (m = modes; m->name; m++) {
> > + if (m->flags & ~f->valid)
> > + continue;
> > +
> > + igt_subtest_f("pipe-%s-%s-%s",
> > + kmstest_pipe_name(data.pipe),
> > + f->name, m->name) {
> > + for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> > + data.flags = m->flags;
> > + run_test(&data, fd, f->func);
> > + }
Ok I totally overlooked this one - looping over all output combos still
means tons of modesets within each subtest. How does that make stuff
faster/better?
-Daniel
> > + }
> > }
> > }
> > }
> > --
> > 2.15.1
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v3 i-g-t] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v3.
2018-01-08 10:23 ` [PATCH v3 i-g-t] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v3 Maarten Lankhorst
@ 2018-01-10 9:30 ` Daniel Vetter
0 siblings, 0 replies; 20+ messages in thread
From: Daniel Vetter @ 2018-01-10 9:30 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
On Mon, Jan 08, 2018 at 11:23:14AM +0100, Maarten Lankhorst wrote:
> There's no need to test this more than once. Add a NOHANG
> flag which can be used to specify that a subtest can not
> be run when hanging. If it's set on either the subtest or
> the mode, the -hang test for this combination will not be
> generated.
>
> Changes since v1:
> - Merge the patch that renamed HANG to NOHANG.
> - Rebase after 'reorganize subtests by type'.
> - Allow subtests to specify NOHANG too.
> Changes since v2:
> - Mark accuracy test with NOHANG, gpu reset disables interrupts,
> causing the test to fail.
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> tests/kms_flip.c | 10 +---------
> tests/kms_vblank.c | 25 +++++++++++++++++++++++--
> 2 files changed, 24 insertions(+), 11 deletions(-)
>
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index 7689e65b521a..50c16b0debbf 100644
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -72,7 +72,7 @@
> #define TEST_SUSPEND (1 << 26)
> #define TEST_TS_CONT (1 << 27)
> #define TEST_BO_TOOBIG (1 << 28)
> -#define TEST_HANG_ONCE (1 << 29)
> +
> #define TEST_BASIC (1 << 30)
>
> #define EVENT_FLIP (1 << 0)
> @@ -1071,13 +1071,8 @@ static unsigned int wait_for_events(struct test_output *o)
> static unsigned event_loop(struct test_output *o, unsigned duration_ms)
> {
> unsigned long start, end;
> - igt_hang_t hang;
> int count = 0;
>
> - memset(&hang, 0, sizeof(hang));
> - if (o->flags & TEST_HANG_ONCE)
> - hang = hang_gpu(drm_fd);
> -
> start = gettime_us();
>
> while (1) {
> @@ -1097,8 +1092,6 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
>
> end = gettime_us();
>
> - unhang_gpu(drm_fd, hang);
> -
> /* Flush any remaining events */
> if (o->pending_events)
> wait_for_events(o);
> @@ -1565,7 +1558,6 @@ int main(int argc, char **argv)
> TEST_CHECK_TS, "flip-vs-blocking-wf-vblank" },
> { 30, TEST_FLIP | TEST_MODESET | TEST_HANG | TEST_NOEVENT, "flip-vs-modeset-vs-hang" },
> { 30, TEST_FLIP | TEST_PAN | TEST_HANG, "flip-vs-panning-vs-hang" },
> - { 30, TEST_VBLANK | TEST_HANG_ONCE, "vblank-vs-hang" },
> { 1, TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING, "flip-vs-bad-tiling" },
>
> { 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index e51e96c7f061..c56b82033b75 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -54,6 +54,7 @@ typedef struct {
> #define IDLE 1
> #define BUSY 2
> #define FORKED 4
> +#define NOHANG 8
> } data_t;
>
> static double elapsed(const struct timespec *start,
> @@ -119,6 +120,7 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
> data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
> igt_display_t *display = &data->display;
> igt_output_t *output = data->output;
> + igt_hang_t hang;
>
> prepare_crtc(data, fd, output);
>
> @@ -126,6 +128,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
> igt_subtest_name(), kmstest_pipe_name(data->pipe),
> igt_output_name(output), nchildren);
>
> + if (!(data->flags & NOHANG))
> + hang = igt_hang_ring(display->drm_fd, I915_EXEC_DEFAULT);
> +
> if (data->flags & BUSY) {
> union drm_wait_vblank vbl;
>
> @@ -148,6 +153,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
>
> igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
>
> + if (!(data->flags & NOHANG))
> + igt_post_hang_ring(fd, hang);
> +
> igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
>
> @@ -316,7 +324,7 @@ igt_main
> void (*func)(data_t *, int, int);
> unsigned int valid;
> } funcs[] = {
> - { "accuracy", accuracy, IDLE },
> + { "accuracy", accuracy, IDLE | NOHANG },
Maybe a comment here that gpu hangs can block the vblank query for too
long and so affect accuracy? Documenting the reasons for why we have
NOHANG is always good.
> { "query", vblank_query, IDLE | FORKED | BUSY },
> { "wait", vblank_wait, IDLE | FORKED | BUSY },
> { }
> @@ -354,12 +362,25 @@ igt_main
>
> for (f = funcs; f->name; f++) {
> for (m = modes; m->name; m++) {
> - if (m->flags & ~f->valid)
> + if (m->flags & ~(f->valid | NOHANG))
> continue;
>
> igt_subtest_f("pipe-%s-%s-%s",
> kmstest_pipe_name(data.pipe),
> f->name, m->name) {
> + for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> + data.flags = m->flags | NOHANG;
> + run_test(&data, fd, f->func);
> + }
> + }
> +
> + /* Skip the -hang version if NOHANG flag is set */
> + if (f->valid & NOHANG || m->flags & NOHANG)
> + continue;
> +
> + igt_subtest_f("pipe-%s-%s-%s-hang",
> + kmstest_pipe_name(data.pipe),
> + f->name, m->name) {
> for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> data.flags = m->flags;
> run_test(&data, fd, f->func);
Imo extract this into a helper, it nests way too deeply. But bikeshed for
another patch.
With the NOHANG comment added:
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> --
> 2.15.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH i-g-t v2 6/6] kms_vblank: Remove teardown code from cleanup_crtc
2018-01-04 14:12 ` [PATCH i-g-t v2 6/6] kms_vblank: Remove teardown code from cleanup_crtc Maarten Lankhorst
@ 2018-01-10 9:32 ` Daniel Vetter
0 siblings, 0 replies; 20+ messages in thread
From: Daniel Vetter @ 2018-01-10 9:32 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
On Thu, Jan 04, 2018 at 03:12:43PM +0100, Maarten Lankhorst wrote:
> New way of doing things is calling igt_display_reset() before any
> setup code. This way if the configuration stays the same, the initial
> modeset will be a noop.
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Also for the remaining patches:
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> tests/kms_vblank.c | 11 ++---------
> 1 file changed, 2 insertions(+), 9 deletions(-)
>
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index 362221c03677..d2154f1c7605 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -74,6 +74,8 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
> igt_display_t *display = &data->display;
> igt_plane_t *primary;
>
> + igt_display_reset(display);
> +
> /* select the pipe we want to use */
> igt_output_set_pipe(output, data->pipe);
>
> @@ -95,16 +97,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
>
> static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
> {
> - igt_display_t *display = &data->display;
> - igt_plane_t *primary;
> -
> igt_remove_fb(fd, &data->primary_fb);
> -
> - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> - igt_plane_set_fb(primary, NULL);
> -
> - igt_output_set_pipe(output, PIPE_ANY);
> - igt_display_commit(display);
> }
>
> static int wait_vblank(int fd, union drm_wait_vblank *vbl)
> --
> 2.15.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe
2018-01-10 9:04 ` Daniel Vetter
@ 2018-01-10 10:59 ` Maarten Lankhorst
2018-01-10 12:57 ` Daniel Vetter
0 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-10 10:59 UTC (permalink / raw)
To: Daniel Vetter; +Cc: intel-gfx
Op 10-01-18 om 10:04 schreef Daniel Vetter:
> On Wed, Jan 10, 2018 at 09:57:47AM +0100, Daniel Vetter wrote:
>> On Thu, Jan 04, 2018 at 03:12:39PM +0100, Maarten Lankhorst wrote:
>>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>>> ---
>>> tests/kms_vblank.c | 93 ++++++++++++++++++++++++++++--------------------------
>>> 1 file changed, 49 insertions(+), 44 deletions(-)
>>>
>>> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
>>> index 342e4ef23b97..e51e96c7f061 100644
>>> --- a/tests/kms_vblank.c
>>> +++ b/tests/kms_vblank.c
>>> @@ -118,49 +118,41 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
>>> int nchildren =
>>> data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
>>> igt_display_t *display = &data->display;
>>> - igt_output_t *output;
>>> - enum pipe p;
>>> + igt_output_t *output = data->output;
>>>
>>> - for_each_pipe_with_valid_output(display, p, output) {
>>> - data->pipe = p;
>>> - prepare_crtc(data, fd, output);
>>> + prepare_crtc(data, fd, output);
>>>
>>> - igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
>>> - igt_subtest_name(),
>>> - kmstest_pipe_name(data->pipe),
>>> - igt_output_name(output),
>>> - nchildren);
>>> -
>>> - if (data->flags & BUSY) {
>>> - union drm_wait_vblank vbl;
>>> -
>>> - memset(&vbl, 0, sizeof(vbl));
>>> - vbl.request.type =
>>> - DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
>>> - vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
>>> - vbl.request.sequence = 120 + 12;
>>> - igt_assert_eq(wait_vblank(fd, &vbl), 0);
>>> - }
>>> + igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
>>> + igt_subtest_name(), kmstest_pipe_name(data->pipe),
>>> + igt_output_name(output), nchildren);
>>>
>>> - igt_fork(child, nchildren)
>>> - testfunc(data, fd, nchildren);
>>> - igt_waitchildren();
>>> -
>>> - if (data->flags & BUSY) {
>>> - struct drm_event_vblank buf;
>>> - igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
>>> - }
>>> + if (data->flags & BUSY) {
>>> + union drm_wait_vblank vbl;
>>>
>>> - igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
>>> + memset(&vbl, 0, sizeof(vbl));
>>> + vbl.request.type =
>>> + DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
>>> + vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
>>> + vbl.request.sequence = 120 + 12;
>>> + igt_assert_eq(wait_vblank(fd, &vbl), 0);
>>> + }
>>>
>>> - igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
>>> - igt_subtest_name(),
>>> - kmstest_pipe_name(data->pipe),
>>> - igt_output_name(output));
>>> + igt_fork(child, nchildren)
>>> + testfunc(data, fd, nchildren);
>>> + igt_waitchildren();
>>>
>>> - /* cleanup what prepare_crtc() has done */
>>> - cleanup_crtc(data, fd, output);
>>> + if (data->flags & BUSY) {
>>> + struct drm_event_vblank buf;
>>> + igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
>>> }
>>> +
>>> + igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
>>> +
>>> + igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
>>> + igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
>>> +
>>> + /* cleanup what prepare_crtc() has done */
>>> + cleanup_crtc(data, fd, output);
>>> }
>>>
>>> static void crtc_id_subtest(data_t *data, int fd)
>>> @@ -329,6 +321,8 @@ igt_main
>>> { "wait", vblank_wait, IDLE | FORKED | BUSY },
>>> { }
>>> }, *f;
>>> + enum pipe p;
>>> +
>>> const struct {
>>> const char *name;
>>> unsigned int flags;
>>> @@ -352,14 +346,25 @@ igt_main
>>> igt_subtest("crtc-id")
>>> crtc_id_subtest(&data, fd);
>>>
>>> - for (f = funcs; f->name; f++) {
>>> - for (m = modes; m->name; m++) {
>>> - if (m->flags & ~f->valid)
>>> - continue;
>>> -
>>> - igt_subtest_f("%s-%s", f->name, m->name) {
>>> - data.flags = m->flags;
>>> - run_test(&data, fd, f->func);
>>> + for_each_pipe_static(p) igt_subtest_group {
>> Imo newline and {} and more indent, I was confused for a bit looking where
>> you have the igt_subtest_group :-)
>>
>> Also we need to give the cibuglog folks a headups before pushing ofc.
>>
>> With the bikeshed addressed:
>>
>> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>>
>>
>>> + igt_fixture
>>> + igt_display_require_output_on_pipe(&data.display, p);
>>> +
>>> + data.pipe = p;
>>> +
>>> + for (f = funcs; f->name; f++) {
>>> + for (m = modes; m->name; m++) {
>>> + if (m->flags & ~f->valid)
>>> + continue;
>>> +
>>> + igt_subtest_f("pipe-%s-%s-%s",
>>> + kmstest_pipe_name(data.pipe),
>>> + f->name, m->name) {
>>> + for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
>>> + data.flags = m->flags;
>>> + run_test(&data, fd, f->func);
>>> + }
> Ok I totally overlooked this one - looping over all output combos still
> means tons of modesets within each subtest. How does that make stuff
> faster/better?
> -Daniel
This is a temporary problem, we will need to add a for_single_valid_output_on_pipe macro in the future and then convert each caller over to it.
It's still better than running the test for a fixed amount of time, multiple times, which is what kms_flip did..
~Maarten
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe
2018-01-10 10:59 ` Maarten Lankhorst
@ 2018-01-10 12:57 ` Daniel Vetter
0 siblings, 0 replies; 20+ messages in thread
From: Daniel Vetter @ 2018-01-10 12:57 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
On Wed, Jan 10, 2018 at 11:59:34AM +0100, Maarten Lankhorst wrote:
> Op 10-01-18 om 10:04 schreef Daniel Vetter:
> > On Wed, Jan 10, 2018 at 09:57:47AM +0100, Daniel Vetter wrote:
> >> On Thu, Jan 04, 2018 at 03:12:39PM +0100, Maarten Lankhorst wrote:
> >>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> >>> ---
> >>> tests/kms_vblank.c | 93 ++++++++++++++++++++++++++++--------------------------
> >>> 1 file changed, 49 insertions(+), 44 deletions(-)
> >>>
> >>> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> >>> index 342e4ef23b97..e51e96c7f061 100644
> >>> --- a/tests/kms_vblank.c
> >>> +++ b/tests/kms_vblank.c
> >>> @@ -118,49 +118,41 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
> >>> int nchildren =
> >>> data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
> >>> igt_display_t *display = &data->display;
> >>> - igt_output_t *output;
> >>> - enum pipe p;
> >>> + igt_output_t *output = data->output;
> >>>
> >>> - for_each_pipe_with_valid_output(display, p, output) {
> >>> - data->pipe = p;
> >>> - prepare_crtc(data, fd, output);
> >>> + prepare_crtc(data, fd, output);
> >>>
> >>> - igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
> >>> - igt_subtest_name(),
> >>> - kmstest_pipe_name(data->pipe),
> >>> - igt_output_name(output),
> >>> - nchildren);
> >>> -
> >>> - if (data->flags & BUSY) {
> >>> - union drm_wait_vblank vbl;
> >>> -
> >>> - memset(&vbl, 0, sizeof(vbl));
> >>> - vbl.request.type =
> >>> - DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
> >>> - vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
> >>> - vbl.request.sequence = 120 + 12;
> >>> - igt_assert_eq(wait_vblank(fd, &vbl), 0);
> >>> - }
> >>> + igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
> >>> + igt_subtest_name(), kmstest_pipe_name(data->pipe),
> >>> + igt_output_name(output), nchildren);
> >>>
> >>> - igt_fork(child, nchildren)
> >>> - testfunc(data, fd, nchildren);
> >>> - igt_waitchildren();
> >>> -
> >>> - if (data->flags & BUSY) {
> >>> - struct drm_event_vblank buf;
> >>> - igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
> >>> - }
> >>> + if (data->flags & BUSY) {
> >>> + union drm_wait_vblank vbl;
> >>>
> >>> - igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
> >>> + memset(&vbl, 0, sizeof(vbl));
> >>> + vbl.request.type =
> >>> + DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
> >>> + vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
> >>> + vbl.request.sequence = 120 + 12;
> >>> + igt_assert_eq(wait_vblank(fd, &vbl), 0);
> >>> + }
> >>>
> >>> - igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> >>> - igt_subtest_name(),
> >>> - kmstest_pipe_name(data->pipe),
> >>> - igt_output_name(output));
> >>> + igt_fork(child, nchildren)
> >>> + testfunc(data, fd, nchildren);
> >>> + igt_waitchildren();
> >>>
> >>> - /* cleanup what prepare_crtc() has done */
> >>> - cleanup_crtc(data, fd, output);
> >>> + if (data->flags & BUSY) {
> >>> + struct drm_event_vblank buf;
> >>> + igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
> >>> }
> >>> +
> >>> + igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
> >>> +
> >>> + igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> >>> + igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
> >>> +
> >>> + /* cleanup what prepare_crtc() has done */
> >>> + cleanup_crtc(data, fd, output);
> >>> }
> >>>
> >>> static void crtc_id_subtest(data_t *data, int fd)
> >>> @@ -329,6 +321,8 @@ igt_main
> >>> { "wait", vblank_wait, IDLE | FORKED | BUSY },
> >>> { }
> >>> }, *f;
> >>> + enum pipe p;
> >>> +
> >>> const struct {
> >>> const char *name;
> >>> unsigned int flags;
> >>> @@ -352,14 +346,25 @@ igt_main
> >>> igt_subtest("crtc-id")
> >>> crtc_id_subtest(&data, fd);
> >>>
> >>> - for (f = funcs; f->name; f++) {
> >>> - for (m = modes; m->name; m++) {
> >>> - if (m->flags & ~f->valid)
> >>> - continue;
> >>> -
> >>> - igt_subtest_f("%s-%s", f->name, m->name) {
> >>> - data.flags = m->flags;
> >>> - run_test(&data, fd, f->func);
> >>> + for_each_pipe_static(p) igt_subtest_group {
> >> Imo newline and {} and more indent, I was confused for a bit looking where
> >> you have the igt_subtest_group :-)
> >>
> >> Also we need to give the cibuglog folks a headups before pushing ofc.
> >>
> >> With the bikeshed addressed:
> >>
> >> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> >>
> >>
> >>> + igt_fixture
> >>> + igt_display_require_output_on_pipe(&data.display, p);
> >>> +
> >>> + data.pipe = p;
> >>> +
> >>> + for (f = funcs; f->name; f++) {
> >>> + for (m = modes; m->name; m++) {
> >>> + if (m->flags & ~f->valid)
> >>> + continue;
> >>> +
> >>> + igt_subtest_f("pipe-%s-%s-%s",
> >>> + kmstest_pipe_name(data.pipe),
> >>> + f->name, m->name) {
> >>> + for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> >>> + data.flags = m->flags;
> >>> + run_test(&data, fd, f->func);
> >>> + }
> > Ok I totally overlooked this one - looping over all output combos still
> > means tons of modesets within each subtest. How does that make stuff
> > faster/better?
> > -Daniel
> This is a temporary problem, we will need to add a
> for_single_valid_output_on_pipe macro in the future and then convert
> each caller over to it.
>
> It's still better than running the test for a fixed amount of time,
> multiple times, which is what kms_flip did..
Well for vblank timing that actually changes depending upon mode and
output (somewhat). But maybe we just need to have 1 (and really only 1)
mode timing tests which goes through all the outputs and every mode and
makes sure the timing is accurate. But then maybe not over all the pipes.
I think kms_setmode was the start for that once, but kinda didn't go that
far.
Either way, different issue.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2018-01-10 12:57 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
2018-01-10 8:50 ` Daniel Vetter
2018-01-04 14:12 ` [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe Maarten Lankhorst
2018-01-10 8:57 ` Daniel Vetter
2018-01-10 9:04 ` Daniel Vetter
2018-01-10 10:59 ` Maarten Lankhorst
2018-01-10 12:57 ` Daniel Vetter
2018-01-04 14:12 ` [PATCH i-g-t v2 3/6] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v2 Maarten Lankhorst
2018-01-08 10:23 ` [PATCH v3 i-g-t] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v3 Maarten Lankhorst
2018-01-10 9:30 ` Daniel Vetter
2018-01-04 14:12 ` [PATCH i-g-t v2 4/6] kms_vblank: Add tests implemented in kms_flip Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 5/6] kms_flip: Remove redundant vblank tests Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 6/6] kms_vblank: Remove teardown code from cleanup_crtc Maarten Lankhorst
2018-01-10 9:32 ` Daniel Vetter
2018-01-04 14:49 ` ✓ Fi.CI.BAT: success for kms_vblank: Move tests over from kms_flip. (rev2) Patchwork
2018-01-04 16:52 ` ✓ Fi.CI.IGT: " Patchwork
2018-01-08 13:50 ` ✗ Fi.CI.BAT: failure for kms_vblank: Move tests over from kms_flip. (rev3) Patchwork
2018-01-08 15:08 ` ✓ Fi.CI.BAT: success " Patchwork
2018-01-08 20:00 ` ✗ Fi.CI.IGT: warning " Patchwork
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.