All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load
@ 2018-10-17 12:15 Arkadiusz Hiler
  2018-10-17 12:15 ` [igt-dev] [PATCH i-g-t 2/3] tests/i915_load: Add 'load' subtest Arkadiusz Hiler
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Arkadiusz Hiler @ 2018-10-17 12:15 UTC (permalink / raw)
  To: igt-dev; +Cc: Petri Latvala, Martin Peres

The test is i915 specific, so let's be clear on that. There is also more
subtests coming that are not just reloading.

Cc: Martin Peres <martin.peres@linux.intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
---
 tests/Makefile.sources                     | 2 +-
 tests/{drv_module_reload.c => i915_load.c} | 0
 tests/intel-ci/blacklist.txt               | 2 +-
 tests/intel-ci/fast-feedback.testlist      | 6 +++---
 tests/meson.build                          | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)
 rename tests/{drv_module_reload.c => i915_load.c} (100%)

diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index cdf5a7e1..a1fa6e98 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -22,6 +22,7 @@ AMDGPU_TESTS = \
 	$(NULL)
 
 TESTS_progs = \
+	i915_load \
 	core_auth \
 	core_get_client_auth \
 	core_getclient \
@@ -36,7 +37,6 @@ TESTS_progs = \
 	drv_getparams_basic \
 	drv_hangman \
 	drv_missed_irq \
-	drv_module_reload \
 	drv_selftest \
 	drv_suspend \
 	gem_bad_reloc \
diff --git a/tests/drv_module_reload.c b/tests/i915_load.c
similarity index 100%
rename from tests/drv_module_reload.c
rename to tests/i915_load.c
diff --git a/tests/intel-ci/blacklist.txt b/tests/intel-ci/blacklist.txt
index 88b2fe31..129ea3f2 100644
--- a/tests/intel-ci/blacklist.txt
+++ b/tests/intel-ci/blacklist.txt
@@ -12,7 +12,7 @@ igt@drm_mm(@.*)?
 # self-contained tests, leading to random
 # failures in tests run afterwards.
 ###############################################
-igt@drv_module_reload(@.*)?
+igt@i915_load(@.*)?
 igt@pm_rpm@module-reload
 ###############################################
 # GEM
diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist
index c625904d..5dfa4eb7 100644
--- a/tests/intel-ci/fast-feedback.testlist
+++ b/tests/intel-ci/fast-feedback.testlist
@@ -269,7 +269,7 @@ igt@vgem_basic@sysfs
 # driver in a broken state that is not otherwise noticed in that test.
 
 igt@vgem_basic@unload
-igt@drv_module_reload@basic-reload
-igt@drv_module_reload@basic-no-display
-igt@drv_module_reload@basic-reload-inject
+igt@i915_load@basic-reload
+igt@i915_load@basic-no-display
+igt@i915_load@basic-reload-inject
 igt@pm_rpm@module-reload
diff --git a/tests/meson.build b/tests/meson.build
index d74eb109..41cc18c8 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -1,4 +1,5 @@
 test_progs = [
+	'i915_load',
 	'core_auth',
 	'core_get_client_auth',
 	'core_getclient',
@@ -13,7 +14,6 @@ test_progs = [
 	'drv_getparams_basic',
 	'drv_hangman',
 	'drv_missed_irq',
-	'drv_module_reload',
 	'drv_selftest',
 	'drv_suspend',
 	'gem_bad_reloc',
-- 
2.17.2

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [igt-dev] [PATCH i-g-t 2/3] tests/i915_load: Add 'load' subtest
  2018-10-17 12:15 [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load Arkadiusz Hiler
@ 2018-10-17 12:15 ` Arkadiusz Hiler
  2018-10-17 12:31   ` Chris Wilson
  2018-10-17 12:15 ` [igt-dev] [PATCH i-g-t 3/3] intel-ci: Prepend fast-feedback with i915_load@load Arkadiusz Hiler
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Arkadiusz Hiler @ 2018-10-17 12:15 UTC (permalink / raw)
  To: igt-dev; +Cc: Petri Latvala

This subtest is meant to be run as a first thing on your system, making
it a catch-all for all the issues we can hit during the HW init, so the
runner can do its magic by looking for dragons in the dmesg and
overriding the final result if any were spotted.

To have full "normal boot" experience it also probes all the connectors.

The subtest warns if the driver is already loaded, so we know that
there's something off with the environment configuration.

It's already blacklisted for Intel's CI, along the other
module-wrangling subtests.

Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
---
 tests/i915_load.c | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/tests/i915_load.c b/tests/i915_load.c
index cf4aea80..4f61d280 100644
--- a/tests/i915_load.c
+++ b/tests/i915_load.c
@@ -35,6 +35,7 @@
 #include <signal.h>
 #include <sys/ioctl.h>
 #include <fcntl.h>
+#include <xf86drmMode.h>
 
 
 #define LOCAL_I915_EXEC_BSD_SHIFT      (13)
@@ -324,8 +325,46 @@ hda_dynamic_debug(bool enable)
 	fclose(fp);
 }
 
+static void
+reprobe_connectors(int fd)
+{
+	int i;
+	drmModeConnectorPtr conn;
+
+	drmModeResPtr res = drmModeGetResources(fd);
+	if (!res)
+		return;
+
+	for (i = 0; i < res->count_connectors; ++i) {
+		/* drmModeGetConnector forces probe */
+		conn = drmModeGetConnector(fd, res->connectors[i]);
+		igt_assert(conn);
+		drmModeFreeConnector(conn);
+	}
+
+	drmModeFreeResources(res);
+}
+
 igt_main
 {
+	igt_subtest("load") {
+		int fd, load_error;
+		bool i915_already_loaded;
+
+		i915_already_loaded = igt_kmod_is_loaded("i915");
+		igt_warn_on(i915_already_loaded);
+
+		if (!i915_already_loaded) {
+			load_error = igt_i915_driver_load(NULL);
+			igt_assert_eq(load_error, 0);
+		}
+
+		fd = __drm_open_driver(DRIVER_INTEL);
+		igt_assert(fd > 0);
+		reprobe_connectors(fd);
+		close(fd);
+	}
+
 	igt_subtest("basic-reload") {
 		int load_error;
 
-- 
2.17.2

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [igt-dev] [PATCH i-g-t 3/3] intel-ci: Prepend fast-feedback with i915_load@load
  2018-10-17 12:15 [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load Arkadiusz Hiler
  2018-10-17 12:15 ` [igt-dev] [PATCH i-g-t 2/3] tests/i915_load: Add 'load' subtest Arkadiusz Hiler
@ 2018-10-17 12:15 ` Arkadiusz Hiler
  2018-10-17 12:34 ` [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load Chris Wilson
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 11+ messages in thread
From: Arkadiusz Hiler @ 2018-10-17 12:15 UTC (permalink / raw)
  To: igt-dev; +Cc: Tomi Sarvela, Petri Latvala

Make the i915-loading subtest first thing in fast-feedback.testlist,
so we have a nice catch-all for all the issues luring in dmesg related
to hw initialization.

This required i915 module to be blacklisted in order to work.

Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Tomi Sarvela <tomi.p.sarvela@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
---
 tests/intel-ci/fast-feedback.testlist | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist
index 5dfa4eb7..2296436c 100644
--- a/tests/intel-ci/fast-feedback.testlist
+++ b/tests/intel-ci/fast-feedback.testlist
@@ -1,5 +1,10 @@
 # Keep alphabetically sorted by default
 
+# Special catch-all tests for driver loading.
+# CI targets should be started with i915 blacklisted,
+# so the module won't be loaded before we start executing.
+igt@i915_load@load
+
 igt@core_auth@basic-auth
 igt@core_prop_blob@basic
 igt@debugfs_test@read_all_entries
-- 
2.17.2

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 2/3] tests/i915_load: Add 'load' subtest
  2018-10-17 12:15 ` [igt-dev] [PATCH i-g-t 2/3] tests/i915_load: Add 'load' subtest Arkadiusz Hiler
@ 2018-10-17 12:31   ` Chris Wilson
  2018-10-18 13:28     ` Arkadiusz Hiler
  0 siblings, 1 reply; 11+ messages in thread
From: Chris Wilson @ 2018-10-17 12:31 UTC (permalink / raw)
  To: Arkadiusz Hiler, igt-dev; +Cc: Petri Latvala

Quoting Arkadiusz Hiler (2018-10-17 13:15:44)
> This subtest is meant to be run as a first thing on your system, making
> it a catch-all for all the issues we can hit during the HW init, so the
> runner can do its magic by looking for dragons in the dmesg and
> overriding the final result if any were spotted.
> 
> To have full "normal boot" experience it also probes all the connectors.
> 
> The subtest warns if the driver is already loaded, so we know that
> there's something off with the environment configuration.
> 
> It's already blacklisted for Intel's CI, along the other
> module-wrangling subtests.
> 
> Cc: Petri Latvala <petri.latvala@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
> ---
>  tests/i915_load.c | 39 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 39 insertions(+)
> 
> diff --git a/tests/i915_load.c b/tests/i915_load.c
> index cf4aea80..4f61d280 100644
> --- a/tests/i915_load.c
> +++ b/tests/i915_load.c
> @@ -35,6 +35,7 @@
>  #include <signal.h>
>  #include <sys/ioctl.h>
>  #include <fcntl.h>
> +#include <xf86drmMode.h>
>  
>  
>  #define LOCAL_I915_EXEC_BSD_SHIFT      (13)
> @@ -324,8 +325,46 @@ hda_dynamic_debug(bool enable)
>         fclose(fp);
>  }
>  
> +static void
> +reprobe_connectors(int fd)
> +{
> +       int i;
> +       drmModeConnectorPtr conn;
> +
> +       drmModeResPtr res = drmModeGetResources(fd);
> +       if (!res)
> +               return;

You can be really cheeky and do this entirely from the stack.

> +       for (i = 0; i < res->count_connectors; ++i) {
> +               /* drmModeGetConnector forces probe */
> +               conn = drmModeGetConnector(fd, res->connectors[i]);
> +               igt_assert(conn);

And doing so would allow you to inspect the error directly; as this
assert can mean many, many things. It could even be legitimate for DP-MST.

> +               drmModeFreeConnector(conn);
> +       }
> +
> +       drmModeFreeResources(res);
> +}
> +
>  igt_main
>  {
> +       igt_subtest("load") {

load?  This is more of a "probe", I would say.

> +               int fd, load_error;
> +               bool i915_already_loaded;
> +
> +               i915_already_loaded = igt_kmod_is_loaded("i915");
> +               igt_warn_on(i915_already_loaded);

Warn? You didn't unload so randomly warning based on run order.

> +               if (!i915_already_loaded) {
> +                       load_error = igt_i915_driver_load(NULL);
> +                       igt_assert_eq(load_error, 0);
> +               }
> +
> +               fd = __drm_open_driver(DRIVER_INTEL);

__drm_open_driver -> performs a default modprobe of the driver.

> +               igt_assert(fd > 0);
> +               reprobe_connectors(fd);
> +               close(fd);
> +       }
> +
>         igt_subtest("basic-reload") {
>                 int load_error;
>  
> -- 
> 2.17.2
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load
  2018-10-17 12:15 [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load Arkadiusz Hiler
  2018-10-17 12:15 ` [igt-dev] [PATCH i-g-t 2/3] tests/i915_load: Add 'load' subtest Arkadiusz Hiler
  2018-10-17 12:15 ` [igt-dev] [PATCH i-g-t 3/3] intel-ci: Prepend fast-feedback with i915_load@load Arkadiusz Hiler
@ 2018-10-17 12:34 ` Chris Wilson
  2018-10-17 15:30   ` Arkadiusz Hiler
  2018-10-17 14:26 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/3] " Patchwork
  2018-10-17 17:40 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  4 siblings, 1 reply; 11+ messages in thread
From: Chris Wilson @ 2018-10-17 12:34 UTC (permalink / raw)
  To: Arkadiusz Hiler, igt-dev; +Cc: Petri Latvala, Martin Peres

Quoting Arkadiusz Hiler (2018-10-17 13:15:43)
> The test is i915 specific, so let's be clear on that. There is also more
> subtests coming that are not just reloading.

It's still focussed on module_load, so I would want to keep module in
there so it's clearly nothing to do with runtime loads (workloads).

And adding a 'i915' is a good time to start a i915/

> Cc: Martin Peres <martin.peres@linux.intel.com>
> Cc: Petri Latvala <petri.latvala@intel.com>
> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
> ---
>  tests/Makefile.sources                     | 2 +-
>  tests/{drv_module_reload.c => i915_load.c} | 0
>  tests/intel-ci/blacklist.txt               | 2 +-
>  tests/intel-ci/fast-feedback.testlist      | 6 +++---
>  tests/meson.build                          | 2 +-
>  5 files changed, 6 insertions(+), 6 deletions(-)
>  rename tests/{drv_module_reload.c => i915_load.c} (100%)
> 
> diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> index cdf5a7e1..a1fa6e98 100644
> --- a/tests/Makefile.sources
> +++ b/tests/Makefile.sources
> @@ -22,6 +22,7 @@ AMDGPU_TESTS = \
>         $(NULL)
>  
>  TESTS_progs = \
> +       i915_load \

'i' is after 'c'
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/3] tests: Rename drv_module_reload to i915_load
  2018-10-17 12:15 [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load Arkadiusz Hiler
                   ` (2 preceding siblings ...)
  2018-10-17 12:34 ` [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load Chris Wilson
@ 2018-10-17 14:26 ` Patchwork
  2018-10-17 17:40 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  4 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2018-10-17 14:26 UTC (permalink / raw)
  To: Arkadiusz Hiler; +Cc: igt-dev

== Series Details ==

Series: series starting with [i-g-t,1/3] tests: Rename drv_module_reload to i915_load
URL   : https://patchwork.freedesktop.org/series/51117/
State : success

== Summary ==

= CI Bug Log - changes from CI_DRM_4994 -> IGTPW_1958 =

== Summary - SUCCESS ==

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/51117/revisions/1/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in IGTPW_1958:

  === IGT changes ===

    ==== Possible regressions ====

    {igt@i915_load@load}:
      fi-bsw-kefka:       NOTRUN -> WARN
      fi-snb-2520m:       NOTRUN -> WARN
      fi-elk-e7500:       NOTRUN -> WARN
      fi-hsw-4770r:       NOTRUN -> WARN
      fi-icl-u2:          NOTRUN -> WARN
      fi-ilk-650:         NOTRUN -> WARN
      fi-bxt-j4205:       NOTRUN -> WARN
      fi-skl-6700hq:      NOTRUN -> WARN
      fi-cfl-s3:          NOTRUN -> WARN
      fi-cfl-8109u:       NOTRUN -> WARN
      fi-kbl-7500u:       NOTRUN -> WARN
      fi-icl-u:           NOTRUN -> WARN
      fi-skl-6600u:       NOTRUN -> WARN
      fi-glk-j4005:       NOTRUN -> WARN
      fi-apl-guc:         NOTRUN -> WARN
      fi-cfl-8700k:       NOTRUN -> WARN
      fi-skl-iommu:       NOTRUN -> WARN
      fi-hsw-peppy:       NOTRUN -> WARN
      fi-blb-e6850:       NOTRUN -> WARN
      fi-ivb-3770:        NOTRUN -> WARN
      fi-skl-6700k2:      NOTRUN -> WARN
      fi-bsw-n3050:       NOTRUN -> WARN
      fi-cnl-u:           NOTRUN -> WARN
      fi-kbl-7567u:       NOTRUN -> WARN
      fi-skl-guc:         NOTRUN -> WARN
      fi-whl-u:           NOTRUN -> WARN
      fi-cfl-guc:         NOTRUN -> WARN
      fi-hsw-4770:        NOTRUN -> WARN
      fi-kbl-7560u:       NOTRUN -> WARN
      fi-bxt-dsi:         NOTRUN -> WARN
      fi-skl-gvtdvm:      NOTRUN -> WARN
      fi-kbl-8809g:       NOTRUN -> WARN
      fi-skl-6260u:       NOTRUN -> WARN
      fi-kbl-r:           NOTRUN -> WARN
      fi-byt-j1900:       NOTRUN -> WARN
      fi-kbl-x1275:       NOTRUN -> WARN
      fi-byt-clapper:     NOTRUN -> WARN
      fi-kbl-guc:         NOTRUN -> WARN
      fi-pnv-d510:        NOTRUN -> WARN
      fi-skl-6770hq:      NOTRUN -> WARN
      fi-bdw-5557u:       NOTRUN -> WARN
      fi-bwr-2160:        NOTRUN -> WARN

    
== Known issues ==

  Here are the changes found in IGTPW_1958 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@kms_flip@basic-flip-vs-dpms:
      fi-skl-6700hq:      PASS -> DMESG-WARN (fdo#105998)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
      fi-byt-clapper:     PASS -> INCOMPLETE (fdo#102657)

    
    ==== Possible fixes ====

    igt@gem_exec_suspend@basic-s3:
      fi-cfl-8109u:       INCOMPLETE (fdo#108126, fdo#107187) -> PASS

    igt@kms_frontbuffer_tracking@basic:
      fi-icl-u2:          FAIL (fdo#103167) -> PASS

    igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a:
      fi-byt-clapper:     FAIL (fdo#107362) -> PASS

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#102657 https://bugs.freedesktop.org/show_bug.cgi?id=102657
  fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
  fdo#105998 https://bugs.freedesktop.org/show_bug.cgi?id=105998
  fdo#107187 https://bugs.freedesktop.org/show_bug.cgi?id=107187
  fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
  fdo#108126 https://bugs.freedesktop.org/show_bug.cgi?id=108126


== Participating hosts (46 -> 42) ==

  Additional (1): fi-icl-u 
  Missing    (5): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 


== Build changes ==

    * IGT: IGT_4682 -> IGTPW_1958

  CI_DRM_4994: a587d260a1db3d6660c4148a5b3055f525bc7938 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_1958: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1958/
  IGT_4682: 0ac43db33e116b546e5704fe0b4dde21f391e09c @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools



== Testlist changes ==

+igt@i915_load@basic-no-display
+igt@i915_load@basic-reload
+igt@i915_load@basic-reload-inject
+igt@i915_load@load
-igt@drv_module_reload@basic-no-display
-igt@drv_module_reload@basic-reload
-igt@drv_module_reload@basic-reload-inject

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1958/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load
  2018-10-17 12:34 ` [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load Chris Wilson
@ 2018-10-17 15:30   ` Arkadiusz Hiler
  2018-10-17 15:50     ` Chris Wilson
  0 siblings, 1 reply; 11+ messages in thread
From: Arkadiusz Hiler @ 2018-10-17 15:30 UTC (permalink / raw)
  To: Chris Wilson; +Cc: igt-dev, Tomi Sarvela, Petri Latvala, Martin Peres

On Wed, Oct 17, 2018 at 01:34:00PM +0100, Chris Wilson wrote:
> Quoting Arkadiusz Hiler (2018-10-17 13:15:43)
> > The test is i915 specific, so let's be clear on that. There is also more
> > subtests coming that are not just reloading.
> 
> It's still focussed on module_load, so I would want to keep module in
> there so it's clearly nothing to do with runtime loads (workloads).

k

> And adding a 'i915' is a good time to start a i915/

I guess it still makes sense to have the binaries in a single directory,
both in build dir and libexec, just prefixed with the folder name.

With meson that's quite easy:

--------------------------------------------------
diff --git a/tests/meson.build b/tests/meson.build
index 41cc18c8..d4442ffc 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -1,5 +1,4 @@
 test_progs = [
-  'i915_load_module',
   'core_auth',
   'core_get_client_auth',
   'core_getclient',
@@ -215,6 +214,10 @@ test_progs = [
   'vgem_slow',
 ]

+i915_progs = [
+  'load_module',
+]
+
 test_deps = [ igt_deps ]

 if libdrm_nouveau.found()
@@ -250,6 +253,14 @@ foreach prog : test_progs
         install : true)
 endforeach

+foreach prog : i915_progs
+  test_executables += executable('i915_' + prog, join_paths('i915', prog + '.c'),
+        dependencies : test_deps,
+        install_dir : libexecdir,
+        install_rpath : libexecdir_rpathdir,
+        install : true)
+endforeach
+
 test_executables += executable('gem_eio', 'gem_eio.c',
      dependencies : test_deps + [ realtime ],
      install_dir : libexecdir,
--------------------------------------------------

We need to figure how to do something similar with autotools.

... unless there is a different preference, that also won't make
Martin/Tomi miserable.

> > Cc: Martin Peres <martin.peres@linux.intel.com>
> > Cc: Petri Latvala <petri.latvala@intel.com>
> > Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
> > ---
> >  tests/Makefile.sources                     | 2 +-
> >  tests/{drv_module_reload.c => i915_load.c} | 0
> >  tests/intel-ci/blacklist.txt               | 2 +-
> >  tests/intel-ci/fast-feedback.testlist      | 6 +++---
> >  tests/meson.build                          | 2 +-
> >  5 files changed, 6 insertions(+), 6 deletions(-)
> >  rename tests/{drv_module_reload.c => i915_load.c} (100%)
> > 
> > diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> > index cdf5a7e1..a1fa6e98 100644
> > --- a/tests/Makefile.sources
> > +++ b/tests/Makefile.sources
> > @@ -22,6 +22,7 @@ AMDGPU_TESTS = \
> >         $(NULL)
> >  
> >  TESTS_progs = \
> > +       i915_load \
> 
> 'i' is after 'c'
> -Chris

I am constantly bad with alphabet, but wow...

I think this time it was my brain ignoring the letter and treating this
as a numeral.
-Arek
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load
  2018-10-17 15:30   ` Arkadiusz Hiler
@ 2018-10-17 15:50     ` Chris Wilson
  2018-10-17 16:06       ` Arkadiusz Hiler
  0 siblings, 1 reply; 11+ messages in thread
From: Chris Wilson @ 2018-10-17 15:50 UTC (permalink / raw)
  To: Arkadiusz Hiler; +Cc: igt-dev, Tomi Sarvela, Petri Latvala, Martin Peres

Quoting Arkadiusz Hiler (2018-10-17 16:30:13)
> On Wed, Oct 17, 2018 at 01:34:00PM +0100, Chris Wilson wrote:
> > Quoting Arkadiusz Hiler (2018-10-17 13:15:43)
> > > The test is i915 specific, so let's be clear on that. There is also more
> > > subtests coming that are not just reloading.
> > 
> > It's still focussed on module_load, so I would want to keep module in
> > there so it's clearly nothing to do with runtime loads (workloads).
> 
> k
> 
> > And adding a 'i915' is a good time to start a i915/
> 
> I guess it still makes sense to have the binaries in a single directory,
> both in build dir and libexec, just prefixed with the folder name.
> 
> With meson that's quite easy:

Seems overkill for 'i915/i915_module_load', and maybe not all i915/
tests will themselves start with i915_? Just that i915/ is the
collection of i915 specific tests (like gem_, drv_hangman).
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load
  2018-10-17 15:50     ` Chris Wilson
@ 2018-10-17 16:06       ` Arkadiusz Hiler
  0 siblings, 0 replies; 11+ messages in thread
From: Arkadiusz Hiler @ 2018-10-17 16:06 UTC (permalink / raw)
  To: Chris Wilson; +Cc: igt-dev, Tomi Sarvela, Petri Latvala, Martin Peres

On Wed, Oct 17, 2018 at 04:50:46PM +0100, Chris Wilson wrote:
> Quoting Arkadiusz Hiler (2018-10-17 16:30:13)
> > On Wed, Oct 17, 2018 at 01:34:00PM +0100, Chris Wilson wrote:
> > > Quoting Arkadiusz Hiler (2018-10-17 13:15:43)
> > > > The test is i915 specific, so let's be clear on that. There is also more
> > > > subtests coming that are not just reloading.
> > > 
> > > It's still focussed on module_load, so I would want to keep module in
> > > there so it's clearly nothing to do with runtime loads (workloads).
> > 
> > k
> > 
> > > And adding a 'i915' is a good time to start a i915/
> > 
> > I guess it still makes sense to have the binaries in a single directory,
> > both in build dir and libexec, just prefixed with the folder name.
> > 
> > With meson that's quite easy:
> 
> Seems overkill for 'i915/i915_module_load', and maybe not all i915/
> tests will themselves start with i915_? Just that i915/ is the
> collection of i915 specific tests (like gem_, drv_hangman).
> -Chris

i915/i915_ is an overkill, that why I haven't done that in example.

The file is i915/module_load.c and results in i915_module_load binary.

We should s/drv_// && mv $f i915/.

GEM can be easily handled. Just add a new lists and different prefixing
logic. e.g.:

-------------------------------------------------------------------------------
foreach prog : i915_progs
	test_executables += executable('i915_' + prog, join_paths('i915', prog + '.c'),
		   dependencies : test_deps,
		   install_dir : libexecdir,
		   install_rpath : libexecdir_rpathdir,
		   install : true)
endforeach

foreach prog : gem_progs
	test_executables += executable(prog, join_paths('i915', prog + '.c'),
		   dependencies : test_deps,
		   install_dir : libexecdir,
		   install_rpath : libexecdir_rpathdir,
		   install : true)
endforeach
-------------------------------------------------------------------------------
-Arek
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [igt-dev] ✗ Fi.CI.IGT: failure for series starting with [i-g-t,1/3] tests: Rename drv_module_reload to i915_load
  2018-10-17 12:15 [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load Arkadiusz Hiler
                   ` (3 preceding siblings ...)
  2018-10-17 14:26 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/3] " Patchwork
@ 2018-10-17 17:40 ` Patchwork
  4 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2018-10-17 17:40 UTC (permalink / raw)
  To: Arkadiusz Hiler; +Cc: igt-dev

== Series Details ==

Series: series starting with [i-g-t,1/3] tests: Rename drv_module_reload to i915_load
URL   : https://patchwork.freedesktop.org/series/51117/
State : failure

== Summary ==

= CI Bug Log - changes from IGT_4682_full -> IGTPW_1958_full =

== Summary - FAILURE ==

  Serious unknown changes coming with IGTPW_1958_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_1958_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/51117/revisions/1/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in IGTPW_1958_full:

  === IGT changes ===

    ==== Possible regressions ====

    igt@kms_frontbuffer_tracking@fbc-suspend:
      shard-kbl:          PASS -> DMESG-WARN

    
    ==== Warnings ====

    igt@kms_plane@plane-position-hole-dpms-pipe-a-planes:
      shard-snb:          SKIP -> PASS +5

    igt@pm_rc6_residency@rc6-accuracy:
      shard-kbl:          PASS -> SKIP

    
== Known issues ==

  Here are the changes found in IGTPW_1958_full that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@gem_exec_schedule@pi-ringfull-bsd:
      shard-glk:          NOTRUN -> FAIL (fdo#103158) +2

    igt@kms_available_modes_crc@available_mode_test_crc:
      shard-glk:          NOTRUN -> FAIL (fdo#106641)
      shard-snb:          PASS -> FAIL (fdo#106641)

    igt@kms_busy@extended-modeset-hang-newfb-render-b:
      shard-hsw:          NOTRUN -> DMESG-WARN (fdo#107956) +4

    igt@kms_busy@extended-modeset-hang-newfb-render-c:
      shard-kbl:          PASS -> DMESG-WARN (fdo#107956)

    igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-b:
      shard-snb:          NOTRUN -> DMESG-WARN (fdo#107956) +3

    igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-e:
      shard-snb:          SKIP -> INCOMPLETE (fdo#105411)

    igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-b:
      shard-hsw:          PASS -> DMESG-WARN (fdo#107956)

    igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-c:
      shard-glk:          NOTRUN -> DMESG-WARN (fdo#107956) +4

    igt@kms_cursor_crc@cursor-128x128-random:
      shard-apl:          PASS -> FAIL (fdo#103232) +2

    igt@kms_cursor_crc@cursor-128x42-random:
      shard-glk:          PASS -> FAIL (fdo#103232) +3

    igt@kms_cursor_crc@cursor-256x256-sliding:
      shard-kbl:          PASS -> FAIL (fdo#103232) +1

    igt@kms_cursor_legacy@cursora-vs-flipa-atomic-transitions-varying-size:
      shard-glk:          NOTRUN -> DMESG-WARN (fdo#105763, fdo#106538) +1

    igt@kms_cursor_legacy@cursorb-vs-flipb-toggle:
      shard-glk:          PASS -> DMESG-WARN (fdo#105763, fdo#106538) +2

    igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite:
      shard-apl:          PASS -> FAIL (fdo#103167) +2
      shard-glk:          NOTRUN -> FAIL (fdo#103167) +1

    igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff:
      shard-glk:          PASS -> FAIL (fdo#103167) +4

    igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary:
      shard-glk:          NOTRUN -> DMESG-FAIL (fdo#103167, fdo#106538)

    igt@kms_plane_alpha_blend@pipe-c-alpha-7efc:
      shard-glk:          NOTRUN -> FAIL (fdo#108146)

    igt@kms_plane_alpha_blend@pipe-c-alpha-transparant-fb:
      shard-glk:          NOTRUN -> FAIL (fdo#108145) +4

    igt@kms_setmode@basic:
      shard-apl:          PASS -> FAIL (fdo#99912)
      shard-hsw:          NOTRUN -> FAIL (fdo#99912)

    
    ==== Possible fixes ====

    igt@kms_available_modes_crc@available_mode_test_crc:
      shard-apl:          FAIL (fdo#106641) -> PASS

    igt@kms_busy@extended-modeset-hang-newfb-render-a:
      shard-snb:          DMESG-WARN (fdo#107956) -> PASS

    igt@kms_ccs@pipe-a-crc-sprite-planes-basic:
      shard-glk:          FAIL (fdo#108145) -> PASS

    igt@kms_cursor_crc@cursor-128x128-onscreen:
      shard-kbl:          FAIL (fdo#103232) -> PASS +1
      shard-apl:          FAIL (fdo#103232) -> PASS +4

    igt@kms_cursor_crc@cursor-128x128-suspend:
      shard-kbl:          FAIL (fdo#103232, fdo#103191) -> PASS

    igt@kms_cursor_crc@cursor-256x256-dpms:
      shard-glk:          FAIL (fdo#103232) -> PASS +1

    igt@kms_cursor_crc@cursor-256x256-suspend:
      shard-apl:          FAIL (fdo#103232, fdo#103191) -> PASS

    igt@kms_flip@flip-vs-expired-vblank:
      shard-glk:          FAIL (fdo#105363, fdo#102887) -> PASS

    igt@kms_flip@flip-vs-expired-vblank-interruptible:
      shard-kbl:          FAIL (fdo#105363, fdo#102887) -> PASS

    igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
      shard-apl:          FAIL (fdo#103167) -> PASS +4

    igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render:
      shard-kbl:          FAIL (fdo#103167) -> PASS +1

    igt@kms_frontbuffer_tracking@fbc-1p-rte:
      shard-apl:          FAIL (fdo#105682, fdo#103167) -> PASS

    igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-cpu:
      shard-glk:          FAIL (fdo#103167) -> PASS +3

    igt@kms_plane_multiple@atomic-pipe-a-tiling-x:
      shard-apl:          FAIL (fdo#103166) -> PASS +1
      shard-glk:          FAIL (fdo#103166) -> PASS
      shard-kbl:          FAIL (fdo#103166) -> PASS

    igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
      shard-apl:          DMESG-FAIL (fdo#103166, fdo#105602, fdo#103558) -> PASS +1

    igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
      shard-apl:          DMESG-WARN (fdo#105602, fdo#103558) -> PASS +15

    igt@kms_setmode@basic:
      shard-kbl:          FAIL (fdo#99912) -> PASS

    igt@perf_pmu@semaphore-wait-vecs0:
      shard-snb:          INCOMPLETE (fdo#105411) -> SKIP

    
    ==== Warnings ====

    igt@kms_plane@pixel-format-pipe-c-planes:
      shard-apl:          DMESG-FAIL (fdo#103166, fdo#105602, fdo#103558) -> FAIL (fdo#103166)

    
  fdo#102887 https://bugs.freedesktop.org/show_bug.cgi?id=102887
  fdo#103158 https://bugs.freedesktop.org/show_bug.cgi?id=103158
  fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
  fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
  fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
  fdo#103232 https://bugs.freedesktop.org/show_bug.cgi?id=103232
  fdo#103558 https://bugs.freedesktop.org/show_bug.cgi?id=103558
  fdo#105363 https://bugs.freedesktop.org/show_bug.cgi?id=105363
  fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
  fdo#105602 https://bugs.freedesktop.org/show_bug.cgi?id=105602
  fdo#105682 https://bugs.freedesktop.org/show_bug.cgi?id=105682
  fdo#105763 https://bugs.freedesktop.org/show_bug.cgi?id=105763
  fdo#106538 https://bugs.freedesktop.org/show_bug.cgi?id=106538
  fdo#106641 https://bugs.freedesktop.org/show_bug.cgi?id=106641
  fdo#107956 https://bugs.freedesktop.org/show_bug.cgi?id=107956
  fdo#108145 https://bugs.freedesktop.org/show_bug.cgi?id=108145
  fdo#108146 https://bugs.freedesktop.org/show_bug.cgi?id=108146
  fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912


== Participating hosts (6 -> 5) ==

  Missing    (1): shard-skl 


== Build changes ==

    * IGT: IGT_4682 -> IGTPW_1958
    * Linux: CI_DRM_4990 -> CI_DRM_4994

  CI_DRM_4990: 0bd34d92e9a27784cb988a300619f497ca0e99ec @ git://anongit.freedesktop.org/gfx-ci/linux
  CI_DRM_4994: a587d260a1db3d6660c4148a5b3055f525bc7938 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_1958: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1958/
  IGT_4682: 0ac43db33e116b546e5704fe0b4dde21f391e09c @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1958/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 2/3] tests/i915_load: Add 'load' subtest
  2018-10-17 12:31   ` Chris Wilson
@ 2018-10-18 13:28     ` Arkadiusz Hiler
  0 siblings, 0 replies; 11+ messages in thread
From: Arkadiusz Hiler @ 2018-10-18 13:28 UTC (permalink / raw)
  To: Chris Wilson; +Cc: igt-dev, Petri Latvala

On Wed, Oct 17, 2018 at 01:31:56PM +0100, Chris Wilson wrote:
> Quoting Arkadiusz Hiler (2018-10-17 13:15:44)
> > This subtest is meant to be run as a first thing on your system, making
> > it a catch-all for all the issues we can hit during the HW init, so the
> > runner can do its magic by looking for dragons in the dmesg and
> > overriding the final result if any were spotted.
> > 
> > To have full "normal boot" experience it also probes all the connectors.
> > 
> > The subtest warns if the driver is already loaded, so we know that
> > there's something off with the environment configuration.
> > 
> > It's already blacklisted for Intel's CI, along the other
> > module-wrangling subtests.
> > 
> > Cc: Petri Latvala <petri.latvala@intel.com>
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
> > ---
> >  tests/i915_load.c | 39 +++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 39 insertions(+)
> > 
> > diff --git a/tests/i915_load.c b/tests/i915_load.c
> > index cf4aea80..4f61d280 100644
> > --- a/tests/i915_load.c
> > +++ b/tests/i915_load.c
> > @@ -35,6 +35,7 @@
> >  #include <signal.h>
> >  #include <sys/ioctl.h>
> >  #include <fcntl.h>
> > +#include <xf86drmMode.h>
> >  
> >  
> >  #define LOCAL_I915_EXEC_BSD_SHIFT      (13)
> > @@ -324,8 +325,46 @@ hda_dynamic_debug(bool enable)
> >         fclose(fp);
> >  }
> >  
> > +static void
> > +reprobe_connectors(int fd)
> > +{
> > +       int i;
> > +       drmModeConnectorPtr conn;
> > +
> > +       drmModeResPtr res = drmModeGetResources(fd);
> > +       if (!res)
> > +               return;
> 
> You can be really cheeky and do this entirely from the stack.

Care to elaborate?

> > +       for (i = 0; i < res->count_connectors; ++i) {
> > +               /* drmModeGetConnector forces probe */
> > +               conn = drmModeGetConnector(fd, res->connectors[i]);
> > +               igt_assert(conn);
> 
> And doing so would allow you to inspect the error directly; as this
> assert can mean many, many things. It could even be legitimate for DP-MST.

Fair point.

> > +               drmModeFreeConnector(conn);
> > +       }
> > +
> > +       drmModeFreeResources(res);
> > +}
> > +
> >  igt_main
> >  {
> > +       igt_subtest("load") {
> 
> load?  This is more of a "probe", I would say.

It loads the module and probes the connectors, but I think that "load"
is more descriptive of the intention here.

> > +               int fd, load_error;
> > +               bool i915_already_loaded;
> > +
> > +               i915_already_loaded = igt_kmod_is_loaded("i915");
> > +               igt_warn_on(i915_already_loaded);
> 
> Warn? You didn't unload so randomly warning based on run order.

Not randomly, always in the same scenarios. I think the warn is
descriptive enough.

Warning here will also notify us about any issues with the testing
configuration - if we run the test when we are not supposed to, or if we
modprobe i915 (e.g. due to broken blacklisting), rendering the test
useless.

We can go with a better name here than "load", to be even clearer.
-Arek

> > +               if (!i915_already_loaded) {
> > +                       load_error = igt_i915_driver_load(NULL);
> > +                       igt_assert_eq(load_error, 0);
> > +               }
> > +
> > +               fd = __drm_open_driver(DRIVER_INTEL);
> 
> __drm_open_driver -> performs a default modprobe of the driver.
> 
> > +               igt_assert(fd > 0);
> > +               reprobe_connectors(fd);
> > +               close(fd);
> > +       }
> > +
> >         igt_subtest("basic-reload") {
> >                 int load_error;
> >  
> > -- 
> > 2.17.2
> > 
> > _______________________________________________
> > igt-dev mailing list
> > igt-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/igt-dev
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2018-10-18 13:28 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-17 12:15 [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load Arkadiusz Hiler
2018-10-17 12:15 ` [igt-dev] [PATCH i-g-t 2/3] tests/i915_load: Add 'load' subtest Arkadiusz Hiler
2018-10-17 12:31   ` Chris Wilson
2018-10-18 13:28     ` Arkadiusz Hiler
2018-10-17 12:15 ` [igt-dev] [PATCH i-g-t 3/3] intel-ci: Prepend fast-feedback with i915_load@load Arkadiusz Hiler
2018-10-17 12:34 ` [igt-dev] [PATCH i-g-t 1/3] tests: Rename drv_module_reload to i915_load Chris Wilson
2018-10-17 15:30   ` Arkadiusz Hiler
2018-10-17 15:50     ` Chris Wilson
2018-10-17 16:06       ` Arkadiusz Hiler
2018-10-17 14:26 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/3] " Patchwork
2018-10-17 17:40 ` [igt-dev] ✗ Fi.CI.IGT: failure " 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.