* [igt-dev] [PATCH i-g-t v5] tests/kms_atomic_transition:reduce execution time
@ 2020-12-18 6:06 Nidhi Gupta
2020-12-18 6:52 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_atomic_transition:reduce execution time (rev5) Patchwork
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Nidhi Gupta @ 2020-12-18 6:06 UTC (permalink / raw)
To: igt-dev; +Cc: Nidhi Gupta
v1: All the subtests are using for_each_pipe_with_valid_output
function which will execute on all the possible
combination of pipe and output to reduce the execution
time replaced the function with
for_each_pipe_with_single_output this will loop over all
the pipes but at most once.
v2: kms_atomic_transition test is taking minimum of
69.5s time to execute on CI. To reduce the execution
time this patch will add the change which will run
the test on 1 HDR plane, 1 SDR UV plane, 1 SDR Y plane
and skip the rest of the planes.
v3: combined v1 and v2 in one patch.
v4: -restricted execution of all the subtests to
2 pipes. (Uma)
-Modified skip_plane() function. (Uma)
Signed-off-by: Nidhi Gupta <nidhi1.gupta@intel.com>
---
tests/kms_atomic_transition.c | 57 +++++++++++++++++++++++++++++++++--
1 file changed, 55 insertions(+), 2 deletions(-)
diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index 02206f0a..3baaddc5 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -120,6 +120,30 @@ static void configure_fencing(igt_plane_t *plane)
igt_assert_eq(ret, 0);
}
+static bool skip_plane(igt_display_t *display, igt_plane_t *plane)
+{
+ int index = plane->index;
+
+ if (!is_i915_device(display->drm_fd))
+ return false;
+
+ if (plane->type == DRM_PLANE_TYPE_CURSOR)
+ return false;
+
+ if (intel_gen(intel_get_drm_devid(display->drm_fd)) < 11)
+ return false;
+
+ /*
+ * Test 1 HDR plane, 1 SDR UV plane, 1 SDR Y plane.
+ *
+ * Kernel registers planes in the hardware Z order:
+ * 0,1,2 HDR planes
+ * 3,4 SDR UV planes
+ * 5,6 SDR Y planes
+ */
+ return index != 0 && index != 3 && index != 5;
+}
+
static int
wm_setup_plane(igt_display_t *display, enum pipe pipe,
uint32_t mask, struct plane_parms *parms, bool fencing)
@@ -135,6 +159,9 @@ wm_setup_plane(igt_display_t *display, enum pipe pipe,
for_each_plane_on_pipe(display, pipe, plane) {
int i = plane->index;
+ if (skip_plane(display, plane))
+ continue;
+
if (!mask || !(parms[i].mask & mask)) {
if (plane->values[IGT_PLANE_FB_ID]) {
igt_plane_set_fb(plane, NULL);
@@ -935,11 +962,16 @@ igt_main
}
igt_subtest("plane-primary-toggle-with-vblank-wait")
- for_each_pipe_with_valid_output(&display, pipe, output)
+ for_each_pipe_with_valid_output(&display, pipe, output) {
+ if (pipe >= 2)
+ break;
run_primary_test(&display, pipe, output);
+ }
igt_subtest_with_dynamic("plane-all-transition") {
for_each_pipe_with_valid_output(&display, pipe, output) {
+ if (pipe >= 2)
+ break;
igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, false);
}
@@ -947,6 +979,8 @@ igt_main
igt_subtest_with_dynamic("plane-all-transition-fencing") {
for_each_pipe_with_valid_output(&display, pipe, output) {
+ if (pipe >= 2)
+ break;
igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, true);
}
@@ -954,6 +988,8 @@ igt_main
igt_subtest_with_dynamic("plane-all-transition-nonblocking") {
for_each_pipe_with_valid_output(&display, pipe, output) {
+ if (pipe >= 2)
+ break;
igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, false);
}
@@ -961,6 +997,8 @@ igt_main
igt_subtest_with_dynamic("plane-all-transition-nonblocking-fencing") {
for_each_pipe_with_valid_output(&display, pipe, output) {
+ if (pipe >= 2)
+ break;
igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, true);
}
@@ -968,6 +1006,8 @@ igt_main
igt_subtest_with_dynamic("plane-use-after-nonblocking-unbind") {
for_each_pipe_with_valid_output(&display, pipe, output) {
+ if (pipe >= 2)
+ break;
igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, false);
}
@@ -975,6 +1015,8 @@ igt_main
igt_subtest_with_dynamic("plane-use-after-nonblocking-unbind-fencing") {
for_each_pipe_with_valid_output(&display, pipe, output) {
+ if (pipe >= 2)
+ break;
igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, true);
}
@@ -987,6 +1029,8 @@ igt_main
*/
igt_subtest_with_dynamic("plane-all-modeset-transition")
for_each_pipe_with_valid_output(&display, pipe, output) {
+ if (pipe >= 2)
+ break;
if (output_is_internal_panel(output))
continue;
@@ -996,6 +1040,8 @@ igt_main
igt_subtest_with_dynamic("plane-all-modeset-transition-fencing")
for_each_pipe_with_valid_output(&display, pipe, output) {
+ if (pipe >= 2)
+ break;
if (output_is_internal_panel(output))
continue;
@@ -1005,6 +1051,8 @@ igt_main
igt_subtest_with_dynamic("plane-all-modeset-transition-internal-panels") {
for_each_pipe_with_valid_output(&display, pipe, output) {
+ if (pipe >= 2)
+ break;
if (!output_is_internal_panel(output))
continue;
@@ -1015,6 +1063,8 @@ igt_main
igt_subtest_with_dynamic("plane-all-modeset-transition-fencing-internal-panels") {
for_each_pipe_with_valid_output(&display, pipe, output) {
+ if (pipe >= 2)
+ break;
if (!output_is_internal_panel(output))
continue;
@@ -1024,8 +1074,11 @@ igt_main
}
igt_subtest("plane-toggle-modeset-transition")
- for_each_pipe_with_valid_output(&display, pipe, output)
+ for_each_pipe_with_valid_output(&display, pipe, output) {
+ if (pipe >= 2)
+ break;
run_transition_test(&display, pipe, output, TRANSITION_MODESET_DISABLE, false, false);
+ }
igt_subtest_with_dynamic("modeset-transition") {
for (i = 1; i <= count; i++) {
--
2.26.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_atomic_transition:reduce execution time (rev5)
2020-12-18 6:06 [igt-dev] [PATCH i-g-t v5] tests/kms_atomic_transition:reduce execution time Nidhi Gupta
@ 2020-12-18 6:52 ` Patchwork
2020-12-18 8:02 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2020-12-24 5:14 ` [igt-dev] [PATCH i-g-t v5] tests/kms_atomic_transition:reduce execution time Karthik B S
2 siblings, 0 replies; 4+ messages in thread
From: Patchwork @ 2020-12-18 6:52 UTC (permalink / raw)
To: Nidhi Gupta; +Cc: igt-dev
[-- Attachment #1.1: Type: text/plain, Size: 2743 bytes --]
== Series Details ==
Series: tests/kms_atomic_transition:reduce execution time (rev5)
URL : https://patchwork.freedesktop.org/series/84516/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_9502 -> IGTPW_5310
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/index.html
Known issues
------------
Here are the changes found in IGTPW_5310 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@amdgpu/amd_prime@amd-to-i915:
- fi-kbl-soraka: NOTRUN -> [SKIP][1] ([fdo#109271])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/fi-kbl-soraka/igt@amdgpu/amd_prime@amd-to-i915.html
* igt@gem_tiled_blits@basic:
- fi-tgl-y: [PASS][2] -> [DMESG-WARN][3] ([i915#402]) +2 similar issues
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/fi-tgl-y/igt@gem_tiled_blits@basic.html
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/fi-tgl-y/igt@gem_tiled_blits@basic.html
* igt@kms_force_connector_basic@force-connector-state:
- fi-icl-u2: [PASS][4] -> [DMESG-WARN][5] ([i915#1226])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/fi-icl-u2/igt@kms_force_connector_basic@force-connector-state.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/fi-icl-u2/igt@kms_force_connector_basic@force-connector-state.html
#### Possible fixes ####
* igt@prime_self_import@basic-with_one_bo_two_files:
- fi-tgl-y: [DMESG-WARN][6] ([i915#402]) -> [PASS][7] +1 similar issue
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/fi-tgl-y/igt@prime_self_import@basic-with_one_bo_two_files.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/fi-tgl-y/igt@prime_self_import@basic-with_one_bo_two_files.html
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[i915#1226]: https://gitlab.freedesktop.org/drm/intel/issues/1226
[i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
Participating hosts (43 -> 38)
------------------------------
Missing (5): fi-ilk-m540 fi-hsw-4200u fi-bsw-cyan fi-dg1-1 fi-bdw-samus
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_5908 -> IGTPW_5310
CI-20190529: 20190529
CI_DRM_9502: 062fb02ead4596719cd755fc28bcb44858a3d80b @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_5310: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/index.html
IGT_5908: b8b1391f7bfff83397ddc47c0083c2c7ed06be37 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/index.html
[-- Attachment #1.2: Type: text/html, Size: 3486 bytes --]
[-- Attachment #2: Type: text/plain, Size: 154 bytes --]
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 4+ messages in thread
* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_atomic_transition:reduce execution time (rev5)
2020-12-18 6:06 [igt-dev] [PATCH i-g-t v5] tests/kms_atomic_transition:reduce execution time Nidhi Gupta
2020-12-18 6:52 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_atomic_transition:reduce execution time (rev5) Patchwork
@ 2020-12-18 8:02 ` Patchwork
2020-12-24 5:14 ` [igt-dev] [PATCH i-g-t v5] tests/kms_atomic_transition:reduce execution time Karthik B S
2 siblings, 0 replies; 4+ messages in thread
From: Patchwork @ 2020-12-18 8:02 UTC (permalink / raw)
To: Nidhi Gupta; +Cc: igt-dev
[-- Attachment #1.1: Type: text/plain, Size: 19037 bytes --]
== Series Details ==
Series: tests/kms_atomic_transition:reduce execution time (rev5)
URL : https://patchwork.freedesktop.org/series/84516/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_9502_full -> IGTPW_5310_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/index.html
New tests
---------
New tests have been introduced between CI_DRM_9502_full and IGTPW_5310_full:
### New IGT tests (1) ###
* igt@kms_atomic_transition@modeset-transition:
- Statuses :
- Exec time: [None] s
Known issues
------------
Here are the changes found in IGTPW_5310_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_eio@kms:
- shard-kbl: [PASS][1] -> [DMESG-WARN][2] ([i915#62])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-kbl6/igt@gem_eio@kms.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-kbl2/igt@gem_eio@kms.html
* igt@gem_exec_reloc@basic-wide-active@vcs1:
- shard-iclb: NOTRUN -> [FAIL][3] ([i915#2389]) +1 similar issue
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb4/igt@gem_exec_reloc@basic-wide-active@vcs1.html
* igt@gem_pwrite@basic-exhaustion:
- shard-kbl: NOTRUN -> [WARN][4] ([i915#2658])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-kbl6/igt@gem_pwrite@basic-exhaustion.html
* igt@gem_workarounds@suspend-resume-fd:
- shard-hsw: [PASS][5] -> [DMESG-WARN][6] ([i915#2637])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-hsw4/igt@gem_workarounds@suspend-resume-fd.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-hsw4/igt@gem_workarounds@suspend-resume-fd.html
* igt@gen3_render_mixed_blits:
- shard-tglb: NOTRUN -> [SKIP][7] ([fdo#109289])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb3/igt@gen3_render_mixed_blits.html
- shard-iclb: NOTRUN -> [SKIP][8] ([fdo#109289])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb7/igt@gen3_render_mixed_blits.html
* igt@gen9_exec_parse@batch-without-end:
- shard-iclb: NOTRUN -> [SKIP][9] ([fdo#112306])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb4/igt@gen9_exec_parse@batch-without-end.html
- shard-tglb: NOTRUN -> [SKIP][10] ([fdo#112306])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb5/igt@gen9_exec_parse@batch-without-end.html
* igt@i915_pm_sseu@full-enable:
- shard-tglb: NOTRUN -> [SKIP][11] ([fdo#109288])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb7/igt@i915_pm_sseu@full-enable.html
- shard-iclb: NOTRUN -> [SKIP][12] ([fdo#109288])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb2/igt@i915_pm_sseu@full-enable.html
* igt@kms_chamelium@common-hpd-after-suspend:
- shard-glk: NOTRUN -> [SKIP][13] ([fdo#109271] / [fdo#111827]) +4 similar issues
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-glk9/igt@kms_chamelium@common-hpd-after-suspend.html
* igt@kms_chamelium@dp-crc-multiple:
- shard-apl: NOTRUN -> [SKIP][14] ([fdo#109271] / [fdo#111827]) +4 similar issues
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-apl6/igt@kms_chamelium@dp-crc-multiple.html
* igt@kms_chamelium@hdmi-hpd-for-each-pipe:
- shard-kbl: NOTRUN -> [SKIP][15] ([fdo#109271] / [fdo#111827]) +7 similar issues
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-kbl1/igt@kms_chamelium@hdmi-hpd-for-each-pipe.html
* igt@kms_color_chamelium@pipe-b-gamma:
- shard-iclb: NOTRUN -> [SKIP][16] ([fdo#109284] / [fdo#111827]) +3 similar issues
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb4/igt@kms_color_chamelium@pipe-b-gamma.html
* igt@kms_color_chamelium@pipe-d-ctm-negative:
- shard-hsw: NOTRUN -> [SKIP][17] ([fdo#109271] / [fdo#111827])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-hsw6/igt@kms_color_chamelium@pipe-d-ctm-negative.html
* igt@kms_color_chamelium@pipe-d-ctm-red-to-blue:
- shard-tglb: NOTRUN -> [SKIP][18] ([fdo#109284] / [fdo#111827]) +4 similar issues
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb7/igt@kms_color_chamelium@pipe-d-ctm-red-to-blue.html
- shard-iclb: NOTRUN -> [SKIP][19] ([fdo#109278] / [fdo#109284] / [fdo#111827])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb2/igt@kms_color_chamelium@pipe-d-ctm-red-to-blue.html
* igt@kms_concurrent@pipe-b:
- shard-kbl: [PASS][20] -> [DMESG-WARN][21] ([i915#180] / [i915#78])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-kbl4/igt@kms_concurrent@pipe-b.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-kbl2/igt@kms_concurrent@pipe-b.html
* igt@kms_cursor_crc@pipe-a-cursor-512x170-offscreen:
- shard-glk: NOTRUN -> [SKIP][22] ([fdo#109271]) +21 similar issues
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-glk8/igt@kms_cursor_crc@pipe-a-cursor-512x170-offscreen.html
- shard-iclb: NOTRUN -> [SKIP][23] ([fdo#109278] / [fdo#109279])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb4/igt@kms_cursor_crc@pipe-a-cursor-512x170-offscreen.html
- shard-tglb: NOTRUN -> [SKIP][24] ([fdo#109279])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb8/igt@kms_cursor_crc@pipe-a-cursor-512x170-offscreen.html
* igt@kms_cursor_crc@pipe-a-cursor-suspend:
- shard-kbl: [PASS][25] -> [FAIL][26] ([i915#54]) +1 similar issue
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-kbl4/igt@kms_cursor_crc@pipe-a-cursor-suspend.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-kbl7/igt@kms_cursor_crc@pipe-a-cursor-suspend.html
* igt@kms_cursor_crc@pipe-b-cursor-128x42-onscreen:
- shard-apl: [PASS][27] -> [FAIL][28] ([i915#54]) +1 similar issue
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-apl4/igt@kms_cursor_crc@pipe-b-cursor-128x42-onscreen.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-apl2/igt@kms_cursor_crc@pipe-b-cursor-128x42-onscreen.html
- shard-glk: [PASS][29] -> [FAIL][30] ([i915#54])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-glk7/igt@kms_cursor_crc@pipe-b-cursor-128x42-onscreen.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-glk1/igt@kms_cursor_crc@pipe-b-cursor-128x42-onscreen.html
* igt@kms_cursor_crc@pipe-d-cursor-256x256-rapid-movement:
- shard-iclb: NOTRUN -> [SKIP][31] ([fdo#109278]) +5 similar issues
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb4/igt@kms_cursor_crc@pipe-d-cursor-256x256-rapid-movement.html
* igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
- shard-hsw: [PASS][32] -> [FAIL][33] ([i915#96])
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-hsw5/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-hsw1/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html
* igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible:
- shard-apl: NOTRUN -> [SKIP][34] ([fdo#109271]) +30 similar issues
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-apl8/igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible.html
- shard-tglb: NOTRUN -> [SKIP][35] ([fdo#111825]) +11 similar issues
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb3/igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible.html
* igt@kms_flip@2x-nonexisting-fb:
- shard-iclb: NOTRUN -> [SKIP][36] ([fdo#109274]) +4 similar issues
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb7/igt@kms_flip@2x-nonexisting-fb.html
* igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a2:
- shard-glk: [PASS][37] -> [FAIL][38] ([i915#79])
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-glk1/igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a2.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-glk7/igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a2.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-pwrite:
- shard-hsw: NOTRUN -> [SKIP][39] ([fdo#109271]) +23 similar issues
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-hsw1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-blt:
- shard-glk: [PASS][40] -> [FAIL][41] ([i915#49])
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-glk5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-blt.html
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-glk8/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt:
- shard-iclb: NOTRUN -> [SKIP][42] ([fdo#109280]) +7 similar issues
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb2/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt.html
* igt@kms_hdr@static-toggle-dpms:
- shard-tglb: NOTRUN -> [SKIP][43] ([i915#1187])
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb1/igt@kms_hdr@static-toggle-dpms.html
- shard-iclb: NOTRUN -> [SKIP][44] ([i915#1187])
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb8/igt@kms_hdr@static-toggle-dpms.html
* igt@kms_plane_lowres@pipe-c-tiling-yf:
- shard-kbl: [PASS][45] -> [DMESG-WARN][46] ([i915#165] / [i915#180] / [i915#78])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-kbl6/igt@kms_plane_lowres@pipe-c-tiling-yf.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-kbl2/igt@kms_plane_lowres@pipe-c-tiling-yf.html
* igt@kms_plane_multiple@atomic-pipe-d-tiling-yf:
- shard-tglb: NOTRUN -> [SKIP][47] ([fdo#112054])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb1/igt@kms_plane_multiple@atomic-pipe-d-tiling-yf.html
* igt@kms_psr@psr2_basic:
- shard-iclb: [PASS][48] -> [SKIP][49] ([fdo#109441]) +2 similar issues
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-iclb2/igt@kms_psr@psr2_basic.html
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb4/igt@kms_psr@psr2_basic.html
* igt@kms_universal_plane@disable-primary-vs-flip-pipe-d:
- shard-kbl: NOTRUN -> [SKIP][50] ([fdo#109271]) +43 similar issues
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-kbl2/igt@kms_universal_plane@disable-primary-vs-flip-pipe-d.html
* igt@nouveau_crc@pipe-d-source-outp-inactive:
- shard-tglb: NOTRUN -> [SKIP][51] ([i915#2530])
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb3/igt@nouveau_crc@pipe-d-source-outp-inactive.html
- shard-iclb: NOTRUN -> [SKIP][52] ([fdo#109278] / [i915#2530])
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb7/igt@nouveau_crc@pipe-d-source-outp-inactive.html
* igt@prime_nv_test@i915_blt_fill_nv_read:
- shard-tglb: NOTRUN -> [SKIP][53] ([fdo#109291])
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb3/igt@prime_nv_test@i915_blt_fill_nv_read.html
- shard-iclb: NOTRUN -> [SKIP][54] ([fdo#109291])
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb7/igt@prime_nv_test@i915_blt_fill_nv_read.html
* igt@runner@aborted:
- shard-hsw: NOTRUN -> [FAIL][55] ([fdo#109271] / [i915#2295])
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-hsw4/igt@runner@aborted.html
#### Possible fixes ####
* igt@feature_discovery@psr2:
- shard-iclb: [SKIP][56] ([i915#658]) -> [PASS][57]
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-iclb8/igt@feature_discovery@psr2.html
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb2/igt@feature_discovery@psr2.html
* igt@gem_exec_whisper@basic-contexts-forked:
- shard-glk: [DMESG-WARN][58] ([i915#118] / [i915#95]) -> [PASS][59] +1 similar issue
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-glk1/igt@gem_exec_whisper@basic-contexts-forked.html
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-glk3/igt@gem_exec_whisper@basic-contexts-forked.html
* igt@i915_pm_rpm@modeset-lpsp:
- shard-tglb: [SKIP][60] ([i915#579]) -> [PASS][61]
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-tglb7/igt@i915_pm_rpm@modeset-lpsp.html
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb8/igt@i915_pm_rpm@modeset-lpsp.html
- shard-iclb: [SKIP][62] ([i915#579]) -> [PASS][63]
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-iclb7/igt@i915_pm_rpm@modeset-lpsp.html
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb1/igt@i915_pm_rpm@modeset-lpsp.html
* igt@kms_cursor_crc@pipe-a-cursor-suspend:
- shard-hsw: [INCOMPLETE][64] ([i915#2055] / [i915#2295] / [i915#300]) -> [PASS][65]
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-hsw2/igt@kms_cursor_crc@pipe-a-cursor-suspend.html
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-hsw5/igt@kms_cursor_crc@pipe-a-cursor-suspend.html
* igt@kms_flip@flip-vs-suspend@c-dp1:
- shard-kbl: [DMESG-WARN][66] ([i915#180]) -> [PASS][67]
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-kbl7/igt@kms_flip@flip-vs-suspend@c-dp1.html
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-kbl7/igt@kms_flip@flip-vs-suspend@c-dp1.html
* igt@kms_psr@psr2_cursor_blt:
- shard-iclb: [SKIP][68] ([fdo#109441]) -> [PASS][69] +2 similar issues
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-iclb5/igt@kms_psr@psr2_cursor_blt.html
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb2/igt@kms_psr@psr2_cursor_blt.html
#### Warnings ####
* igt@i915_pm_rc6_residency@rc6-fence:
- shard-iclb: [WARN][70] ([i915#2681] / [i915#2684]) -> [WARN][71] ([i915#1804] / [i915#2684])
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-iclb8/igt@i915_pm_rc6_residency@rc6-fence.html
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-iclb7/igt@i915_pm_rc6_residency@rc6-fence.html
* igt@runner@aborted:
- shard-tglb: [FAIL][72] ([i915#2295] / [i915#2722]) -> ([FAIL][73], [FAIL][74]) ([i915#2295] / [i915#2426] / [i915#2722])
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9502/shard-tglb5/igt@runner@aborted.html
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb3/igt@runner@aborted.html
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/shard-tglb8/igt@runner@aborted.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
[fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279
[fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
[fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
[fdo#109288]: https://bugs.freedesktop.org/show_bug.cgi?id=109288
[fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
[fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
[fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
[fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054
[fdo#112306]: https://bugs.freedesktop.org/show_bug.cgi?id=112306
[i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
[i915#1187]: https://gitlab.freedesktop.org/drm/intel/issues/1187
[i915#165]: https://gitlab.freedesktop.org/drm/intel/issues/165
[i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
[i915#1804]: https://gitlab.freedesktop.org/drm/intel/issues/1804
[i915#2055]: https://gitlab.freedesktop.org/drm/intel/issues/2055
[i915#2295]: https://gitlab.freedesktop.org/drm/intel/issues/2295
[i915#2389]: https://gitlab.freedesktop.org/drm/intel/issues/2389
[i915#2426]: https://gitlab.freedesktop.org/drm/intel/issues/2426
[i915#2530]: https://gitlab.freedesktop.org/drm/intel/issues/2530
[i915#2637]: https://gitlab.freedesktop.org/drm/intel/issues/2637
[i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
[i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
[i915#2684]: https://gitlab.freedesktop.org/drm/intel/issues/2684
[i915#2722]: https://gitlab.freedesktop.org/drm/intel/issues/2722
[i915#2802]: https://gitlab.freedesktop.org/drm/intel/issues/2802
[i915#2803]: https://gitlab.freedesktop.org/drm/intel/issues/2803
[i915#300]: https://gitlab.freedesktop.org/drm/intel/issues/300
[i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49
[i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
[i915#579]: https://gitlab.freedesktop.org/drm/intel/issues/579
[i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
[i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
[i915#78]: https://gitlab.freedesktop.org/drm/intel/issues/78
[i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
[i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
[i915#96]: https://gitlab.freedesktop.org/drm/intel/issues/96
Participating hosts (10 -> 8)
------------------------------
Missing (2): pig-skl-6260u pig-glk-j5005
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_5908 -> IGTPW_5310
* Piglit: piglit_4509 -> None
CI-20190529: 20190529
CI_DRM_9502: 062fb02ead4596719cd755fc28bcb44858a3d80b @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_5310: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/index.html
IGT_5908: b8b1391f7bfff83397ddc47c0083c2c7ed06be37 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5310/index.html
[-- Attachment #1.2: Type: text/html, Size: 23309 bytes --]
[-- Attachment #2: Type: text/plain, Size: 154 bytes --]
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v5] tests/kms_atomic_transition:reduce execution time
2020-12-18 6:06 [igt-dev] [PATCH i-g-t v5] tests/kms_atomic_transition:reduce execution time Nidhi Gupta
2020-12-18 6:52 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_atomic_transition:reduce execution time (rev5) Patchwork
2020-12-18 8:02 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2020-12-24 5:14 ` Karthik B S
2 siblings, 0 replies; 4+ messages in thread
From: Karthik B S @ 2020-12-24 5:14 UTC (permalink / raw)
To: Nidhi Gupta, igt-dev
On 12/18/2020 11:36 AM, Nidhi Gupta wrote:
> v1: All the subtests are using for_each_pipe_with_valid_output
> function which will execute on all the possible
> combination of pipe and output to reduce the execution
> time replaced the function with
> for_each_pipe_with_single_output this will loop over all
> the pipes but at most once.
>
> v2: kms_atomic_transition test is taking minimum of
> 69.5s time to execute on CI. To reduce the execution
> time this patch will add the change which will run
> the test on 1 HDR plane, 1 SDR UV plane, 1 SDR Y plane
> and skip the rest of the planes.
>
> v3: combined v1 and v2 in one patch.
>
> v4: -restricted execution of all the subtests to
> 2 pipes. (Uma)
> -Modified skip_plane() function. (Uma)
>
> Signed-off-by: Nidhi Gupta <nidhi1.gupta@intel.com>
> ---
> tests/kms_atomic_transition.c | 57 +++++++++++++++++++++++++++++++++--
> 1 file changed, 55 insertions(+), 2 deletions(-)
>
> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> index 02206f0a..3baaddc5 100644
> --- a/tests/kms_atomic_transition.c
> +++ b/tests/kms_atomic_transition.c
> @@ -120,6 +120,30 @@ static void configure_fencing(igt_plane_t *plane)
> igt_assert_eq(ret, 0);
> }
>
> +static bool skip_plane(igt_display_t *display, igt_plane_t *plane)
> +{
> + int index = plane->index;
> +
> + if (!is_i915_device(display->drm_fd))
> + return false;
> +
> + if (plane->type == DRM_PLANE_TYPE_CURSOR)
> + return false;
> +
> + if (intel_gen(intel_get_drm_devid(display->drm_fd)) < 11)
> + return false;
> +
> + /*
> + * Test 1 HDR plane, 1 SDR UV plane, 1 SDR Y plane.
> + *
> + * Kernel registers planes in the hardware Z order:
> + * 0,1,2 HDR planes
> + * 3,4 SDR UV planes
> + * 5,6 SDR Y planes
> + */
> + return index != 0 && index != 3 && index != 5;
> +}
> +
> static int
> wm_setup_plane(igt_display_t *display, enum pipe pipe,
> uint32_t mask, struct plane_parms *parms, bool fencing)
> @@ -135,6 +159,9 @@ wm_setup_plane(igt_display_t *display, enum pipe pipe,
> for_each_plane_on_pipe(display, pipe, plane) {
> int i = plane->index;
>
> + if (skip_plane(display, plane))
> + continue;
> +
> if (!mask || !(parms[i].mask & mask)) {
> if (plane->values[IGT_PLANE_FB_ID]) {
> igt_plane_set_fb(plane, NULL);
> @@ -935,11 +962,16 @@ igt_main
> }
>
> igt_subtest("plane-primary-toggle-with-vblank-wait")
> - for_each_pipe_with_valid_output(&display, pipe, output)
> + for_each_pipe_with_valid_output(&display, pipe, output) {
> + if (pipe >= 2)
> + break;
Hi,
IMHO, it will be better if we also use a flag here which can be set via
command line arguments.
So that we still have the option of running all the combinations if
required, rather than only using the hard coded check always.
Thanks,
Karthik.B.S
> run_primary_test(&display, pipe, output);
> + }
>
> igt_subtest_with_dynamic("plane-all-transition") {
> for_each_pipe_with_valid_output(&display, pipe, output) {
> + if (pipe >= 2)
> + break;
> igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
> run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, false);
> }
> @@ -947,6 +979,8 @@ igt_main
>
> igt_subtest_with_dynamic("plane-all-transition-fencing") {
> for_each_pipe_with_valid_output(&display, pipe, output) {
> + if (pipe >= 2)
> + break;
> igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
> run_transition_test(&display, pipe, output, TRANSITION_PLANES, false, true);
> }
> @@ -954,6 +988,8 @@ igt_main
>
> igt_subtest_with_dynamic("plane-all-transition-nonblocking") {
> for_each_pipe_with_valid_output(&display, pipe, output) {
> + if (pipe >= 2)
> + break;
> igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
> run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, false);
> }
> @@ -961,6 +997,8 @@ igt_main
>
> igt_subtest_with_dynamic("plane-all-transition-nonblocking-fencing") {
> for_each_pipe_with_valid_output(&display, pipe, output) {
> + if (pipe >= 2)
> + break;
> igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
> run_transition_test(&display, pipe, output, TRANSITION_PLANES, true, true);
> }
> @@ -968,6 +1006,8 @@ igt_main
>
> igt_subtest_with_dynamic("plane-use-after-nonblocking-unbind") {
> for_each_pipe_with_valid_output(&display, pipe, output) {
> + if (pipe >= 2)
> + break;
> igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
> run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, false);
> }
> @@ -975,6 +1015,8 @@ igt_main
>
> igt_subtest_with_dynamic("plane-use-after-nonblocking-unbind-fencing") {
> for_each_pipe_with_valid_output(&display, pipe, output) {
> + if (pipe >= 2)
> + break;
> igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
> run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, true);
> }
> @@ -987,6 +1029,8 @@ igt_main
> */
> igt_subtest_with_dynamic("plane-all-modeset-transition")
> for_each_pipe_with_valid_output(&display, pipe, output) {
> + if (pipe >= 2)
> + break;
> if (output_is_internal_panel(output))
> continue;
>
> @@ -996,6 +1040,8 @@ igt_main
>
> igt_subtest_with_dynamic("plane-all-modeset-transition-fencing")
> for_each_pipe_with_valid_output(&display, pipe, output) {
> + if (pipe >= 2)
> + break;
> if (output_is_internal_panel(output))
> continue;
>
> @@ -1005,6 +1051,8 @@ igt_main
>
> igt_subtest_with_dynamic("plane-all-modeset-transition-internal-panels") {
> for_each_pipe_with_valid_output(&display, pipe, output) {
> + if (pipe >= 2)
> + break;
> if (!output_is_internal_panel(output))
> continue;
>
> @@ -1015,6 +1063,8 @@ igt_main
>
> igt_subtest_with_dynamic("plane-all-modeset-transition-fencing-internal-panels") {
> for_each_pipe_with_valid_output(&display, pipe, output) {
> + if (pipe >= 2)
> + break;
> if (!output_is_internal_panel(output))
> continue;
>
> @@ -1024,8 +1074,11 @@ igt_main
> }
>
> igt_subtest("plane-toggle-modeset-transition")
> - for_each_pipe_with_valid_output(&display, pipe, output)
> + for_each_pipe_with_valid_output(&display, pipe, output) {
> + if (pipe >= 2)
> + break;
> run_transition_test(&display, pipe, output, TRANSITION_MODESET_DISABLE, false, false);
> + }
>
> igt_subtest_with_dynamic("modeset-transition") {
> for (i = 1; i <= count; i++) {
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-12-24 5:14 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-18 6:06 [igt-dev] [PATCH i-g-t v5] tests/kms_atomic_transition:reduce execution time Nidhi Gupta
2020-12-18 6:52 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_atomic_transition:reduce execution time (rev5) Patchwork
2020-12-18 8:02 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2020-12-24 5:14 ` [igt-dev] [PATCH i-g-t v5] tests/kms_atomic_transition:reduce execution time Karthik B S
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.