* [igt-dev] [PATCH i-g-t] tests: Check and skip tests when driver don't have display enabled
@ 2018-09-07 0:44 José Roberto de Souza
2018-09-07 1:53 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: José Roberto de Souza @ 2018-09-07 0:44 UTC (permalink / raw)
To: igt-dev; +Cc: Jani Nikula
Right now i915 is not doing the full job to complete disable display
when i915.disable_display parameters is set, when that is completed
it will cause several tests to fail, so here skiping all the tests
that depends on modeset or display block when those are not
available.
Cc: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
lib/igt_kms.c | 20 ++++++++++++++++++++
lib/igt_kms.h | 1 +
tests/debugfs_test.c | 1 +
tests/gem_exec_nop.c | 1 +
tests/kms_3d.c | 1 +
tests/kms_addfb_basic.c | 4 +++-
tests/kms_atomic.c | 1 +
tests/kms_atomic_interruptible.c | 1 +
tests/kms_available_modes_crc.c | 1 +
tests/kms_busy.c | 1 +
tests/kms_ccs.c | 1 +
tests/kms_chamelium.c | 1 +
tests/kms_chv_cursor_fail.c | 1 +
tests/kms_color.c | 1 +
tests/kms_concurrent.c | 1 +
tests/kms_crtc_background_color.c | 1 +
tests/kms_cursor_crc.c | 1 +
tests/kms_cursor_legacy.c | 1 +
tests/kms_draw_crc.c | 1 +
tests/kms_fbcon_fbt.c | 1 +
tests/kms_fence_pin_leak.c | 1 +
tests/kms_flip.c | 1 +
tests/kms_flip_event_leak.c | 1 +
tests/kms_flip_tiling.c | 1 +
tests/kms_force_connector_basic.c | 1 +
tests/kms_frontbuffer_tracking.c | 1 +
tests/kms_getfb.c | 4 +++-
tests/kms_hdmi_inject.c | 1 +
tests/kms_invalid_dotclock.c | 1 +
tests/kms_legacy_colorkey.c | 1 +
tests/kms_mmap_write_crc.c | 1 +
tests/kms_panel_fitting.c | 1 +
tests/kms_pipe_b_c_ivb.c | 1 +
tests/kms_pipe_crc_basic.c | 1 +
tests/kms_plane.c | 1 +
tests/kms_plane_lowres.c | 1 +
tests/kms_plane_multiple.c | 1 +
tests/kms_plane_scaling.c | 1 +
tests/kms_properties.c | 1 +
tests/kms_psr.c | 1 +
tests/kms_pwrite_crc.c | 1 +
tests/kms_rmfb.c | 1 +
tests/kms_rotation_crc.c | 1 +
tests/kms_setmode.c | 1 +
tests/kms_sysfs_edid_timing.c | 5 +++++
tests/kms_tv_load_detect.c | 1 +
tests/kms_universal_plane.c | 1 +
tests/kms_vblank.c | 1 +
tests/perf_pmu.c | 1 +
tests/pm_backlight.c | 5 ++++-
tests/pm_lpsp.c | 1 +
tests/pm_rpm.c | 1 +
tests/prime_vgem.c | 2 ++
tests/testdisplay.c | 1 +
54 files changed, 85 insertions(+), 3 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 62d84684..7578a10b 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -2018,6 +2018,26 @@ int igt_display_get_n_pipes(igt_display_t *display)
return display->n_pipes;
}
+/**
+ * igt_display_require_output:
+ * @drm_fd: a drm file descriptor
+ *
+ * Checks if driver supports modeset and have display enabled.
+ */
+void igt_require_display(int fd)
+{
+ drmModeRes *resources;
+ int pipes;
+
+ resources = drmModeGetResources(fd);
+ igt_require_f(resources, "drm driver do not support modeset\n");
+
+ pipes = resources->count_crtcs;
+ drmModeFreeResources(resources);
+
+ igt_require_f(pipes > 0, "drm driver without display hardware\n");
+}
+
/**
* igt_display_require_output:
* @display: A pointer to an #igt_display_t structure
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 3a12f278..037bcb23 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -388,6 +388,7 @@ void igt_display_commit_atomic(igt_display_t *display, uint32_t flags, void *use
int igt_display_try_commit2(igt_display_t *display, enum igt_commit_style s);
int igt_display_drop_events(igt_display_t *display);
int igt_display_get_n_pipes(igt_display_t *display);
+void igt_require_display(int fd);
void igt_display_require_output(igt_display_t *display);
void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
diff --git a/tests/debugfs_test.c b/tests/debugfs_test.c
index 2e87e442..6d77ee72 100644
--- a/tests/debugfs_test.c
+++ b/tests/debugfs_test.c
@@ -99,6 +99,7 @@ igt_main
igt_fixture {
fd = drm_open_driver_master(DRIVER_INTEL);
igt_require_gem(fd);
+ igt_require_display(fd);
debugfs = igt_debugfs_dir(fd);
kmstest_set_vt_graphics_mode();
diff --git a/tests/gem_exec_nop.c b/tests/gem_exec_nop.c
index 74d27522..1cd3d70d 100644
--- a/tests/gem_exec_nop.c
+++ b/tests/gem_exec_nop.c
@@ -279,6 +279,7 @@ static void headless(int fd, uint32_t handle)
drmModeRes *res;
double n_display, n_headless;
+ igt_require_display(fd);
res = drmModeGetResources(fd);
igt_assert(res);
diff --git a/tests/kms_3d.c b/tests/kms_3d.c
index bfc981ee..830b3321 100644
--- a/tests/kms_3d.c
+++ b/tests/kms_3d.c
@@ -36,6 +36,7 @@ igt_simple_main
int mode_count, connector_id;
drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(drm_fd);
res = drmModeGetResources(drm_fd);
igt_assert(drmSetClientCap(drm_fd, DRM_CLIENT_CAP_STEREO_3D, 1) >= 0);
diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
index ce48d24f..ce4caa5e 100644
--- a/tests/kms_addfb_basic.c
+++ b/tests/kms_addfb_basic.c
@@ -671,8 +671,10 @@ int fd;
igt_main
{
- igt_fixture
+ igt_fixture {
fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(fd);
+ }
invalid_tests(fd);
diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
index ac02baf0..6998a116 100644
--- a/tests/kms_atomic.c
+++ b/tests/kms_atomic.c
@@ -868,6 +868,7 @@ igt_main
igt_fixture {
display.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(display.drm_fd);
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_atomic_interruptible.c b/tests/kms_atomic_interruptible.c
index 64a00559..d3182d62 100644
--- a/tests/kms_atomic_interruptible.c
+++ b/tests/kms_atomic_interruptible.c
@@ -276,6 +276,7 @@ igt_main
igt_fixture {
display.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(display.drm_fd);
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_available_modes_crc.c b/tests/kms_available_modes_crc.c
index b67b4f83..f7eb8214 100644
--- a/tests/kms_available_modes_crc.c
+++ b/tests/kms_available_modes_crc.c
@@ -493,6 +493,7 @@ igt_main
igt_fixture {
data.gfx_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.gfx_fd);
kmstest_set_vt_graphics_mode();
igt_display_init(&data.display, data.gfx_fd);
igt_require_pipe_crc(data.gfx_fd);
diff --git a/tests/kms_busy.c b/tests/kms_busy.c
index abf39828..b25b1853 100644
--- a/tests/kms_busy.c
+++ b/tests/kms_busy.c
@@ -321,6 +321,7 @@ igt_main
igt_require_gem(fd);
gem_require_mmap_wc(fd);
+ igt_require_display(fd);
kmstest_set_vt_graphics_mode();
igt_display_init(&display, fd);
diff --git a/tests/kms_ccs.c b/tests/kms_ccs.c
index e1ee5880..5774b14b 100644
--- a/tests/kms_ccs.c
+++ b/tests/kms_ccs.c
@@ -521,6 +521,7 @@ igt_main
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.drm_fd);
igt_require(intel_gen(intel_get_drm_devid(data.drm_fd)) >= 9);
kmstest_set_vt_graphics_mode();
igt_require_pipe_crc(data.drm_fd);
diff --git a/tests/kms_chamelium.c b/tests/kms_chamelium.c
index 2bc34d07..b8876f49 100644
--- a/tests/kms_chamelium.c
+++ b/tests/kms_chamelium.c
@@ -736,6 +736,7 @@ igt_main
igt_skip_on_simulation();
data.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(data.drm_fd);
data.chamelium = chamelium_init(data.drm_fd);
igt_require(data.chamelium);
diff --git a/tests/kms_chv_cursor_fail.c b/tests/kms_chv_cursor_fail.c
index 7138e549..683b08a9 100644
--- a/tests/kms_chv_cursor_fail.c
+++ b/tests/kms_chv_cursor_fail.c
@@ -316,6 +316,7 @@ int main(int argc, char **argv)
int ret;
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.drm_fd);
data.devid = intel_get_drm_devid(data.drm_fd);
diff --git a/tests/kms_color.c b/tests/kms_color.c
index bb106dd0..86100e46 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -1159,6 +1159,7 @@ igt_main
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL | DRIVER_AMDGPU);
+ igt_require_display(data.drm_fd);
if (is_i915_device(data.drm_fd))
data.devid = intel_get_drm_devid(data.drm_fd);
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
index 283acf8c..90476ad2 100644
--- a/tests/kms_concurrent.c
+++ b/tests/kms_concurrent.c
@@ -406,6 +406,7 @@ int main(int argc, char *argv[])
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(data.drm_fd);
kmstest_set_vt_graphics_mode();
igt_display_init(&data.display, data.drm_fd);
igt_require(data.display.n_pipes > 0);
diff --git a/tests/kms_crtc_background_color.c b/tests/kms_crtc_background_color.c
index 6407e19b..61edf3b2 100644
--- a/tests/kms_crtc_background_color.c
+++ b/tests/kms_crtc_background_color.c
@@ -179,6 +179,7 @@ igt_simple_main
igt_skip_on_simulation();
data.gfx_fd = drm_open_driver(DRIVER_INTEL);
+ igt_require_display(data.gfx_fd);
igt_require_pipe_crc(data.gfx_fd);
igt_display_init(&data.display, data.gfx_fd);
diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
index 99946b1a..daa825d9 100644
--- a/tests/kms_cursor_crc.c
+++ b/tests/kms_cursor_crc.c
@@ -661,6 +661,7 @@ igt_main
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(data.drm_fd);
ret = drmGetCap(data.drm_fd, DRM_CAP_CURSOR_WIDTH, &cursor_width);
igt_assert(ret == 0 || errno == EINVAL);
diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index 82ceebcb..3d64d8c8 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -1363,6 +1363,7 @@ igt_main
igt_fixture {
display.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(display.drm_fd);
kmstest_set_vt_graphics_mode();
igt_display_init(&display, display.drm_fd);
diff --git a/tests/kms_draw_crc.c b/tests/kms_draw_crc.c
index 86dcf392..18a60131 100644
--- a/tests/kms_draw_crc.c
+++ b/tests/kms_draw_crc.c
@@ -251,6 +251,7 @@ static void setup_environment(void)
drm_fd = drm_open_driver_master(DRIVER_INTEL);
igt_require(drm_fd >= 0);
+ igt_require_display(drm_fd);
drm_res = drmModeGetResources(drm_fd);
igt_assert(drm_res->count_connectors <= MAX_CONNECTORS);
diff --git a/tests/kms_fbcon_fbt.c b/tests/kms_fbcon_fbt.c
index 138eda9b..a13968d3 100644
--- a/tests/kms_fbcon_fbt.c
+++ b/tests/kms_fbcon_fbt.c
@@ -293,6 +293,7 @@ static void setup_environment(void)
drm_fd = drm_open_driver_master(DRIVER_INTEL);
igt_require(drm_fd >= 0);
+ igt_require_display(drm_fd);
igt_assert(close(drm_fd) == 0);
}
diff --git a/tests/kms_fence_pin_leak.c b/tests/kms_fence_pin_leak.c
index 8bbd5563..d2d5c236 100644
--- a/tests/kms_fence_pin_leak.c
+++ b/tests/kms_fence_pin_leak.c
@@ -201,6 +201,7 @@ igt_simple_main
igt_skip_on_simulation();
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.drm_fd);
data.devid = intel_get_drm_devid(data.drm_fd);
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 393d690a..b94c068b 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -1574,6 +1574,7 @@ int main(int argc, char **argv)
igt_fixture {
drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(drm_fd);
igt_enable_connectors();
diff --git a/tests/kms_flip_event_leak.c b/tests/kms_flip_event_leak.c
index f1a8abd8..42b3a703 100644
--- a/tests/kms_flip_event_leak.c
+++ b/tests/kms_flip_event_leak.c
@@ -101,6 +101,7 @@ igt_simple_main
igt_skip_on_simulation();
data.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(data.drm_fd);
kmstest_set_vt_graphics_mode();
igt_display_init(&data.display, data.drm_fd);
diff --git a/tests/kms_flip_tiling.c b/tests/kms_flip_tiling.c
index beeb111b..54258e2f 100644
--- a/tests/kms_flip_tiling.c
+++ b/tests/kms_flip_tiling.c
@@ -146,6 +146,7 @@ igt_main
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.drm_fd);
data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_force_connector_basic.c b/tests/kms_force_connector_basic.c
index 89431232..06c1a0cb 100644
--- a/tests/kms_force_connector_basic.c
+++ b/tests/kms_force_connector_basic.c
@@ -89,6 +89,7 @@ int main(int argc, char **argv)
unsigned vga_connector_id = 0;
drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(drm_fd);
res = drmModeGetResources(drm_fd);
igt_assert(res);
diff --git a/tests/kms_frontbuffer_tracking.c b/tests/kms_frontbuffer_tracking.c
index e9abceb6..fc8de830 100644
--- a/tests/kms_frontbuffer_tracking.c
+++ b/tests/kms_frontbuffer_tracking.c
@@ -1280,6 +1280,7 @@ static void init_crcs(enum pixel_format format,
static void setup_drm(void)
{
drm.fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(drm.fd);
drm.debugfs = igt_debugfs_dir(drm.fd);
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
index 81d796a4..94fd0fea 100644
--- a/tests/kms_getfb.c
+++ b/tests/kms_getfb.c
@@ -198,8 +198,10 @@ igt_main
{
int fd;
- igt_fixture
+ igt_fixture {
fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(fd);
+ }
igt_subtest_group
test_handle_input(fd);
diff --git a/tests/kms_hdmi_inject.c b/tests/kms_hdmi_inject.c
index 22570a4b..eedc282b 100644
--- a/tests/kms_hdmi_inject.c
+++ b/tests/kms_hdmi_inject.c
@@ -254,6 +254,7 @@ igt_main
igt_fixture {
drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(drm_fd);
res = drmModeGetResources(drm_fd);
connector = get_connector(drm_fd, res);
diff --git a/tests/kms_invalid_dotclock.c b/tests/kms_invalid_dotclock.c
index e6e72f52..8c5ebab5 100644
--- a/tests/kms_invalid_dotclock.c
+++ b/tests/kms_invalid_dotclock.c
@@ -130,6 +130,7 @@ igt_simple_main
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
igt_require_intel(data.drm_fd);
+ igt_require_display(data.drm_fd);
igt_enable_connectors();
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_legacy_colorkey.c b/tests/kms_legacy_colorkey.c
index 150520ce..e1cc33b6 100644
--- a/tests/kms_legacy_colorkey.c
+++ b/tests/kms_legacy_colorkey.c
@@ -48,6 +48,7 @@ igt_simple_main
igt_skip_on_simulation();
drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(drm_fd);
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_mmap_write_crc.c b/tests/kms_mmap_write_crc.c
index 279d0f67..802d5a37 100644
--- a/tests/kms_mmap_write_crc.c
+++ b/tests/kms_mmap_write_crc.c
@@ -274,6 +274,7 @@ int main(int argc, char **argv)
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.drm_fd);
data.devid = intel_get_drm_devid(data.drm_fd);
diff --git a/tests/kms_panel_fitting.c b/tests/kms_panel_fitting.c
index 7df8104e..bb11399d 100644
--- a/tests/kms_panel_fitting.c
+++ b/tests/kms_panel_fitting.c
@@ -241,6 +241,7 @@ igt_main
igt_skip_on_simulation();
data.drm_fd = drm_open_driver(DRIVER_ANY);
+ igt_require_display(data.drm_fd);
igt_display_init(&data.display, data.drm_fd);
igt_display_require_output(&data.display);
}
diff --git a/tests/kms_pipe_b_c_ivb.c b/tests/kms_pipe_b_c_ivb.c
index 64086915..1854ff68 100644
--- a/tests/kms_pipe_b_c_ivb.c
+++ b/tests/kms_pipe_b_c_ivb.c
@@ -259,6 +259,7 @@ igt_main
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.drm_fd);
devid = intel_get_drm_devid(data.drm_fd);
igt_skip_on(!IS_IVYBRIDGE(devid));
diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
index 852f1697..4a6e950b 100644
--- a/tests/kms_pipe_crc_basic.c
+++ b/tests/kms_pipe_crc_basic.c
@@ -180,6 +180,7 @@ igt_main
{
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(data.drm_fd);
igt_enable_connectors();
diff --git a/tests/kms_plane.c b/tests/kms_plane.c
index 3999dde8..385d475e 100644
--- a/tests/kms_plane.c
+++ b/tests/kms_plane.c
@@ -581,6 +581,7 @@ igt_main
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.drm_fd);
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
index 5e83ef56..1a531f3c 100644
--- a/tests/kms_plane_lowres.c
+++ b/tests/kms_plane_lowres.c
@@ -297,6 +297,7 @@ igt_main
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(data.drm_fd);
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
index a53be001..017d791a 100644
--- a/tests/kms_plane_multiple.c
+++ b/tests/kms_plane_multiple.c
@@ -391,6 +391,7 @@ int main(int argc, char *argv[])
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.drm_fd);
kmstest_set_vt_graphics_mode();
igt_require_pipe_crc(data.drm_fd);
igt_display_init(&data.display, data.drm_fd);
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index 7c64ed14..3b7b41db 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -543,6 +543,7 @@ igt_main
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.drm_fd);
igt_require_pipe_crc(data.drm_fd);
igt_display_init(&data.display, data.drm_fd);
data.devid = intel_get_drm_devid(data.drm_fd);
diff --git a/tests/kms_properties.c b/tests/kms_properties.c
index 68c0518f..41e90e5f 100644
--- a/tests/kms_properties.c
+++ b/tests/kms_properties.c
@@ -675,6 +675,7 @@ igt_main
igt_fixture {
display.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(display.drm_fd);
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_psr.c b/tests/kms_psr.c
index fcc04770..73bbab6b 100644
--- a/tests/kms_psr.c
+++ b/tests/kms_psr.c
@@ -410,6 +410,7 @@ int main(int argc, char *argv[])
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.drm_fd);
data.debugfs_fd = igt_debugfs_dir(data.drm_fd);
kmstest_set_vt_graphics_mode();
data.devid = intel_get_drm_devid(data.drm_fd);
diff --git a/tests/kms_pwrite_crc.c b/tests/kms_pwrite_crc.c
index ee895db6..71aa093d 100644
--- a/tests/kms_pwrite_crc.c
+++ b/tests/kms_pwrite_crc.c
@@ -178,6 +178,7 @@ igt_simple_main
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.drm_fd);
data.devid = intel_get_drm_devid(data.drm_fd);
diff --git a/tests/kms_rmfb.c b/tests/kms_rmfb.c
index f3461cc9..abb854cc 100644
--- a/tests/kms_rmfb.c
+++ b/tests/kms_rmfb.c
@@ -143,6 +143,7 @@ igt_main
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(data.drm_fd);
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 5ed0c0b3..5022fba1 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -524,6 +524,7 @@ igt_main
igt_fixture {
data.gfx_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.gfx_fd);
data.devid = intel_get_drm_devid(data.gfx_fd);
gen = intel_gen(data.devid);
diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
index 47d04fb5..4ad4740b 100644
--- a/tests/kms_setmode.c
+++ b/tests/kms_setmode.c
@@ -854,6 +854,7 @@ int main(int argc, char **argv)
igt_fixture {
drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(drm_fd);
if (!dry_run)
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_sysfs_edid_timing.c b/tests/kms_sysfs_edid_timing.c
index 12013881..ecdfea37 100644
--- a/tests/kms_sysfs_edid_timing.c
+++ b/tests/kms_sysfs_edid_timing.c
@@ -41,6 +41,11 @@ igt_simple_main
{
DIR *dirp;
struct dirent *de;
+ int drm_fd;
+
+ drm_fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(drm_fd);
+ close(drm_fd);
dirp = opendir("/sys/class/drm");
igt_assert(dirp != NULL);
diff --git a/tests/kms_tv_load_detect.c b/tests/kms_tv_load_detect.c
index 5684b267..6c9da3ea 100644
--- a/tests/kms_tv_load_detect.c
+++ b/tests/kms_tv_load_detect.c
@@ -37,6 +37,7 @@ int main(int argc, char **argv)
igt_fixture {
drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(drm_fd);
res = drmModeGetResources(drm_fd);
igt_assert(res);
diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
index 58f329e6..1c03fad9 100644
--- a/tests/kms_universal_plane.c
+++ b/tests/kms_universal_plane.c
@@ -793,6 +793,7 @@ igt_main
igt_fixture {
data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+ igt_require_display(data.drm_fd);
data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
kmstest_set_vt_graphics_mode();
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 1c0771c6..90dd6e4a 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -506,6 +506,7 @@ igt_main
igt_fixture {
fd = drm_open_driver_master(DRIVER_ANY);
+ igt_require_display(fd);
kmstest_set_vt_graphics_mode();
igt_display_init(&data.display, fd);
igt_display_require_output(&data.display);
diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c
index 6ab2595b..6c347acc 100644
--- a/tests/perf_pmu.c
+++ b/tests/perf_pmu.c
@@ -1397,6 +1397,7 @@ test_rc6(int gem_fd, unsigned int flags)
if (flags & TEST_RUNTIME_PM) {
drmModeRes *res;
+ igt_require_display(gem_fd);
res = drmModeGetResources(gem_fd);
igt_assert(res);
diff --git a/tests/pm_backlight.c b/tests/pm_backlight.c
index e94340a2..b03b9b3f 100644
--- a/tests/pm_backlight.c
+++ b/tests/pm_backlight.c
@@ -202,6 +202,7 @@ igt_main
char *name;
drmModeModeInfo *mode;
igt_plane_t *primary;
+ int drm_fd;
/* Get the max value and skip the whole test if sysfs interface not available */
igt_skip_on(backlight_read(&old, "brightness"));
@@ -211,8 +212,10 @@ igt_main
* Backlight tests requires the output to be enabled,
* try to enable all.
*/
+ drm_fd = drm_open_driver(DRIVER_INTEL);
+ igt_require_display(drm_fd);
kmstest_set_vt_graphics_mode();
- igt_display_init(&display, drm_open_driver(DRIVER_INTEL));
+ igt_display_init(&display, drm_fd);
/* should be ../../cardX-$output */
igt_assert_lt(12, readlink(BACKLIGHT_PATH "/device", full_name, sizeof(full_name) - 1));
diff --git a/tests/pm_lpsp.c b/tests/pm_lpsp.c
index a741cb78..d4f96d25 100644
--- a/tests/pm_lpsp.c
+++ b/tests/pm_lpsp.c
@@ -195,6 +195,7 @@ igt_main
drm_fd = drm_open_driver_master(DRIVER_INTEL);
igt_require(drm_fd >= 0);
+ igt_require_display(drm_fd);
devid = intel_get_drm_devid(drm_fd);
diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
index c24fd95b..627b1a1a 100644
--- a/tests/pm_rpm.c
+++ b/tests/pm_rpm.c
@@ -719,6 +719,7 @@ static bool setup_environment(void)
debugfs = igt_debugfs_dir(drm_fd);
igt_require(debugfs != -1);
+ igt_require_display(drm_fd);
init_mode_set_data(&ms_data);
diff --git a/tests/prime_vgem.c b/tests/prime_vgem.c
index b821fbb8..a99cd8a9 100644
--- a/tests/prime_vgem.c
+++ b/tests/prime_vgem.c
@@ -747,6 +747,8 @@ static void test_flip(int i915, int vgem, unsigned hang)
struct vgem_bo bo[2];
uint32_t fb_id[2], handle[2], crtc_id;
+ igt_require_display(i915);
+
signal(SIGHUP, sighandler);
for (int i = 0; i < 2; i++) {
diff --git a/tests/testdisplay.c b/tests/testdisplay.c
index 0ff98a2b..a770b29f 100644
--- a/tests/testdisplay.c
+++ b/tests/testdisplay.c
@@ -716,6 +716,7 @@ int main(int argc, char **argv)
test_all_modes = 1;
drm_fd = drm_open_driver(DRIVER_ANY);
+ igt_require_display(drm_fd);
if (test_stereo_modes &&
drmSetClientCap(drm_fd, DRM_CLIENT_CAP_STEREO_3D, 1) < 0) {
--
2.18.0
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests: Check and skip tests when driver don't have display enabled
2018-09-07 0:44 [igt-dev] [PATCH i-g-t] tests: Check and skip tests when driver don't have display enabled José Roberto de Souza
@ 2018-09-07 1:53 ` Patchwork
2018-09-07 13:59 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2018-09-07 14:48 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä
2 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2018-09-07 1:53 UTC (permalink / raw)
To: José Roberto de Souza; +Cc: igt-dev
== Series Details ==
Series: tests: Check and skip tests when driver don't have display enabled
URL : https://patchwork.freedesktop.org/series/49314/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4782 -> IGTPW_1806 =
== Summary - WARNING ==
Minor unknown changes coming with IGTPW_1806 need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_1806, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/49314/revisions/1/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in IGTPW_1806:
=== IGT changes ===
==== Warnings ====
igt@pm_rpm@module-reload:
fi-bsw-kefka: PASS -> SKIP
fi-bdw-5557u: PASS -> SKIP
fi-glk-dsi: PASS -> SKIP
fi-skl-6600u: PASS -> SKIP
fi-kbl-guc: PASS -> SKIP
fi-cfl-8109u: PASS -> SKIP
fi-byt-clapper: PASS -> SKIP
fi-cfl-s3: PASS -> SKIP
fi-kbl-7500u: PASS -> SKIP
fi-hsw-4770: PASS -> SKIP
fi-skl-6700hq: PASS -> SKIP
fi-cfl-guc: PASS -> SKIP
fi-skl-guc: PASS -> SKIP
fi-bsw-n3050: PASS -> SKIP
fi-cfl-8700k: PASS -> SKIP
fi-kbl-x1275: PASS -> SKIP
fi-skl-6770hq: PASS -> SKIP
fi-kbl-8809g: PASS -> SKIP
fi-cnl-psr: PASS -> SKIP
fi-kbl-r: PASS -> SKIP
fi-skl-6260u: PASS -> SKIP
fi-bxt-j4205: PASS -> SKIP
fi-byt-n2820: PASS -> SKIP
fi-whl-u: PASS -> SKIP
fi-kbl-7567u: PASS -> SKIP
fi-kbl-7560u: PASS -> SKIP
fi-skl-iommu: PASS -> SKIP
fi-glk-j4005: PASS -> SKIP
fi-hsw-4770r: PASS -> SKIP
fi-skl-6700k2: PASS -> SKIP
== Known issues ==
Here are the changes found in IGTPW_1806 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@kms_flip@basic-flip-vs-wf_vblank:
fi-bsw-n3050: PASS -> FAIL (fdo#100368)
igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a:
fi-ilk-650: PASS -> DMESG-WARN (fdo#106387)
igt@kms_pipe_crc_basic@read-crc-pipe-b-frame-sequence:
fi-byt-clapper: PASS -> FAIL (fdo#107362, fdo#103191) +1
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
fi-bxt-dsi: PASS -> INCOMPLETE (fdo#103927)
igt@kms_psr@primary_page_flip:
fi-whl-u: PASS -> FAIL (fdo#107336)
==== Possible fixes ====
igt@amdgpu/amd_cs_nop@sync-fork-gfx0:
fi-kbl-8809g: DMESG-WARN (fdo#107762) -> PASS
igt@kms_psr@primary_page_flip:
fi-kbl-7560u: FAIL (fdo#107336) -> PASS
igt@pm_rpm@module-reload:
fi-hsw-peppy: DMESG-WARN (fdo#107603) -> SKIP
fi-bdw-samus: DMESG-WARN (fdo#107603) -> SKIP
==== Warnings ====
igt@amdgpu/amd_prime@amd-to-i915:
fi-kbl-8809g: DMESG-FAIL (fdo#107762) -> FAIL (fdo#107341)
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
fdo#106387 https://bugs.freedesktop.org/show_bug.cgi?id=106387
fdo#107336 https://bugs.freedesktop.org/show_bug.cgi?id=107336
fdo#107341 https://bugs.freedesktop.org/show_bug.cgi?id=107341
fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
fdo#107603 https://bugs.freedesktop.org/show_bug.cgi?id=107603
fdo#107762 https://bugs.freedesktop.org/show_bug.cgi?id=107762
== Participating hosts (52 -> 48) ==
Additional (1): fi-gdg-551
Missing (5): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u
== Build changes ==
* IGT: IGT_4632 -> IGTPW_1806
CI_DRM_4782: 60edf94611d2374821fbe2a824cebcb425ce7b0d @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1806: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1806/
IGT_4632: 94b4e204473a7d9f49e536c8877a4a5636e0d1b2 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1806/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 6+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for tests: Check and skip tests when driver don't have display enabled
2018-09-07 0:44 [igt-dev] [PATCH i-g-t] tests: Check and skip tests when driver don't have display enabled José Roberto de Souza
2018-09-07 1:53 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2018-09-07 13:59 ` Patchwork
2018-09-07 14:48 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä
2 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2018-09-07 13:59 UTC (permalink / raw)
To: José Roberto de Souza; +Cc: igt-dev
== Series Details ==
Series: tests: Check and skip tests when driver don't have display enabled
URL : https://patchwork.freedesktop.org/series/49314/
State : success
== Summary ==
= CI Bug Log - changes from IGT_4632_full -> IGTPW_1806_full =
== Summary - WARNING ==
Minor unknown changes coming with IGTPW_1806_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_1806_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://patchwork.freedesktop.org/api/1.0/series/49314/revisions/1/mbox/
== Possible new issues ==
Here are the unknown changes that may have been introduced in IGTPW_1806_full:
=== IGT changes ===
==== Warnings ====
igt@perf_pmu@rc6:
shard-kbl: PASS -> SKIP
== Known issues ==
Here are the changes found in IGTPW_1806_full that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@drv_suspend@forcewake:
shard-apl: PASS -> INCOMPLETE (fdo#103927)
igt@gem_exec_big:
shard-hsw: PASS -> INCOMPLETE (fdo#103540)
igt@kms_available_modes_crc@available_mode_test_crc:
shard-snb: PASS -> FAIL (fdo#106641)
igt@kms_busy@basic-flip-c:
shard-snb: SKIP -> INCOMPLETE (fdo#105411)
igt@kms_rotation_crc@sprite-rotation-180:
shard-snb: PASS -> FAIL (fdo#103925)
igt@kms_setmode@basic:
shard-apl: PASS -> FAIL (fdo#99912)
igt@kms_sysfs_edid_timing:
shard-glk: NOTRUN -> WARN (fdo#100047)
igt@perf@polling:
shard-hsw: PASS -> FAIL (fdo#102252)
igt@perf_pmu@rc6-runtime-pm:
shard-apl: PASS -> FAIL (fdo#105010)
==== Possible fixes ====
igt@kms_cursor_legacy@cursor-vs-flip-toggle:
shard-hsw: FAIL (fdo#103355) -> PASS +1
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
shard-snb: INCOMPLETE (fdo#105411) -> PASS
igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-cpu:
shard-glk: FAIL (fdo#103167) -> PASS
igt@kms_setmode@basic:
shard-kbl: FAIL (fdo#99912) -> PASS
igt@testdisplay:
shard-glk: INCOMPLETE (fdo#107093, fdo#103359, k.org#198133) -> PASS
fdo#100047 https://bugs.freedesktop.org/show_bug.cgi?id=100047
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103355 https://bugs.freedesktop.org/show_bug.cgi?id=103355
fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359
fdo#103540 https://bugs.freedesktop.org/show_bug.cgi?id=103540
fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925
fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
fdo#105010 https://bugs.freedesktop.org/show_bug.cgi?id=105010
fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
fdo#106641 https://bugs.freedesktop.org/show_bug.cgi?id=106641
fdo#107093 https://bugs.freedesktop.org/show_bug.cgi?id=107093
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133
== Participating hosts (5 -> 5) ==
No changes in participating hosts
== Build changes ==
* IGT: IGT_4632 -> IGTPW_1806
* Linux: CI_DRM_4775 -> CI_DRM_4782
CI_DRM_4775: 1a2bb6c061217718b972b3f4a74b96b61cf19d0c @ git://anongit.freedesktop.org/gfx-ci/linux
CI_DRM_4782: 60edf94611d2374821fbe2a824cebcb425ce7b0d @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_1806: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1806/
IGT_4632: 94b4e204473a7d9f49e536c8877a4a5636e0d1b2 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1806/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests: Check and skip tests when driver don't have display enabled
2018-09-07 0:44 [igt-dev] [PATCH i-g-t] tests: Check and skip tests when driver don't have display enabled José Roberto de Souza
2018-09-07 1:53 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2018-09-07 13:59 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2018-09-07 14:48 ` Ville Syrjälä
2018-09-07 14:57 ` Chris Wilson
2 siblings, 1 reply; 6+ messages in thread
From: Ville Syrjälä @ 2018-09-07 14:48 UTC (permalink / raw)
To: José Roberto de Souza; +Cc: igt-dev, Jani Nikula
On Thu, Sep 06, 2018 at 05:44:54PM -0700, José Roberto de Souza wrote:
> Right now i915 is not doing the full job to complete disable display
> when i915.disable_display parameters is set, when that is completed
> it will cause several tests to fail, so here skiping all the tests
> that depends on modeset or display block when those are not
> available.
>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> ---
> lib/igt_kms.c | 20 ++++++++++++++++++++
> lib/igt_kms.h | 1 +
> tests/debugfs_test.c | 1 +
> tests/gem_exec_nop.c | 1 +
> tests/kms_3d.c | 1 +
> tests/kms_addfb_basic.c | 4 +++-
> tests/kms_atomic.c | 1 +
> tests/kms_atomic_interruptible.c | 1 +
> tests/kms_available_modes_crc.c | 1 +
> tests/kms_busy.c | 1 +
> tests/kms_ccs.c | 1 +
> tests/kms_chamelium.c | 1 +
> tests/kms_chv_cursor_fail.c | 1 +
> tests/kms_color.c | 1 +
> tests/kms_concurrent.c | 1 +
> tests/kms_crtc_background_color.c | 1 +
> tests/kms_cursor_crc.c | 1 +
> tests/kms_cursor_legacy.c | 1 +
> tests/kms_draw_crc.c | 1 +
> tests/kms_fbcon_fbt.c | 1 +
> tests/kms_fence_pin_leak.c | 1 +
> tests/kms_flip.c | 1 +
> tests/kms_flip_event_leak.c | 1 +
> tests/kms_flip_tiling.c | 1 +
> tests/kms_force_connector_basic.c | 1 +
> tests/kms_frontbuffer_tracking.c | 1 +
> tests/kms_getfb.c | 4 +++-
> tests/kms_hdmi_inject.c | 1 +
> tests/kms_invalid_dotclock.c | 1 +
> tests/kms_legacy_colorkey.c | 1 +
> tests/kms_mmap_write_crc.c | 1 +
> tests/kms_panel_fitting.c | 1 +
> tests/kms_pipe_b_c_ivb.c | 1 +
> tests/kms_pipe_crc_basic.c | 1 +
> tests/kms_plane.c | 1 +
> tests/kms_plane_lowres.c | 1 +
> tests/kms_plane_multiple.c | 1 +
> tests/kms_plane_scaling.c | 1 +
> tests/kms_properties.c | 1 +
> tests/kms_psr.c | 1 +
> tests/kms_pwrite_crc.c | 1 +
> tests/kms_rmfb.c | 1 +
> tests/kms_rotation_crc.c | 1 +
> tests/kms_setmode.c | 1 +
> tests/kms_sysfs_edid_timing.c | 5 +++++
> tests/kms_tv_load_detect.c | 1 +
> tests/kms_universal_plane.c | 1 +
> tests/kms_vblank.c | 1 +
> tests/perf_pmu.c | 1 +
> tests/pm_backlight.c | 5 ++++-
> tests/pm_lpsp.c | 1 +
> tests/pm_rpm.c | 1 +
> tests/prime_vgem.c | 2 ++
> tests/testdisplay.c | 1 +
> 54 files changed, 85 insertions(+), 3 deletions(-)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 62d84684..7578a10b 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -2018,6 +2018,26 @@ int igt_display_get_n_pipes(igt_display_t *display)
> return display->n_pipes;
> }
>
> +/**
> + * igt_display_require_output:
> + * @drm_fd: a drm file descriptor
> + *
> + * Checks if driver supports modeset and have display enabled.
> + */
> +void igt_require_display(int fd)
> +{
> + drmModeRes *resources;
> + int pipes;
> +
> + resources = drmModeGetResources(fd);
> + igt_require_f(resources, "drm driver do not support modeset\n");
> +
> + pipes = resources->count_crtcs;
> + drmModeFreeResources(resources);
> +
> + igt_require_f(pipes > 0, "drm driver without display hardware\n");
> +}
> +
> /**
> * igt_display_require_output:
> * @display: A pointer to an #igt_display_t structure
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index 3a12f278..037bcb23 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -388,6 +388,7 @@ void igt_display_commit_atomic(igt_display_t *display, uint32_t flags, void *use
> int igt_display_try_commit2(igt_display_t *display, enum igt_commit_style s);
> int igt_display_drop_events(igt_display_t *display);
> int igt_display_get_n_pipes(igt_display_t *display);
> +void igt_require_display(int fd);
> void igt_display_require_output(igt_display_t *display);
> void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
>
> diff --git a/tests/debugfs_test.c b/tests/debugfs_test.c
> index 2e87e442..6d77ee72 100644
> --- a/tests/debugfs_test.c
> +++ b/tests/debugfs_test.c
> @@ -99,6 +99,7 @@ igt_main
> igt_fixture {
> fd = drm_open_driver_master(DRIVER_INTEL);
> igt_require_gem(fd);
> + igt_require_display(fd);
> debugfs = igt_debugfs_dir(fd);
>
> kmstest_set_vt_graphics_mode();
I guess we lose the emon subtest here. But that's ilk only so meh.
<snip>
> diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c
> index 6ab2595b..6c347acc 100644
> --- a/tests/perf_pmu.c
> +++ b/tests/perf_pmu.c
> @@ -1397,6 +1397,7 @@ test_rc6(int gem_fd, unsigned int flags)
> if (flags & TEST_RUNTIME_PM) {
> drmModeRes *res;
>
> + igt_require_display(gem_fd);
Might we want to just skip the display interaction here but still
execute the rest of the subtest? Or is that redundant when there is no
display anyway?
> res = drmModeGetResources(gem_fd);
> igt_assert(res);
>
<snip>
> diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
> index c24fd95b..627b1a1a 100644
> --- a/tests/pm_rpm.c
> +++ b/tests/pm_rpm.c
> @@ -719,6 +719,7 @@ static bool setup_environment(void)
>
> debugfs = igt_debugfs_dir(drm_fd);
> igt_require(debugfs != -1);
> + igt_require_display(drm_fd);
Somewhat the same question here. Although this test looks like it's
expecting display stuff all over, so probably can't easily exclude it.
The perf_pmu thing is I guess the only real
concern I have, but I guess someone can think of that later so
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> init_mode_set_data(&ms_data);
>
> diff --git a/tests/prime_vgem.c b/tests/prime_vgem.c
> index b821fbb8..a99cd8a9 100644
> --- a/tests/prime_vgem.c
> +++ b/tests/prime_vgem.c
> @@ -747,6 +747,8 @@ static void test_flip(int i915, int vgem, unsigned hang)
> struct vgem_bo bo[2];
> uint32_t fb_id[2], handle[2], crtc_id;
>
> + igt_require_display(i915);
> +
> signal(SIGHUP, sighandler);
>
> for (int i = 0; i < 2; i++) {
> diff --git a/tests/testdisplay.c b/tests/testdisplay.c
> index 0ff98a2b..a770b29f 100644
> --- a/tests/testdisplay.c
> +++ b/tests/testdisplay.c
> @@ -716,6 +716,7 @@ int main(int argc, char **argv)
> test_all_modes = 1;
>
> drm_fd = drm_open_driver(DRIVER_ANY);
> + igt_require_display(drm_fd);
>
> if (test_stereo_modes &&
> drmSetClientCap(drm_fd, DRM_CLIENT_CAP_STEREO_3D, 1) < 0) {
> --
> 2.18.0
>
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
--
Ville Syrjälä
Intel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests: Check and skip tests when driver don't have display enabled
2018-09-07 14:48 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä
@ 2018-09-07 14:57 ` Chris Wilson
2018-09-07 23:31 ` Souza, Jose
0 siblings, 1 reply; 6+ messages in thread
From: Chris Wilson @ 2018-09-07 14:57 UTC (permalink / raw)
To: José Roberto de Souza, Ville Syrjälä; +Cc: igt-dev, Jani Nikula
Quoting Ville Syrjälä (2018-09-07 15:48:28)
> On Thu, Sep 06, 2018 at 05:44:54PM -0700, José Roberto de Souza wrote:
> > Right now i915 is not doing the full job to complete disable display
> > when i915.disable_display parameters is set, when that is completed
> > it will cause several tests to fail, so here skiping all the tests
> > that depends on modeset or display block when those are not
> > available.
<rant>
This changelog is a pile of excuses.
> > Cc: Jani Nikula <jani.nikula@intel.com>
> > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > ---
> > lib/igt_kms.c | 20 ++++++++++++++++++++
> > lib/igt_kms.h | 1 +
> > tests/debugfs_test.c | 1 +
> > tests/gem_exec_nop.c | 1 +
> > tests/kms_3d.c | 1 +
> > tests/kms_addfb_basic.c | 4 +++-
> > tests/kms_atomic.c | 1 +
> > tests/kms_atomic_interruptible.c | 1 +
> > tests/kms_available_modes_crc.c | 1 +
> > tests/kms_busy.c | 1 +
> > tests/kms_ccs.c | 1 +
> > tests/kms_chamelium.c | 1 +
> > tests/kms_chv_cursor_fail.c | 1 +
> > tests/kms_color.c | 1 +
> > tests/kms_concurrent.c | 1 +
> > tests/kms_crtc_background_color.c | 1 +
> > tests/kms_cursor_crc.c | 1 +
> > tests/kms_cursor_legacy.c | 1 +
> > tests/kms_draw_crc.c | 1 +
> > tests/kms_fbcon_fbt.c | 1 +
> > tests/kms_fence_pin_leak.c | 1 +
> > tests/kms_flip.c | 1 +
> > tests/kms_flip_event_leak.c | 1 +
> > tests/kms_flip_tiling.c | 1 +
> > tests/kms_force_connector_basic.c | 1 +
> > tests/kms_frontbuffer_tracking.c | 1 +
> > tests/kms_getfb.c | 4 +++-
> > tests/kms_hdmi_inject.c | 1 +
> > tests/kms_invalid_dotclock.c | 1 +
> > tests/kms_legacy_colorkey.c | 1 +
> > tests/kms_mmap_write_crc.c | 1 +
> > tests/kms_panel_fitting.c | 1 +
> > tests/kms_pipe_b_c_ivb.c | 1 +
> > tests/kms_pipe_crc_basic.c | 1 +
> > tests/kms_plane.c | 1 +
> > tests/kms_plane_lowres.c | 1 +
> > tests/kms_plane_multiple.c | 1 +
> > tests/kms_plane_scaling.c | 1 +
> > tests/kms_properties.c | 1 +
> > tests/kms_psr.c | 1 +
> > tests/kms_pwrite_crc.c | 1 +
> > tests/kms_rmfb.c | 1 +
> > tests/kms_rotation_crc.c | 1 +
> > tests/kms_setmode.c | 1 +
> > tests/kms_sysfs_edid_timing.c | 5 +++++
> > tests/kms_tv_load_detect.c | 1 +
> > tests/kms_universal_plane.c | 1 +
> > tests/kms_vblank.c | 1 +
> > tests/perf_pmu.c | 1 +
> > tests/pm_backlight.c | 5 ++++-
> > tests/pm_lpsp.c | 1 +
> > tests/pm_rpm.c | 1 +
> > tests/prime_vgem.c | 2 ++
> > tests/testdisplay.c | 1 +
> > 54 files changed, 85 insertions(+), 3 deletions(-)
> >
> > diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> > index 62d84684..7578a10b 100644
> > --- a/lib/igt_kms.c
> > +++ b/lib/igt_kms.c
> > @@ -2018,6 +2018,26 @@ int igt_display_get_n_pipes(igt_display_t *display)
> > return display->n_pipes;
> > }
> >
> > +/**
> > + * igt_display_require_output:
> > + * @drm_fd: a drm file descriptor
> > + *
> > + * Checks if driver supports modeset and have display enabled.
> > + */
> > +void igt_require_display(int fd)
> > +{
> > + drmModeRes *resources;
> > + int pipes;
> > +
> > + resources = drmModeGetResources(fd);
You don't need to allocate anything, so don't.
> > + igt_require_f(resources, "drm driver do not support modeset\n");
> > +
> > + pipes = resources->count_crtcs;
> > + drmModeFreeResources(resources);
> > +
> > + igt_require_f(pipes > 0, "drm driver without display hardware\n");
> > +}
> > +
> > /**
> > * igt_display_require_output:
> > * @display: A pointer to an #igt_display_t structure
> > diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> > index 3a12f278..037bcb23 100644
> > --- a/lib/igt_kms.h
> > +++ b/lib/igt_kms.h
> > @@ -388,6 +388,7 @@ void igt_display_commit_atomic(igt_display_t *display, uint32_t flags, void *use
> > int igt_display_try_commit2(igt_display_t *display, enum igt_commit_style s);
> > int igt_display_drop_events(igt_display_t *display);
> > int igt_display_get_n_pipes(igt_display_t *display);
> > +void igt_require_display(int fd);
> > void igt_display_require_output(igt_display_t *display);
> > void igt_display_require_output_on_pipe(igt_display_t *display, enum pipe pipe);
> >
> > diff --git a/tests/debugfs_test.c b/tests/debugfs_test.c
> > index 2e87e442..6d77ee72 100644
> > --- a/tests/debugfs_test.c
> > +++ b/tests/debugfs_test.c
> > @@ -99,6 +99,7 @@ igt_main
> > igt_fixture {
> > fd = drm_open_driver_master(DRIVER_INTEL);
> > igt_require_gem(fd);
> > + igt_require_display(fd);
> > debugfs = igt_debugfs_dir(fd);
> >
> > kmstest_set_vt_graphics_mode();
>
> I guess we lose the emon subtest here. But that's ilk only so meh.
Skipping the entire set of tests just because there's no display
attached, no.
> <snip>
> > diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c
> > index 6ab2595b..6c347acc 100644
> > --- a/tests/perf_pmu.c
> > +++ b/tests/perf_pmu.c
> > @@ -1397,6 +1397,7 @@ test_rc6(int gem_fd, unsigned int flags)
> > if (flags & TEST_RUNTIME_PM) {
> > drmModeRes *res;
> >
> > + igt_require_display(gem_fd);
>
> Might we want to just skip the display interaction here but still
> execute the rest of the subtest? Or is that redundant when there is no
> display anyway?
Nope. Should work without.
> > res = drmModeGetResources(gem_fd);
> > igt_assert(res);
> >
> <snip>
> > diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
> > index c24fd95b..627b1a1a 100644
> > --- a/tests/pm_rpm.c
> > +++ b/tests/pm_rpm.c
> > @@ -719,6 +719,7 @@ static bool setup_environment(void)
> >
> > debugfs = igt_debugfs_dir(drm_fd);
> > igt_require(debugfs != -1);
> > + igt_require_display(drm_fd);
>
> Somewhat the same question here. Although this test looks like it's
> expecting display stuff all over, so probably can't easily exclude it.
Nah, this is meant to work (and even tests) i915.disable_display.
Nacked-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests: Check and skip tests when driver don't have display enabled
2018-09-07 14:57 ` Chris Wilson
@ 2018-09-07 23:31 ` Souza, Jose
0 siblings, 0 replies; 6+ messages in thread
From: Souza, Jose @ 2018-09-07 23:31 UTC (permalink / raw)
To: ville.syrjala, chris; +Cc: igt-dev, Nikula, Jani
On Fri, 2018-09-07 at 15:57 +0100, Chris Wilson wrote:
> Quoting Ville Syrjälä (2018-09-07 15:48:28)
> > On Thu, Sep 06, 2018 at 05:44:54PM -0700, José Roberto de Souza
> > wrote:
> > > Right now i915 is not doing the full job to complete disable
> > > display
> > > when i915.disable_display parameters is set, when that is
> > > completed
> > > it will cause several tests to fail, so here skiping all the
> > > tests
> > > that depends on modeset or display block when those are not
> > > available.
>
> <rant>
> This changelog is a pile of excuses.
>
> > > Cc: Jani Nikula <jani.nikula@intel.com>
> > > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > > ---
> > > lib/igt_kms.c | 20 ++++++++++++++++++++
> > > lib/igt_kms.h | 1 +
> > > tests/debugfs_test.c | 1 +
> > > tests/gem_exec_nop.c | 1 +
> > > tests/kms_3d.c | 1 +
> > > tests/kms_addfb_basic.c | 4 +++-
> > > tests/kms_atomic.c | 1 +
> > > tests/kms_atomic_interruptible.c | 1 +
> > > tests/kms_available_modes_crc.c | 1 +
> > > tests/kms_busy.c | 1 +
> > > tests/kms_ccs.c | 1 +
> > > tests/kms_chamelium.c | 1 +
> > > tests/kms_chv_cursor_fail.c | 1 +
> > > tests/kms_color.c | 1 +
> > > tests/kms_concurrent.c | 1 +
> > > tests/kms_crtc_background_color.c | 1 +
> > > tests/kms_cursor_crc.c | 1 +
> > > tests/kms_cursor_legacy.c | 1 +
> > > tests/kms_draw_crc.c | 1 +
> > > tests/kms_fbcon_fbt.c | 1 +
> > > tests/kms_fence_pin_leak.c | 1 +
> > > tests/kms_flip.c | 1 +
> > > tests/kms_flip_event_leak.c | 1 +
> > > tests/kms_flip_tiling.c | 1 +
> > > tests/kms_force_connector_basic.c | 1 +
> > > tests/kms_frontbuffer_tracking.c | 1 +
> > > tests/kms_getfb.c | 4 +++-
> > > tests/kms_hdmi_inject.c | 1 +
> > > tests/kms_invalid_dotclock.c | 1 +
> > > tests/kms_legacy_colorkey.c | 1 +
> > > tests/kms_mmap_write_crc.c | 1 +
> > > tests/kms_panel_fitting.c | 1 +
> > > tests/kms_pipe_b_c_ivb.c | 1 +
> > > tests/kms_pipe_crc_basic.c | 1 +
> > > tests/kms_plane.c | 1 +
> > > tests/kms_plane_lowres.c | 1 +
> > > tests/kms_plane_multiple.c | 1 +
> > > tests/kms_plane_scaling.c | 1 +
> > > tests/kms_properties.c | 1 +
> > > tests/kms_psr.c | 1 +
> > > tests/kms_pwrite_crc.c | 1 +
> > > tests/kms_rmfb.c | 1 +
> > > tests/kms_rotation_crc.c | 1 +
> > > tests/kms_setmode.c | 1 +
> > > tests/kms_sysfs_edid_timing.c | 5 +++++
> > > tests/kms_tv_load_detect.c | 1 +
> > > tests/kms_universal_plane.c | 1 +
> > > tests/kms_vblank.c | 1 +
> > > tests/perf_pmu.c | 1 +
> > > tests/pm_backlight.c | 5 ++++-
> > > tests/pm_lpsp.c | 1 +
> > > tests/pm_rpm.c | 1 +
> > > tests/prime_vgem.c | 2 ++
> > > tests/testdisplay.c | 1 +
> > > 54 files changed, 85 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> > > index 62d84684..7578a10b 100644
> > > --- a/lib/igt_kms.c
> > > +++ b/lib/igt_kms.c
> > > @@ -2018,6 +2018,26 @@ int igt_display_get_n_pipes(igt_display_t
> > > *display)
> > > return display->n_pipes;
> > > }
> > >
> > > +/**
> > > + * igt_display_require_output:
> > > + * @drm_fd: a drm file descriptor
> > > + *
> > > + * Checks if driver supports modeset and have display enabled.
> > > + */
> > > +void igt_require_display(int fd)
> > > +{
> > > + drmModeRes *resources;
> > > + int pipes;
> > > +
> > > + resources = drmModeGetResources(fd);
>
> You don't need to allocate anything, so don't.
So what is the alternative here? I have sent a patch adding
DRM_CAP_MODESET, so we could check if modeset is supported by calling
drm_getcap() but you turn that down and said that we should
use drmModeGetResources().
https://patchwork.freedesktop.org/patch/243554/
>
> > > + igt_require_f(resources, "drm driver do not support
> > > modeset\n");
> > > +
> > > + pipes = resources->count_crtcs;
> > > + drmModeFreeResources(resources);
> > > +
> > > + igt_require_f(pipes > 0, "drm driver without display
> > > hardware\n");
> > > +}
> > > +
> > > /**
> > > * igt_display_require_output:
> > > * @display: A pointer to an #igt_display_t structure
> > > diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> > > index 3a12f278..037bcb23 100644
> > > --- a/lib/igt_kms.h
> > > +++ b/lib/igt_kms.h
> > > @@ -388,6 +388,7 @@ void igt_display_commit_atomic(igt_display_t
> > > *display, uint32_t flags, void *use
> > > int igt_display_try_commit2(igt_display_t *display, enum
> > > igt_commit_style s);
> > > int igt_display_drop_events(igt_display_t *display);
> > > int igt_display_get_n_pipes(igt_display_t *display);
> > > +void igt_require_display(int fd);
> > > void igt_display_require_output(igt_display_t *display);
> > > void igt_display_require_output_on_pipe(igt_display_t *display,
> > > enum pipe pipe);
> > >
> > > diff --git a/tests/debugfs_test.c b/tests/debugfs_test.c
> > > index 2e87e442..6d77ee72 100644
> > > --- a/tests/debugfs_test.c
> > > +++ b/tests/debugfs_test.c
> > > @@ -99,6 +99,7 @@ igt_main
> > > igt_fixture {
> > > fd = drm_open_driver_master(DRIVER_INTEL);
> > > igt_require_gem(fd);
> > > + igt_require_display(fd);
> > > debugfs = igt_debugfs_dir(fd);
> > >
> > > kmstest_set_vt_graphics_mode();
> >
> > I guess we lose the emon subtest here. But that's ilk only so meh.
>
> Skipping the entire set of tests just because there's no display
> attached, no.
Okay, this was easily fixed.
>
> > <snip>
> > > diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c
> > > index 6ab2595b..6c347acc 100644
> > > --- a/tests/perf_pmu.c
> > > +++ b/tests/perf_pmu.c
> > > @@ -1397,6 +1397,7 @@ test_rc6(int gem_fd, unsigned int flags)
> > > if (flags & TEST_RUNTIME_PM) {
> > > drmModeRes *res;
> > >
> > > + igt_require_display(gem_fd);
> >
> > Might we want to just skip the display interaction here but still
> > execute the rest of the subtest? Or is that redundant when there is
> > no
> > display anyway?
>
> Nope. Should work without.
Okay, this was fixed too.
>
> > > res = drmModeGetResources(gem_fd);
> > > igt_assert(res);
> > >
> >
> > <snip>
> > > diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
> > > index c24fd95b..627b1a1a 100644
> > > --- a/tests/pm_rpm.c
> > > +++ b/tests/pm_rpm.c
> > > @@ -719,6 +719,7 @@ static bool setup_environment(void)
> > >
> > > debugfs = igt_debugfs_dir(drm_fd);
> > > igt_require(debugfs != -1);
> > > + igt_require_display(drm_fd);
> >
> > Somewhat the same question here. Although this test looks like it's
> > expecting display stuff all over, so probably can't easily exclude
> > it.
>
> Nah, this is meant to work (and even tests) i915.disable_display.
Okay, if I do 'if (ms_data.res) igt_require(dmc_loaded());' in
setup_environment()(because I'm not loading DMC when display is
disabled in my kernel patches) and do some changes noted bellow I can
make some tests here run but some tests becomes not so much useful when
display is disabled, please check below:
- basic-rte
skip: as it only calls and disable_all_screens_and_wait() and
enable_one_screen_and_wait()
- drm-resources-equal
skip: as it calls enable_one_screen_and_wait() and
disable_all_screens_and_wait() to get drm info, between those calls and
compare if they are equal
- basic-pci-d3-state
skip: as it calls disable_all_screens_and_wait() and
enable_one_screen_and_wait() to check device is in D3, with display off
it will ways be in D3 I can change it to check if it is D3 in that case
but with no toggle.
- modeset-lpsp
- modeset-non-lpsp
skip: because it uses modeset
- dpms-lpsp
- dpms-non-lpsp
skip: as it calls enable_one_screen_with_type() that calls
set_mode_for_params()
- gem-mmap-cpu
- gem-mmap-gtt
- gem-pread
- gem-execbuf
can run: it do some gem operations with
enable_one_screen_and_wait() and then others with
disable_all_screens_and_wait(), I can make it run by adding a 'if
(!data->res) return;' in those 2 functions but not sure if it will be a
useful test
- gem-idle
run: a simple 'if (!data->res) return;' in
disable_all_screens() make this run
- gem-evict-pwrite
run: a simple 'if (!data->res) return;' in
disable_all_screens() make this run
- cursor
- cursor-dpms
- legacy-planes
- legacy-planes-dpms
- universal-planes
- universal-planes-dpms
skip: because it uses modeset
- reg-read-ioctl
run: a simple 'if (!data->res) return;' in
disable_all_screens() make this run
- i2c
skip: when the work to complete disable displays is finished
I2C will not be initialized
- pc8-residency
can run: it disable_all_screens() then check pc8 residence then
enable_one_screen() check if pc8 residence stoped but not sure if it
will be a useful test
- debugfs-read
run
- debugfs-forcewake-user
run: a simple 'if (!data->res) return;' in
disable_all_screens() make this run
- sysfs-read
run
- dpms-mode-unset-lpsp
skip: as it calls enable_one_screen_with_type() that calls
set_mode_for_params()
- dpms-mode-unset-non-lpsp
skip: as it calls enable_one_screen_with_type() that calls
set_mode_for_params()
- fences
- fences-dpms
- modeset-lpsp-stress
- modeset-non-lpsp-stress
- modeset-lpsp-stress-no-wait
- modeset-non-lpsp-stress-no-wait
- modeset-pc8-residency-stress
- modeset-stress-extra-wait
skip: because it uses modeset
- system-suspend-devices
- system-suspend
- system-suspend-execbuf
run: a simple 'if (!data->res) return;' in
disable_all_screens() make this run
- system-suspend-modeset
run: a simple 'if (!data->res) return;' in
disable_all_screens() and enable_one_screen_and_wait() make this run,
but I guess it will not be useful anymore
- system-hibernate-devices
- system-hibernate
- gem-execbuf-stress
- gem-execbuf-stress-pc8
- gem-execbuf-stress-extra-wait
- pm-tiling
run: a simple 'if (!data->res) return;' in
disable_all_screens() and enable_one_screen_and_wait() make this run
- pm-caching
run: a simple 'if (!data->res) return;' in
disable_all_screens() make this run
- module-reload
run
>
> Nacked-by: Chris Wilson <chris@chris-wilson.co.uk>
> -Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-09-07 23:31 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-07 0:44 [igt-dev] [PATCH i-g-t] tests: Check and skip tests when driver don't have display enabled José Roberto de Souza
2018-09-07 1:53 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2018-09-07 13:59 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2018-09-07 14:48 ` [igt-dev] [PATCH i-g-t] " Ville Syrjälä
2018-09-07 14:57 ` Chris Wilson
2018-09-07 23:31 ` Souza, Jose
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.