* [PATCH v2 1/1] drm/mm: add ig_frag selftest
@ 2020-06-03 10:32 ` Nirmoy Das
0 siblings, 0 replies; 16+ messages in thread
From: Nirmoy Das @ 2020-06-03 10:32 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx, Nirmoy Das, christian.koenig, chris
This patch introduces fragmentation in the address range
and measures time taken by 10k and 20k insertions. ig_frag()
will fail if the time taken by 20k insertions takes more than
4 times of 10k insertions as we know that insertions should at
most scale quadratically.
v2:
introduce fragmentation by freeing every other node.
only test bottom-up and top-down for now.
Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
---
drivers/gpu/drm/selftests/drm_mm_selftests.h | 1 +
drivers/gpu/drm/selftests/test-drm_mm.c | 124 +++++++++++++++++++
2 files changed, 125 insertions(+)
diff --git a/drivers/gpu/drm/selftests/drm_mm_selftests.h b/drivers/gpu/drm/selftests/drm_mm_selftests.h
index 6b943ea1c57d..8c87c964176b 100644
--- a/drivers/gpu/drm/selftests/drm_mm_selftests.h
+++ b/drivers/gpu/drm/selftests/drm_mm_selftests.h
@@ -14,6 +14,7 @@ selftest(insert, igt_insert)
selftest(replace, igt_replace)
selftest(insert_range, igt_insert_range)
selftest(align, igt_align)
+selftest(frag, igt_frag)
selftest(align32, igt_align32)
selftest(align64, igt_align64)
selftest(evict, igt_evict)
diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c b/drivers/gpu/drm/selftests/test-drm_mm.c
index 9aabe82dcd3a..34231baacd87 100644
--- a/drivers/gpu/drm/selftests/test-drm_mm.c
+++ b/drivers/gpu/drm/selftests/test-drm_mm.c
@@ -10,6 +10,7 @@
#include <linux/slab.h>
#include <linux/random.h>
#include <linux/vmalloc.h>
+#include <linux/ktime.h>
#include <drm/drm_mm.h>
@@ -1033,6 +1034,129 @@ static int igt_insert_range(void *ignored)
return 0;
}
+static int prepare_igt_frag(struct drm_mm *mm,
+ struct drm_mm_node *nodes,
+ unsigned int num_insert,
+ const struct insert_mode *mode)
+{
+ unsigned int size = 4096;
+ unsigned int i;
+ u64 ret = -EINVAL;
+
+ for (i = 0; i < num_insert; i++) {
+ if (!expect_insert(mm, &nodes[i], size, 0, i,
+ mode) != 0) {
+ pr_err("%s insert failed\n", mode->name);
+ goto out;
+ }
+ }
+
+ /* introduce fragmentation by freeing every other node */
+ for (i = 0; i < num_insert; i++) {
+ if (i % 2 == 0)
+ drm_mm_remove_node(&nodes[i]);
+ }
+
+out:
+ return ret;
+
+}
+
+static u64 get_insert_time(struct drm_mm *mm,
+ unsigned int num_insert,
+ struct drm_mm_node *nodes,
+ const struct insert_mode *mode)
+{
+ unsigned int size = 8192;
+ ktime_t start;
+ unsigned int i;
+ u64 ret = -EINVAL;
+
+ start = ktime_get();
+ for (i = 0; i < num_insert; i++) {
+ if (!expect_insert(mm, &nodes[i], size, 0, i, mode) != 0) {
+ pr_err("%s insert failed\n", mode->name);
+ goto out;
+ }
+ }
+
+ ret = ktime_to_ns(ktime_sub(ktime_get(), start));
+
+out:
+ return ret;
+
+}
+
+static int igt_frag(void *ignored)
+{
+ struct drm_mm mm;
+ const struct insert_mode *mode;
+ struct drm_mm_node *nodes, *node, *next;
+ unsigned int insert_size = 10000;
+ unsigned int scale_factor = 4;
+ int ret = -EINVAL;
+
+ /* We need 4 * insert_size nodes to hold intermediate allocated
+ * drm_mm nodes.
+ * 1 times for prepare_igt_frag()
+ * 1 times for get_insert_time()
+ * 2 times for get_insert_time()
+ */
+ nodes = vzalloc(array_size(insert_size * 4, sizeof(*nodes)));
+ if (!nodes)
+ return -ENOMEM;
+
+ /* For BOTTOMUP and TOPDOWN, we first fragment the
+ * address space using prepare_igt_frag() and then try to verify
+ * that that insertions scale quadratically from 10k to 20k insertions
+ */
+ drm_mm_init(&mm, 1, U64_MAX - 2);
+ for (mode = insert_modes; mode->name; mode++) {
+ u64 insert_time1, insert_time2;
+
+ if (mode->mode != DRM_MM_INSERT_LOW ||
+ mode->mode != DRM_MM_INSERT_HIGH)
+ continue;
+
+ ret = prepare_igt_frag(&mm, nodes, insert_size, mode);
+ if (!ret)
+ goto err;
+
+ insert_time1 = get_insert_time(&mm, insert_size,
+ nodes + insert_size, mode);
+ if (insert_time1 < 0)
+ goto err;
+
+ insert_time2 = get_insert_time(&mm, (insert_size * 2),
+ nodes + insert_size * 2, mode);
+ if (insert_time2 < 0)
+ goto err;
+
+ pr_info("%s fragmented insert of %u and %u insertions took %llu and %llu nsecs\n",
+ mode->name, insert_size, insert_size * 2,
+ insert_time1, insert_time2);
+
+ if (insert_time2 > (scale_factor * insert_time1)) {
+ pr_err("%s fragmented insert took %llu nsecs more\n",
+ mode->name,
+ insert_time2 - (scale_factor * insert_time1));
+ goto err;
+ }
+
+ drm_mm_for_each_node_safe(node, next, &mm)
+ drm_mm_remove_node(node);
+ }
+
+ ret = 0;
+err:
+ drm_mm_for_each_node_safe(node, next, &mm)
+ drm_mm_remove_node(node);
+ drm_mm_takedown(&mm);
+ vfree(nodes);
+
+ return ret;
+}
+
static int igt_align(void *ignored)
{
const struct insert_mode *mode;
--
2.26.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Intel-gfx] [PATCH v2 1/1] drm/mm: add ig_frag selftest
@ 2020-06-03 10:32 ` Nirmoy Das
0 siblings, 0 replies; 16+ messages in thread
From: Nirmoy Das @ 2020-06-03 10:32 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx, Nirmoy Das, christian.koenig, chris
This patch introduces fragmentation in the address range
and measures time taken by 10k and 20k insertions. ig_frag()
will fail if the time taken by 20k insertions takes more than
4 times of 10k insertions as we know that insertions should at
most scale quadratically.
v2:
introduce fragmentation by freeing every other node.
only test bottom-up and top-down for now.
Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
---
drivers/gpu/drm/selftests/drm_mm_selftests.h | 1 +
drivers/gpu/drm/selftests/test-drm_mm.c | 124 +++++++++++++++++++
2 files changed, 125 insertions(+)
diff --git a/drivers/gpu/drm/selftests/drm_mm_selftests.h b/drivers/gpu/drm/selftests/drm_mm_selftests.h
index 6b943ea1c57d..8c87c964176b 100644
--- a/drivers/gpu/drm/selftests/drm_mm_selftests.h
+++ b/drivers/gpu/drm/selftests/drm_mm_selftests.h
@@ -14,6 +14,7 @@ selftest(insert, igt_insert)
selftest(replace, igt_replace)
selftest(insert_range, igt_insert_range)
selftest(align, igt_align)
+selftest(frag, igt_frag)
selftest(align32, igt_align32)
selftest(align64, igt_align64)
selftest(evict, igt_evict)
diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c b/drivers/gpu/drm/selftests/test-drm_mm.c
index 9aabe82dcd3a..34231baacd87 100644
--- a/drivers/gpu/drm/selftests/test-drm_mm.c
+++ b/drivers/gpu/drm/selftests/test-drm_mm.c
@@ -10,6 +10,7 @@
#include <linux/slab.h>
#include <linux/random.h>
#include <linux/vmalloc.h>
+#include <linux/ktime.h>
#include <drm/drm_mm.h>
@@ -1033,6 +1034,129 @@ static int igt_insert_range(void *ignored)
return 0;
}
+static int prepare_igt_frag(struct drm_mm *mm,
+ struct drm_mm_node *nodes,
+ unsigned int num_insert,
+ const struct insert_mode *mode)
+{
+ unsigned int size = 4096;
+ unsigned int i;
+ u64 ret = -EINVAL;
+
+ for (i = 0; i < num_insert; i++) {
+ if (!expect_insert(mm, &nodes[i], size, 0, i,
+ mode) != 0) {
+ pr_err("%s insert failed\n", mode->name);
+ goto out;
+ }
+ }
+
+ /* introduce fragmentation by freeing every other node */
+ for (i = 0; i < num_insert; i++) {
+ if (i % 2 == 0)
+ drm_mm_remove_node(&nodes[i]);
+ }
+
+out:
+ return ret;
+
+}
+
+static u64 get_insert_time(struct drm_mm *mm,
+ unsigned int num_insert,
+ struct drm_mm_node *nodes,
+ const struct insert_mode *mode)
+{
+ unsigned int size = 8192;
+ ktime_t start;
+ unsigned int i;
+ u64 ret = -EINVAL;
+
+ start = ktime_get();
+ for (i = 0; i < num_insert; i++) {
+ if (!expect_insert(mm, &nodes[i], size, 0, i, mode) != 0) {
+ pr_err("%s insert failed\n", mode->name);
+ goto out;
+ }
+ }
+
+ ret = ktime_to_ns(ktime_sub(ktime_get(), start));
+
+out:
+ return ret;
+
+}
+
+static int igt_frag(void *ignored)
+{
+ struct drm_mm mm;
+ const struct insert_mode *mode;
+ struct drm_mm_node *nodes, *node, *next;
+ unsigned int insert_size = 10000;
+ unsigned int scale_factor = 4;
+ int ret = -EINVAL;
+
+ /* We need 4 * insert_size nodes to hold intermediate allocated
+ * drm_mm nodes.
+ * 1 times for prepare_igt_frag()
+ * 1 times for get_insert_time()
+ * 2 times for get_insert_time()
+ */
+ nodes = vzalloc(array_size(insert_size * 4, sizeof(*nodes)));
+ if (!nodes)
+ return -ENOMEM;
+
+ /* For BOTTOMUP and TOPDOWN, we first fragment the
+ * address space using prepare_igt_frag() and then try to verify
+ * that that insertions scale quadratically from 10k to 20k insertions
+ */
+ drm_mm_init(&mm, 1, U64_MAX - 2);
+ for (mode = insert_modes; mode->name; mode++) {
+ u64 insert_time1, insert_time2;
+
+ if (mode->mode != DRM_MM_INSERT_LOW ||
+ mode->mode != DRM_MM_INSERT_HIGH)
+ continue;
+
+ ret = prepare_igt_frag(&mm, nodes, insert_size, mode);
+ if (!ret)
+ goto err;
+
+ insert_time1 = get_insert_time(&mm, insert_size,
+ nodes + insert_size, mode);
+ if (insert_time1 < 0)
+ goto err;
+
+ insert_time2 = get_insert_time(&mm, (insert_size * 2),
+ nodes + insert_size * 2, mode);
+ if (insert_time2 < 0)
+ goto err;
+
+ pr_info("%s fragmented insert of %u and %u insertions took %llu and %llu nsecs\n",
+ mode->name, insert_size, insert_size * 2,
+ insert_time1, insert_time2);
+
+ if (insert_time2 > (scale_factor * insert_time1)) {
+ pr_err("%s fragmented insert took %llu nsecs more\n",
+ mode->name,
+ insert_time2 - (scale_factor * insert_time1));
+ goto err;
+ }
+
+ drm_mm_for_each_node_safe(node, next, &mm)
+ drm_mm_remove_node(node);
+ }
+
+ ret = 0;
+err:
+ drm_mm_for_each_node_safe(node, next, &mm)
+ drm_mm_remove_node(node);
+ drm_mm_takedown(&mm);
+ vfree(nodes);
+
+ return ret;
+}
+
static int igt_align(void *ignored)
{
const struct insert_mode *mode;
--
2.26.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [v2,1/1] drm/mm: add ig_frag selftest
2020-06-03 10:32 ` [Intel-gfx] " Nirmoy Das
(?)
@ 2020-06-03 18:07 ` Patchwork
-1 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2020-06-03 18:07 UTC (permalink / raw)
To: Nirmoy Das; +Cc: intel-gfx
== Series Details ==
Series: series starting with [v2,1/1] drm/mm: add ig_frag selftest
URL : https://patchwork.freedesktop.org/series/77964/
State : warning
== Summary ==
$ dim checkpatch origin/drm-tip
3560e47537d1 drm/mm: add ig_frag selftest
-:72: CHECK:BRACES: Blank lines aren't necessary before a close brace '}'
#72: FILE: drivers/gpu/drm/selftests/test-drm_mm.c:1063:
+
+}
-:97: CHECK:BRACES: Blank lines aren't necessary before a close brace '}'
#97: FILE: drivers/gpu/drm/selftests/test-drm_mm.c:1088:
+
+}
-:171: WARNING:NO_AUTHOR_SIGN_OFF: Missing Signed-off-by: line by nominal patch author 'Nirmoy Das <nirmoy.aiemd@gmail.com>'
total: 0 errors, 1 warnings, 2 checks, 143 lines checked
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [v2,1/1] drm/mm: add ig_frag selftest
2020-06-03 10:32 ` [Intel-gfx] " Nirmoy Das
(?)
(?)
@ 2020-06-03 18:29 ` Patchwork
-1 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2020-06-03 18:29 UTC (permalink / raw)
To: Nirmoy Das; +Cc: intel-gfx
== Series Details ==
Series: series starting with [v2,1/1] drm/mm: add ig_frag selftest
URL : https://patchwork.freedesktop.org/series/77964/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_8579 -> Patchwork_17856
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/index.html
Known issues
------------
Here are the changes found in Patchwork_17856 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_pm_rpm@module-reload:
- fi-byt-j1900: [PASS][1] -> [DMESG-WARN][2] ([i915#1982])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/fi-byt-j1900/igt@i915_pm_rpm@module-reload.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/fi-byt-j1900/igt@i915_pm_rpm@module-reload.html
* igt@kms_busy@basic@flip:
- fi-kbl-x1275: [PASS][3] -> [DMESG-WARN][4] ([i915#62] / [i915#92] / [i915#95])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/fi-kbl-x1275/igt@kms_busy@basic@flip.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/fi-kbl-x1275/igt@kms_busy@basic@flip.html
* igt@kms_psr@primary_page_flip:
- fi-tgl-y: [PASS][5] -> [DMESG-WARN][6] ([i915#1982]) +1 similar issue
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/fi-tgl-y/igt@kms_psr@primary_page_flip.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/fi-tgl-y/igt@kms_psr@primary_page_flip.html
#### Possible fixes ####
* igt@i915_module_load@reload:
- fi-byt-n2820: [DMESG-WARN][7] ([i915#1982]) -> [PASS][8] +1 similar issue
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/fi-byt-n2820/igt@i915_module_load@reload.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/fi-byt-n2820/igt@i915_module_load@reload.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- fi-bsw-kefka: [DMESG-WARN][9] ([i915#1982]) -> [PASS][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
- fi-bsw-n3050: [DMESG-WARN][11] ([i915#1982]) -> [PASS][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/fi-bsw-n3050/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/fi-bsw-n3050/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
- {fi-tgl-dsi}: [DMESG-WARN][13] ([i915#1982]) -> [PASS][14]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/fi-tgl-dsi/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/fi-tgl-dsi/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
* {igt@kms_flip@basic-flip-vs-wf_vblank@b-dvi-d1}:
- fi-bwr-2160: [FAIL][15] ([i915#1928]) -> [PASS][16]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/fi-bwr-2160/igt@kms_flip@basic-flip-vs-wf_vblank@b-dvi-d1.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/fi-bwr-2160/igt@kms_flip@basic-flip-vs-wf_vblank@b-dvi-d1.html
#### Warnings ####
* igt@gem_exec_suspend@basic-s0:
- fi-kbl-x1275: [DMESG-WARN][17] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][18] ([i915#62] / [i915#92]) +4 similar issues
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/fi-kbl-x1275/igt@gem_exec_suspend@basic-s0.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/fi-kbl-x1275/igt@gem_exec_suspend@basic-s0.html
* igt@i915_pm_rpm@module-reload:
- fi-kbl-x1275: [SKIP][19] ([fdo#109271]) -> [DMESG-FAIL][20] ([i915#62] / [i915#95])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html
* igt@kms_pipe_crc_basic@read-crc-pipe-b:
- fi-kbl-x1275: [DMESG-WARN][21] ([i915#62] / [i915#92]) -> [DMESG-WARN][22] ([i915#62] / [i915#92] / [i915#95]) +1 similar issue
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/fi-kbl-x1275/igt@kms_pipe_crc_basic@read-crc-pipe-b.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/fi-kbl-x1275/igt@kms_pipe_crc_basic@read-crc-pipe-b.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
[i915#1928]: https://gitlab.freedesktop.org/drm/intel/issues/1928
[i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
[i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
[i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92
[i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
Participating hosts (51 -> 45)
------------------------------
Missing (6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-byt-clapper fi-bdw-samus
Build changes
-------------
* Linux: CI_DRM_8579 -> Patchwork_17856
CI-20190529: 20190529
CI_DRM_8579: 289eb12c88c49a4ac8d325dc457d8878c7f5bdc0 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_5694: a9b6c4c74bfddf7d3d2da3be08804fe315945cea @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_17856: 3560e47537d1185a5d719e8abc8dc0eb5a4289d2 @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
3560e47537d1 drm/mm: add ig_frag selftest
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [v2,1/1] drm/mm: add ig_frag selftest
2020-06-03 10:32 ` [Intel-gfx] " Nirmoy Das
` (2 preceding siblings ...)
(?)
@ 2020-06-04 4:57 ` Patchwork
-1 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2020-06-04 4:57 UTC (permalink / raw)
To: Nirmoy Das; +Cc: intel-gfx
== Series Details ==
Series: series starting with [v2,1/1] drm/mm: add ig_frag selftest
URL : https://patchwork.freedesktop.org/series/77964/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_8579_full -> Patchwork_17856_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
New tests
---------
New tests have been introduced between CI_DRM_8579_full and Patchwork_17856_full:
### New IGT tests (1) ###
* igt@drm_mm@all@frag:
- Statuses : 7 pass(s)
- Exec time: [0.03, 0.07] s
Known issues
------------
Here are the changes found in Patchwork_17856_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_eio@in-flight-suspend:
- shard-skl: [PASS][1] -> [INCOMPLETE][2] ([i915#69]) +1 similar issue
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl9/igt@gem_eio@in-flight-suspend.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl2/igt@gem_eio@in-flight-suspend.html
* igt@gem_mmap_offset@basic-uaf:
- shard-apl: [PASS][3] -> [DMESG-WARN][4] ([i915#95]) +11 similar issues
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-apl3/igt@gem_mmap_offset@basic-uaf.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-apl1/igt@gem_mmap_offset@basic-uaf.html
* igt@gem_mmap_offset@close-race:
- shard-glk: [PASS][5] -> [INCOMPLETE][6] ([i915#1927] / [i915#58] / [k.org#198133])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-glk8/igt@gem_mmap_offset@close-race.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-glk4/igt@gem_mmap_offset@close-race.html
* igt@i915_module_load@reload:
- shard-tglb: [PASS][7] -> [DMESG-WARN][8] ([i915#402])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-tglb3/igt@i915_module_load@reload.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-tglb2/igt@i915_module_load@reload.html
* igt@kms_big_fb@linear-64bpp-rotate-0:
- shard-glk: [PASS][9] -> [DMESG-FAIL][10] ([i915#118] / [i915#95])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-glk7/igt@kms_big_fb@linear-64bpp-rotate-0.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-glk8/igt@kms_big_fb@linear-64bpp-rotate-0.html
* igt@kms_cursor_crc@pipe-c-cursor-size-change:
- shard-skl: [PASS][11] -> [FAIL][12] ([i915#54])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl2/igt@kms_cursor_crc@pipe-c-cursor-size-change.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl10/igt@kms_cursor_crc@pipe-c-cursor-size-change.html
* igt@kms_cursor_edge_walk@pipe-b-256x256-right-edge:
- shard-skl: [PASS][13] -> [DMESG-WARN][14] ([i915#1982]) +5 similar issues
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl6/igt@kms_cursor_edge_walk@pipe-b-256x256-right-edge.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl1/igt@kms_cursor_edge_walk@pipe-b-256x256-right-edge.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-toggle:
- shard-glk: [PASS][15] -> [DMESG-WARN][16] ([i915#1926])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-glk9/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-glk6/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
* igt@kms_flip_tiling@flip-yf-tiled:
- shard-skl: [PASS][17] -> [FAIL][18] ([fdo#108145])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl7/igt@kms_flip_tiling@flip-yf-tiled.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl8/igt@kms_flip_tiling@flip-yf-tiled.html
* igt@kms_frontbuffer_tracking@fbc-badstride:
- shard-glk: [PASS][19] -> [DMESG-WARN][20] ([i915#1982])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-glk4/igt@kms_frontbuffer_tracking@fbc-badstride.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-glk6/igt@kms_frontbuffer_tracking@fbc-badstride.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move:
- shard-tglb: [PASS][21] -> [DMESG-WARN][22] ([i915#1982]) +2 similar issues
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-tglb5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-tglb5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu:
- shard-skl: [PASS][23] -> [FAIL][24] ([i915#49])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl7/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu.html
* igt@kms_hdr@bpc-switch-suspend:
- shard-skl: [PASS][25] -> [FAIL][26] ([i915#1188])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl1/igt@kms_hdr@bpc-switch-suspend.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl2/igt@kms_hdr@bpc-switch-suspend.html
* igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence:
- shard-skl: [PASS][27] -> [FAIL][28] ([i915#53])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl2/igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl10/igt@kms_pipe_crc_basic@read-crc-pipe-c-frame-sequence.html
* igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
- shard-apl: [PASS][29] -> [DMESG-WARN][30] ([i915#180]) +1 similar issue
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-apl3/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-apl8/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes.html
* igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
- shard-skl: [PASS][31] -> [FAIL][32] ([fdo#108145] / [i915#265]) +1 similar issue
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl7/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl8/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html
* igt@kms_psr@psr2_primary_page_flip:
- shard-iclb: [PASS][33] -> [SKIP][34] ([fdo#109441]) +2 similar issues
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-iclb2/igt@kms_psr@psr2_primary_page_flip.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-iclb8/igt@kms_psr@psr2_primary_page_flip.html
* igt@kms_setmode@basic:
- shard-apl: [PASS][35] -> [FAIL][36] ([i915#31])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-apl6/igt@kms_setmode@basic.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-apl6/igt@kms_setmode@basic.html
* igt@kms_vblank@pipe-c-ts-continuation-suspend:
- shard-kbl: [PASS][37] -> [DMESG-WARN][38] ([i915#180]) +1 similar issue
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-kbl4/igt@kms_vblank@pipe-c-ts-continuation-suspend.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-kbl7/igt@kms_vblank@pipe-c-ts-continuation-suspend.html
* igt@syncobj_wait@single-wait-all-signaled:
- shard-kbl: [PASS][39] -> [DMESG-WARN][40] ([i915#93] / [i915#95]) +1 similar issue
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-kbl7/igt@syncobj_wait@single-wait-all-signaled.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-kbl2/igt@syncobj_wait@single-wait-all-signaled.html
#### Possible fixes ####
* {igt@gem_exec_reloc@basic-concurrent0}:
- shard-glk: [FAIL][41] ([i915#1930]) -> [PASS][42]
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-glk4/igt@gem_exec_reloc@basic-concurrent0.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-glk6/igt@gem_exec_reloc@basic-concurrent0.html
* {igt@gem_exec_reloc@basic-concurrent16}:
- shard-skl: [FAIL][43] ([i915#1930]) -> [PASS][44]
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl5/igt@gem_exec_reloc@basic-concurrent16.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl7/igt@gem_exec_reloc@basic-concurrent16.html
* {igt@gem_exec_schedule@implicit-write-read@rcs0}:
- shard-snb: [INCOMPLETE][45] ([i915#82]) -> [PASS][46]
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-snb5/igt@gem_exec_schedule@implicit-write-read@rcs0.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-snb5/igt@gem_exec_schedule@implicit-write-read@rcs0.html
* igt@gem_workarounds@suspend-resume-context:
- shard-apl: [DMESG-WARN][47] ([i915#180]) -> [PASS][48] +2 similar issues
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-apl6/igt@gem_workarounds@suspend-resume-context.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-apl3/igt@gem_workarounds@suspend-resume-context.html
* igt@i915_suspend@sysfs-reader:
- shard-apl: [TIMEOUT][49] ([i915#1635]) -> [PASS][50] +2 similar issues
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-apl4/igt@i915_suspend@sysfs-reader.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-apl4/igt@i915_suspend@sysfs-reader.html
* igt@kms_big_fb@yf-tiled-32bpp-rotate-0:
- shard-skl: [DMESG-WARN][51] ([i915#1982]) -> [PASS][52] +5 similar issues
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl5/igt@kms_big_fb@yf-tiled-32bpp-rotate-0.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl7/igt@kms_big_fb@yf-tiled-32bpp-rotate-0.html
* igt@kms_cursor_crc@pipe-a-cursor-256x256-onscreen:
- shard-tglb: [DMESG-WARN][53] ([i915#402]) -> [PASS][54]
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-tglb2/igt@kms_cursor_crc@pipe-a-cursor-256x256-onscreen.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-tglb6/igt@kms_cursor_crc@pipe-a-cursor-256x256-onscreen.html
* igt@kms_hdr@bpc-switch:
- shard-skl: [FAIL][55] ([i915#1188]) -> [PASS][56]
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl1/igt@kms_hdr@bpc-switch.html
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl3/igt@kms_hdr@bpc-switch.html
* igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes:
- shard-skl: [INCOMPLETE][57] ([i915#69]) -> [PASS][58]
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl8/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl8/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes.html
* igt@kms_plane_alpha_blend@pipe-b-coverage-7efc:
- shard-skl: [FAIL][59] ([fdo#108145] / [i915#265]) -> [PASS][60]
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-skl1/igt@kms_plane_alpha_blend@pipe-b-coverage-7efc.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-skl2/igt@kms_plane_alpha_blend@pipe-b-coverage-7efc.html
* igt@kms_plane_scaling@pipe-a-scaler-with-clipping-clamping:
- shard-iclb: [DMESG-WARN][61] ([i915#1982]) -> [PASS][62] +1 similar issue
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-iclb3/igt@kms_plane_scaling@pipe-a-scaler-with-clipping-clamping.html
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-iclb5/igt@kms_plane_scaling@pipe-a-scaler-with-clipping-clamping.html
* igt@kms_psr@psr2_no_drrs:
- shard-iclb: [SKIP][63] ([fdo#109441]) -> [PASS][64] +1 similar issue
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-iclb5/igt@kms_psr@psr2_no_drrs.html
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-iclb2/igt@kms_psr@psr2_no_drrs.html
* igt@kms_vblank@pipe-a-ts-continuation-suspend:
- shard-kbl: [DMESG-WARN][65] ([i915#180]) -> [PASS][66] +4 similar issues
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-kbl3/igt@kms_vblank@pipe-a-ts-continuation-suspend.html
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-kbl7/igt@kms_vblank@pipe-a-ts-continuation-suspend.html
* {igt@perf@blocking-parameterized}:
- shard-tglb: [FAIL][67] ([i915#1542]) -> [PASS][68]
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-tglb7/igt@perf@blocking-parameterized.html
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-tglb1/igt@perf@blocking-parameterized.html
* igt@vgem_basic@dmabuf-mmap:
- shard-apl: [DMESG-WARN][69] ([i915#95]) -> [PASS][70] +11 similar issues
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-apl2/igt@vgem_basic@dmabuf-mmap.html
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-apl7/igt@vgem_basic@dmabuf-mmap.html
#### Warnings ####
* igt@gem_ctx_bad_destroy@invalid-pad:
- shard-apl: [TIMEOUT][71] ([i915#1635]) -> [DMESG-WARN][72] ([i915#95])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-apl4/igt@gem_ctx_bad_destroy@invalid-pad.html
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-apl4/igt@gem_ctx_bad_destroy@invalid-pad.html
* igt@kms_content_protection@atomic:
- shard-apl: [TIMEOUT][73] ([i915#1319] / [i915#1635]) -> [TIMEOUT][74] ([i915#1319])
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-apl6/igt@kms_content_protection@atomic.html
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-apl6/igt@kms_content_protection@atomic.html
* igt@kms_content_protection@atomic-dpms:
- shard-apl: [TIMEOUT][75] ([i915#1319]) -> [FAIL][76] ([fdo#110321] / [fdo#110336])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-apl1/igt@kms_content_protection@atomic-dpms.html
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-apl4/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@srm:
- shard-apl: [FAIL][77] ([fdo#110321]) -> [TIMEOUT][78] ([i915#1319] / [i915#1635])
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-apl2/igt@kms_content_protection@srm.html
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-apl2/igt@kms_content_protection@srm.html
* igt@kms_vblank@pipe-d-query-idle-hang:
- shard-apl: [TIMEOUT][79] ([i915#1635] / [i915#1640]) -> [SKIP][80] ([fdo#109271])
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8579/shard-apl4/igt@kms_vblank@pipe-d-query-idle-hang.html
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/shard-apl4/igt@kms_vblank@pipe-d-query-idle-hang.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#110321]: https://bugs.freedesktop.org/show_bug.cgi?id=110321
[fdo#110336]: https://bugs.freedesktop.org/show_bug.cgi?id=110336
[i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
[i915#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188
[i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319
[i915#1542]: https://gitlab.freedesktop.org/drm/intel/issues/1542
[i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635
[i915#1640]: https://gitlab.freedesktop.org/drm/intel/issues/1640
[i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
[i915#1926]: https://gitlab.freedesktop.org/drm/intel/issues/1926
[i915#1927]: https://gitlab.freedesktop.org/drm/intel/issues/1927
[i915#1930]: https://gitlab.freedesktop.org/drm/intel/issues/1930
[i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
[i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
[i915#31]: https://gitlab.freedesktop.org/drm/intel/issues/31
[i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
[i915#46]: https://gitlab.freedesktop.org/drm/intel/issues/46
[i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49
[i915#53]: https://gitlab.freedesktop.org/drm/intel/issues/53
[i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
[i915#58]: https://gitlab.freedesktop.org/drm/intel/issues/58
[i915#69]: https://gitlab.freedesktop.org/drm/intel/issues/69
[i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
[i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82
[i915#93]: https://gitlab.freedesktop.org/drm/intel/issues/93
[i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133
Participating hosts (11 -> 11)
------------------------------
No changes in participating hosts
Build changes
-------------
* Linux: CI_DRM_8579 -> Patchwork_17856
CI-20190529: 20190529
CI_DRM_8579: 289eb12c88c49a4ac8d325dc457d8878c7f5bdc0 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_5694: a9b6c4c74bfddf7d3d2da3be08804fe315945cea @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_17856: 3560e47537d1185a5d719e8abc8dc0eb5a4289d2 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17856/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/1] drm/mm: add ig_frag selftest
2020-06-03 10:32 ` [Intel-gfx] " Nirmoy Das
@ 2020-06-05 7:45 ` Christian König
-1 siblings, 0 replies; 16+ messages in thread
From: Christian König @ 2020-06-05 7:45 UTC (permalink / raw)
To: Nirmoy Das, dri-devel; +Cc: intel-gfx, Nirmoy Das, chris
Am 03.06.20 um 12:32 schrieb Nirmoy Das:
> This patch introduces fragmentation in the address range
> and measures time taken by 10k and 20k insertions. ig_frag()
> will fail if the time taken by 20k insertions takes more than
> 4 times of 10k insertions as we know that insertions should at
> most scale quadratically.
>
> v2:
> introduce fragmentation by freeing every other node.
> only test bottom-up and top-down for now.
>
> Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
> ---
> drivers/gpu/drm/selftests/drm_mm_selftests.h | 1 +
> drivers/gpu/drm/selftests/test-drm_mm.c | 124 +++++++++++++++++++
> 2 files changed, 125 insertions(+)
>
> diff --git a/drivers/gpu/drm/selftests/drm_mm_selftests.h b/drivers/gpu/drm/selftests/drm_mm_selftests.h
> index 6b943ea1c57d..8c87c964176b 100644
> --- a/drivers/gpu/drm/selftests/drm_mm_selftests.h
> +++ b/drivers/gpu/drm/selftests/drm_mm_selftests.h
> @@ -14,6 +14,7 @@ selftest(insert, igt_insert)
> selftest(replace, igt_replace)
> selftest(insert_range, igt_insert_range)
> selftest(align, igt_align)
> +selftest(frag, igt_frag)
> selftest(align32, igt_align32)
> selftest(align64, igt_align64)
> selftest(evict, igt_evict)
> diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c b/drivers/gpu/drm/selftests/test-drm_mm.c
> index 9aabe82dcd3a..34231baacd87 100644
> --- a/drivers/gpu/drm/selftests/test-drm_mm.c
> +++ b/drivers/gpu/drm/selftests/test-drm_mm.c
> @@ -10,6 +10,7 @@
> #include <linux/slab.h>
> #include <linux/random.h>
> #include <linux/vmalloc.h>
> +#include <linux/ktime.h>
>
> #include <drm/drm_mm.h>
>
> @@ -1033,6 +1034,129 @@ static int igt_insert_range(void *ignored)
> return 0;
> }
>
> +static int prepare_igt_frag(struct drm_mm *mm,
> + struct drm_mm_node *nodes,
> + unsigned int num_insert,
> + const struct insert_mode *mode)
> +{
> + unsigned int size = 4096;
> + unsigned int i;
> + u64 ret = -EINVAL;
> +
> + for (i = 0; i < num_insert; i++) {
> + if (!expect_insert(mm, &nodes[i], size, 0, i,
> + mode) != 0) {
> + pr_err("%s insert failed\n", mode->name);
> + goto out;
> + }
> + }
> +
> + /* introduce fragmentation by freeing every other node */
> + for (i = 0; i < num_insert; i++) {
> + if (i % 2 == 0)
> + drm_mm_remove_node(&nodes[i]);
> + }
> +
> +out:
> + return ret;
> +
> +}
> +
> +static u64 get_insert_time(struct drm_mm *mm,
> + unsigned int num_insert,
> + struct drm_mm_node *nodes,
> + const struct insert_mode *mode)
> +{
> + unsigned int size = 8192;
> + ktime_t start;
> + unsigned int i;
> + u64 ret = -EINVAL;
> +
> + start = ktime_get();
> + for (i = 0; i < num_insert; i++) {
> + if (!expect_insert(mm, &nodes[i], size, 0, i, mode) != 0) {
> + pr_err("%s insert failed\n", mode->name);
> + goto out;
> + }
> + }
> +
> + ret = ktime_to_ns(ktime_sub(ktime_get(), start));
> +
> +out:
> + return ret;
> +
> +}
> +
> +static int igt_frag(void *ignored)
> +{
> + struct drm_mm mm;
> + const struct insert_mode *mode;
> + struct drm_mm_node *nodes, *node, *next;
> + unsigned int insert_size = 10000;
> + unsigned int scale_factor = 4;
> + int ret = -EINVAL;
> +
> + /* We need 4 * insert_size nodes to hold intermediate allocated
> + * drm_mm nodes.
> + * 1 times for prepare_igt_frag()
> + * 1 times for get_insert_time()
> + * 2 times for get_insert_time()
> + */
> + nodes = vzalloc(array_size(insert_size * 4, sizeof(*nodes)));
> + if (!nodes)
> + return -ENOMEM;
> +
> + /* For BOTTOMUP and TOPDOWN, we first fragment the
> + * address space using prepare_igt_frag() and then try to verify
> + * that that insertions scale quadratically from 10k to 20k insertions
> + */
> + drm_mm_init(&mm, 1, U64_MAX - 2);
> + for (mode = insert_modes; mode->name; mode++) {
> + u64 insert_time1, insert_time2;
> +
> + if (mode->mode != DRM_MM_INSERT_LOW ||
> + mode->mode != DRM_MM_INSERT_HIGH)
> + continue;
This check here is wrong, that needs to be && instead of || or the test
wouldn't execute at all.
Christian.
> +
> + ret = prepare_igt_frag(&mm, nodes, insert_size, mode);
> + if (!ret)
> + goto err;
> +
> + insert_time1 = get_insert_time(&mm, insert_size,
> + nodes + insert_size, mode);
> + if (insert_time1 < 0)
> + goto err;
> +
> + insert_time2 = get_insert_time(&mm, (insert_size * 2),
> + nodes + insert_size * 2, mode);
> + if (insert_time2 < 0)
> + goto err;
> +
> + pr_info("%s fragmented insert of %u and %u insertions took %llu and %llu nsecs\n",
> + mode->name, insert_size, insert_size * 2,
> + insert_time1, insert_time2);
> +
> + if (insert_time2 > (scale_factor * insert_time1)) {
> + pr_err("%s fragmented insert took %llu nsecs more\n",
> + mode->name,
> + insert_time2 - (scale_factor * insert_time1));
> + goto err;
> + }
> +
> + drm_mm_for_each_node_safe(node, next, &mm)
> + drm_mm_remove_node(node);
> + }
> +
> + ret = 0;
> +err:
> + drm_mm_for_each_node_safe(node, next, &mm)
> + drm_mm_remove_node(node);
> + drm_mm_takedown(&mm);
> + vfree(nodes);
> +
> + return ret;
> +}
> +
> static int igt_align(void *ignored)
> {
> const struct insert_mode *mode;
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Intel-gfx] [PATCH v2 1/1] drm/mm: add ig_frag selftest
@ 2020-06-05 7:45 ` Christian König
0 siblings, 0 replies; 16+ messages in thread
From: Christian König @ 2020-06-05 7:45 UTC (permalink / raw)
To: Nirmoy Das, dri-devel; +Cc: intel-gfx, Nirmoy Das, chris
Am 03.06.20 um 12:32 schrieb Nirmoy Das:
> This patch introduces fragmentation in the address range
> and measures time taken by 10k and 20k insertions. ig_frag()
> will fail if the time taken by 20k insertions takes more than
> 4 times of 10k insertions as we know that insertions should at
> most scale quadratically.
>
> v2:
> introduce fragmentation by freeing every other node.
> only test bottom-up and top-down for now.
>
> Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
> ---
> drivers/gpu/drm/selftests/drm_mm_selftests.h | 1 +
> drivers/gpu/drm/selftests/test-drm_mm.c | 124 +++++++++++++++++++
> 2 files changed, 125 insertions(+)
>
> diff --git a/drivers/gpu/drm/selftests/drm_mm_selftests.h b/drivers/gpu/drm/selftests/drm_mm_selftests.h
> index 6b943ea1c57d..8c87c964176b 100644
> --- a/drivers/gpu/drm/selftests/drm_mm_selftests.h
> +++ b/drivers/gpu/drm/selftests/drm_mm_selftests.h
> @@ -14,6 +14,7 @@ selftest(insert, igt_insert)
> selftest(replace, igt_replace)
> selftest(insert_range, igt_insert_range)
> selftest(align, igt_align)
> +selftest(frag, igt_frag)
> selftest(align32, igt_align32)
> selftest(align64, igt_align64)
> selftest(evict, igt_evict)
> diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c b/drivers/gpu/drm/selftests/test-drm_mm.c
> index 9aabe82dcd3a..34231baacd87 100644
> --- a/drivers/gpu/drm/selftests/test-drm_mm.c
> +++ b/drivers/gpu/drm/selftests/test-drm_mm.c
> @@ -10,6 +10,7 @@
> #include <linux/slab.h>
> #include <linux/random.h>
> #include <linux/vmalloc.h>
> +#include <linux/ktime.h>
>
> #include <drm/drm_mm.h>
>
> @@ -1033,6 +1034,129 @@ static int igt_insert_range(void *ignored)
> return 0;
> }
>
> +static int prepare_igt_frag(struct drm_mm *mm,
> + struct drm_mm_node *nodes,
> + unsigned int num_insert,
> + const struct insert_mode *mode)
> +{
> + unsigned int size = 4096;
> + unsigned int i;
> + u64 ret = -EINVAL;
> +
> + for (i = 0; i < num_insert; i++) {
> + if (!expect_insert(mm, &nodes[i], size, 0, i,
> + mode) != 0) {
> + pr_err("%s insert failed\n", mode->name);
> + goto out;
> + }
> + }
> +
> + /* introduce fragmentation by freeing every other node */
> + for (i = 0; i < num_insert; i++) {
> + if (i % 2 == 0)
> + drm_mm_remove_node(&nodes[i]);
> + }
> +
> +out:
> + return ret;
> +
> +}
> +
> +static u64 get_insert_time(struct drm_mm *mm,
> + unsigned int num_insert,
> + struct drm_mm_node *nodes,
> + const struct insert_mode *mode)
> +{
> + unsigned int size = 8192;
> + ktime_t start;
> + unsigned int i;
> + u64 ret = -EINVAL;
> +
> + start = ktime_get();
> + for (i = 0; i < num_insert; i++) {
> + if (!expect_insert(mm, &nodes[i], size, 0, i, mode) != 0) {
> + pr_err("%s insert failed\n", mode->name);
> + goto out;
> + }
> + }
> +
> + ret = ktime_to_ns(ktime_sub(ktime_get(), start));
> +
> +out:
> + return ret;
> +
> +}
> +
> +static int igt_frag(void *ignored)
> +{
> + struct drm_mm mm;
> + const struct insert_mode *mode;
> + struct drm_mm_node *nodes, *node, *next;
> + unsigned int insert_size = 10000;
> + unsigned int scale_factor = 4;
> + int ret = -EINVAL;
> +
> + /* We need 4 * insert_size nodes to hold intermediate allocated
> + * drm_mm nodes.
> + * 1 times for prepare_igt_frag()
> + * 1 times for get_insert_time()
> + * 2 times for get_insert_time()
> + */
> + nodes = vzalloc(array_size(insert_size * 4, sizeof(*nodes)));
> + if (!nodes)
> + return -ENOMEM;
> +
> + /* For BOTTOMUP and TOPDOWN, we first fragment the
> + * address space using prepare_igt_frag() and then try to verify
> + * that that insertions scale quadratically from 10k to 20k insertions
> + */
> + drm_mm_init(&mm, 1, U64_MAX - 2);
> + for (mode = insert_modes; mode->name; mode++) {
> + u64 insert_time1, insert_time2;
> +
> + if (mode->mode != DRM_MM_INSERT_LOW ||
> + mode->mode != DRM_MM_INSERT_HIGH)
> + continue;
This check here is wrong, that needs to be && instead of || or the test
wouldn't execute at all.
Christian.
> +
> + ret = prepare_igt_frag(&mm, nodes, insert_size, mode);
> + if (!ret)
> + goto err;
> +
> + insert_time1 = get_insert_time(&mm, insert_size,
> + nodes + insert_size, mode);
> + if (insert_time1 < 0)
> + goto err;
> +
> + insert_time2 = get_insert_time(&mm, (insert_size * 2),
> + nodes + insert_size * 2, mode);
> + if (insert_time2 < 0)
> + goto err;
> +
> + pr_info("%s fragmented insert of %u and %u insertions took %llu and %llu nsecs\n",
> + mode->name, insert_size, insert_size * 2,
> + insert_time1, insert_time2);
> +
> + if (insert_time2 > (scale_factor * insert_time1)) {
> + pr_err("%s fragmented insert took %llu nsecs more\n",
> + mode->name,
> + insert_time2 - (scale_factor * insert_time1));
> + goto err;
> + }
> +
> + drm_mm_for_each_node_safe(node, next, &mm)
> + drm_mm_remove_node(node);
> + }
> +
> + ret = 0;
> +err:
> + drm_mm_for_each_node_safe(node, next, &mm)
> + drm_mm_remove_node(node);
> + drm_mm_takedown(&mm);
> + vfree(nodes);
> +
> + return ret;
> +}
> +
> static int igt_align(void *ignored)
> {
> const struct insert_mode *mode;
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/1] drm/mm: add ig_frag selftest
2020-06-05 7:45 ` [Intel-gfx] " Christian König
@ 2020-06-05 8:18 ` Nirmoy
-1 siblings, 0 replies; 16+ messages in thread
From: Nirmoy @ 2020-06-05 8:18 UTC (permalink / raw)
To: Christian König, dri-devel; +Cc: intel-gfx, chris
On 6/5/20 9:45 AM, Christian König wrote:
> Am 03.06.20 um 12:32 schrieb Nirmoy Das:
>> This patch introduces fragmentation in the address range
>> and measures time taken by 10k and 20k insertions. ig_frag()
>> will fail if the time taken by 20k insertions takes more than
>> 4 times of 10k insertions as we know that insertions should at
>> most scale quadratically.
>>
>> v2:
>> introduce fragmentation by freeing every other node.
>> only test bottom-up and top-down for now.
>>
>> Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
>> ---
>> drivers/gpu/drm/selftests/drm_mm_selftests.h | 1 +
>> drivers/gpu/drm/selftests/test-drm_mm.c | 124 +++++++++++++++++++
>> 2 files changed, 125 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/selftests/drm_mm_selftests.h
>> b/drivers/gpu/drm/selftests/drm_mm_selftests.h
>> index 6b943ea1c57d..8c87c964176b 100644
>> --- a/drivers/gpu/drm/selftests/drm_mm_selftests.h
>> +++ b/drivers/gpu/drm/selftests/drm_mm_selftests.h
>> @@ -14,6 +14,7 @@ selftest(insert, igt_insert)
>> selftest(replace, igt_replace)
>> selftest(insert_range, igt_insert_range)
>> selftest(align, igt_align)
>> +selftest(frag, igt_frag)
>> selftest(align32, igt_align32)
>> selftest(align64, igt_align64)
>> selftest(evict, igt_evict)
>> diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c
>> b/drivers/gpu/drm/selftests/test-drm_mm.c
>> index 9aabe82dcd3a..34231baacd87 100644
>> --- a/drivers/gpu/drm/selftests/test-drm_mm.c
>> +++ b/drivers/gpu/drm/selftests/test-drm_mm.c
>> @@ -10,6 +10,7 @@
>> #include <linux/slab.h>
>> #include <linux/random.h>
>> #include <linux/vmalloc.h>
>> +#include <linux/ktime.h>
>> #include <drm/drm_mm.h>
>> @@ -1033,6 +1034,129 @@ static int igt_insert_range(void *ignored)
>> return 0;
>> }
>> +static int prepare_igt_frag(struct drm_mm *mm,
>> + struct drm_mm_node *nodes,
>> + unsigned int num_insert,
>> + const struct insert_mode *mode)
>> +{
>> + unsigned int size = 4096;
>> + unsigned int i;
>> + u64 ret = -EINVAL;
>> +
>> + for (i = 0; i < num_insert; i++) {
>> + if (!expect_insert(mm, &nodes[i], size, 0, i,
>> + mode) != 0) {
>> + pr_err("%s insert failed\n", mode->name);
>> + goto out;
>> + }
>> + }
>> +
>> + /* introduce fragmentation by freeing every other node */
>> + for (i = 0; i < num_insert; i++) {
>> + if (i % 2 == 0)
>> + drm_mm_remove_node(&nodes[i]);
>> + }
>> +
>> +out:
>> + return ret;
>> +
>> +}
>> +
>> +static u64 get_insert_time(struct drm_mm *mm,
>> + unsigned int num_insert,
>> + struct drm_mm_node *nodes,
>> + const struct insert_mode *mode)
>> +{
>> + unsigned int size = 8192;
>> + ktime_t start;
>> + unsigned int i;
>> + u64 ret = -EINVAL;
>> +
>> + start = ktime_get();
>> + for (i = 0; i < num_insert; i++) {
>> + if (!expect_insert(mm, &nodes[i], size, 0, i, mode) != 0) {
>> + pr_err("%s insert failed\n", mode->name);
>> + goto out;
>> + }
>> + }
>> +
>> + ret = ktime_to_ns(ktime_sub(ktime_get(), start));
>> +
>> +out:
>> + return ret;
>> +
>> +}
>> +
>> +static int igt_frag(void *ignored)
>> +{
>> + struct drm_mm mm;
>> + const struct insert_mode *mode;
>> + struct drm_mm_node *nodes, *node, *next;
>> + unsigned int insert_size = 10000;
>> + unsigned int scale_factor = 4;
>> + int ret = -EINVAL;
>> +
>> + /* We need 4 * insert_size nodes to hold intermediate allocated
>> + * drm_mm nodes.
>> + * 1 times for prepare_igt_frag()
>> + * 1 times for get_insert_time()
>> + * 2 times for get_insert_time()
>> + */
>> + nodes = vzalloc(array_size(insert_size * 4, sizeof(*nodes)));
>> + if (!nodes)
>> + return -ENOMEM;
>> +
>> + /* For BOTTOMUP and TOPDOWN, we first fragment the
>> + * address space using prepare_igt_frag() and then try to verify
>> + * that that insertions scale quadratically from 10k to 20k
>> insertions
>> + */
>> + drm_mm_init(&mm, 1, U64_MAX - 2);
>> + for (mode = insert_modes; mode->name; mode++) {
>> + u64 insert_time1, insert_time2;
>> +
>> + if (mode->mode != DRM_MM_INSERT_LOW ||
>> + mode->mode != DRM_MM_INSERT_HIGH)
>> + continue;
>
> This check here is wrong, that needs to be && instead of || or the
> test wouldn't execute at all.
I didn't bother to check dmesg after adding that "simple" check and the
test ran fine. :/
Sending again.
Nirmoy
>
> Christian.
>
>> +
>> + ret = prepare_igt_frag(&mm, nodes, insert_size, mode);
>> + if (!ret)
>> + goto err;
>> +
>> + insert_time1 = get_insert_time(&mm, insert_size,
>> + nodes + insert_size, mode);
>> + if (insert_time1 < 0)
>> + goto err;
>> +
>> + insert_time2 = get_insert_time(&mm, (insert_size * 2),
>> + nodes + insert_size * 2, mode);
>> + if (insert_time2 < 0)
>> + goto err;
>> +
>> + pr_info("%s fragmented insert of %u and %u insertions took
>> %llu and %llu nsecs\n",
>> + mode->name, insert_size, insert_size * 2,
>> + insert_time1, insert_time2);
>> +
>> + if (insert_time2 > (scale_factor * insert_time1)) {
>> + pr_err("%s fragmented insert took %llu nsecs more\n",
>> + mode->name,
>> + insert_time2 - (scale_factor * insert_time1));
>> + goto err;
>> + }
>> +
>> + drm_mm_for_each_node_safe(node, next, &mm)
>> + drm_mm_remove_node(node);
>> + }
>> +
>> + ret = 0;
>> +err:
>> + drm_mm_for_each_node_safe(node, next, &mm)
>> + drm_mm_remove_node(node);
>> + drm_mm_takedown(&mm);
>> + vfree(nodes);
>> +
>> + return ret;
>> +}
>> +
>> static int igt_align(void *ignored)
>> {
>> const struct insert_mode *mode;
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Intel-gfx] [PATCH v2 1/1] drm/mm: add ig_frag selftest
@ 2020-06-05 8:18 ` Nirmoy
0 siblings, 0 replies; 16+ messages in thread
From: Nirmoy @ 2020-06-05 8:18 UTC (permalink / raw)
To: Christian König, dri-devel; +Cc: intel-gfx, chris
On 6/5/20 9:45 AM, Christian König wrote:
> Am 03.06.20 um 12:32 schrieb Nirmoy Das:
>> This patch introduces fragmentation in the address range
>> and measures time taken by 10k and 20k insertions. ig_frag()
>> will fail if the time taken by 20k insertions takes more than
>> 4 times of 10k insertions as we know that insertions should at
>> most scale quadratically.
>>
>> v2:
>> introduce fragmentation by freeing every other node.
>> only test bottom-up and top-down for now.
>>
>> Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
>> ---
>> drivers/gpu/drm/selftests/drm_mm_selftests.h | 1 +
>> drivers/gpu/drm/selftests/test-drm_mm.c | 124 +++++++++++++++++++
>> 2 files changed, 125 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/selftests/drm_mm_selftests.h
>> b/drivers/gpu/drm/selftests/drm_mm_selftests.h
>> index 6b943ea1c57d..8c87c964176b 100644
>> --- a/drivers/gpu/drm/selftests/drm_mm_selftests.h
>> +++ b/drivers/gpu/drm/selftests/drm_mm_selftests.h
>> @@ -14,6 +14,7 @@ selftest(insert, igt_insert)
>> selftest(replace, igt_replace)
>> selftest(insert_range, igt_insert_range)
>> selftest(align, igt_align)
>> +selftest(frag, igt_frag)
>> selftest(align32, igt_align32)
>> selftest(align64, igt_align64)
>> selftest(evict, igt_evict)
>> diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c
>> b/drivers/gpu/drm/selftests/test-drm_mm.c
>> index 9aabe82dcd3a..34231baacd87 100644
>> --- a/drivers/gpu/drm/selftests/test-drm_mm.c
>> +++ b/drivers/gpu/drm/selftests/test-drm_mm.c
>> @@ -10,6 +10,7 @@
>> #include <linux/slab.h>
>> #include <linux/random.h>
>> #include <linux/vmalloc.h>
>> +#include <linux/ktime.h>
>> #include <drm/drm_mm.h>
>> @@ -1033,6 +1034,129 @@ static int igt_insert_range(void *ignored)
>> return 0;
>> }
>> +static int prepare_igt_frag(struct drm_mm *mm,
>> + struct drm_mm_node *nodes,
>> + unsigned int num_insert,
>> + const struct insert_mode *mode)
>> +{
>> + unsigned int size = 4096;
>> + unsigned int i;
>> + u64 ret = -EINVAL;
>> +
>> + for (i = 0; i < num_insert; i++) {
>> + if (!expect_insert(mm, &nodes[i], size, 0, i,
>> + mode) != 0) {
>> + pr_err("%s insert failed\n", mode->name);
>> + goto out;
>> + }
>> + }
>> +
>> + /* introduce fragmentation by freeing every other node */
>> + for (i = 0; i < num_insert; i++) {
>> + if (i % 2 == 0)
>> + drm_mm_remove_node(&nodes[i]);
>> + }
>> +
>> +out:
>> + return ret;
>> +
>> +}
>> +
>> +static u64 get_insert_time(struct drm_mm *mm,
>> + unsigned int num_insert,
>> + struct drm_mm_node *nodes,
>> + const struct insert_mode *mode)
>> +{
>> + unsigned int size = 8192;
>> + ktime_t start;
>> + unsigned int i;
>> + u64 ret = -EINVAL;
>> +
>> + start = ktime_get();
>> + for (i = 0; i < num_insert; i++) {
>> + if (!expect_insert(mm, &nodes[i], size, 0, i, mode) != 0) {
>> + pr_err("%s insert failed\n", mode->name);
>> + goto out;
>> + }
>> + }
>> +
>> + ret = ktime_to_ns(ktime_sub(ktime_get(), start));
>> +
>> +out:
>> + return ret;
>> +
>> +}
>> +
>> +static int igt_frag(void *ignored)
>> +{
>> + struct drm_mm mm;
>> + const struct insert_mode *mode;
>> + struct drm_mm_node *nodes, *node, *next;
>> + unsigned int insert_size = 10000;
>> + unsigned int scale_factor = 4;
>> + int ret = -EINVAL;
>> +
>> + /* We need 4 * insert_size nodes to hold intermediate allocated
>> + * drm_mm nodes.
>> + * 1 times for prepare_igt_frag()
>> + * 1 times for get_insert_time()
>> + * 2 times for get_insert_time()
>> + */
>> + nodes = vzalloc(array_size(insert_size * 4, sizeof(*nodes)));
>> + if (!nodes)
>> + return -ENOMEM;
>> +
>> + /* For BOTTOMUP and TOPDOWN, we first fragment the
>> + * address space using prepare_igt_frag() and then try to verify
>> + * that that insertions scale quadratically from 10k to 20k
>> insertions
>> + */
>> + drm_mm_init(&mm, 1, U64_MAX - 2);
>> + for (mode = insert_modes; mode->name; mode++) {
>> + u64 insert_time1, insert_time2;
>> +
>> + if (mode->mode != DRM_MM_INSERT_LOW ||
>> + mode->mode != DRM_MM_INSERT_HIGH)
>> + continue;
>
> This check here is wrong, that needs to be && instead of || or the
> test wouldn't execute at all.
I didn't bother to check dmesg after adding that "simple" check and the
test ran fine. :/
Sending again.
Nirmoy
>
> Christian.
>
>> +
>> + ret = prepare_igt_frag(&mm, nodes, insert_size, mode);
>> + if (!ret)
>> + goto err;
>> +
>> + insert_time1 = get_insert_time(&mm, insert_size,
>> + nodes + insert_size, mode);
>> + if (insert_time1 < 0)
>> + goto err;
>> +
>> + insert_time2 = get_insert_time(&mm, (insert_size * 2),
>> + nodes + insert_size * 2, mode);
>> + if (insert_time2 < 0)
>> + goto err;
>> +
>> + pr_info("%s fragmented insert of %u and %u insertions took
>> %llu and %llu nsecs\n",
>> + mode->name, insert_size, insert_size * 2,
>> + insert_time1, insert_time2);
>> +
>> + if (insert_time2 > (scale_factor * insert_time1)) {
>> + pr_err("%s fragmented insert took %llu nsecs more\n",
>> + mode->name,
>> + insert_time2 - (scale_factor * insert_time1));
>> + goto err;
>> + }
>> +
>> + drm_mm_for_each_node_safe(node, next, &mm)
>> + drm_mm_remove_node(node);
>> + }
>> +
>> + ret = 0;
>> +err:
>> + drm_mm_for_each_node_safe(node, next, &mm)
>> + drm_mm_remove_node(node);
>> + drm_mm_takedown(&mm);
>> + vfree(nodes);
>> +
>> + return ret;
>> +}
>> +
>> static int igt_align(void *ignored)
>> {
>> const struct insert_mode *mode;
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/1] drm/mm: add ig_frag selftest
2020-06-05 8:18 ` [Intel-gfx] " Nirmoy
@ 2020-06-05 8:39 ` Christian König
-1 siblings, 0 replies; 16+ messages in thread
From: Christian König @ 2020-06-05 8:39 UTC (permalink / raw)
To: Nirmoy, dri-devel; +Cc: intel-gfx, chris
Am 05.06.20 um 10:18 schrieb Nirmoy:
>
> On 6/5/20 9:45 AM, Christian König wrote:
>> Am 03.06.20 um 12:32 schrieb Nirmoy Das:
>>> This patch introduces fragmentation in the address range
>>> and measures time taken by 10k and 20k insertions. ig_frag()
>>> will fail if the time taken by 20k insertions takes more than
>>> 4 times of 10k insertions as we know that insertions should at
>>> most scale quadratically.
>>>
>>> v2:
>>> introduce fragmentation by freeing every other node.
>>> only test bottom-up and top-down for now.
>>>
>>> Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
>>> ---
>>> drivers/gpu/drm/selftests/drm_mm_selftests.h | 1 +
>>> drivers/gpu/drm/selftests/test-drm_mm.c | 124
>>> +++++++++++++++++++
>>> 2 files changed, 125 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/selftests/drm_mm_selftests.h
>>> b/drivers/gpu/drm/selftests/drm_mm_selftests.h
>>> index 6b943ea1c57d..8c87c964176b 100644
>>> --- a/drivers/gpu/drm/selftests/drm_mm_selftests.h
>>> +++ b/drivers/gpu/drm/selftests/drm_mm_selftests.h
>>> @@ -14,6 +14,7 @@ selftest(insert, igt_insert)
>>> selftest(replace, igt_replace)
>>> selftest(insert_range, igt_insert_range)
>>> selftest(align, igt_align)
>>> +selftest(frag, igt_frag)
>>> selftest(align32, igt_align32)
>>> selftest(align64, igt_align64)
>>> selftest(evict, igt_evict)
>>> diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c
>>> b/drivers/gpu/drm/selftests/test-drm_mm.c
>>> index 9aabe82dcd3a..34231baacd87 100644
>>> --- a/drivers/gpu/drm/selftests/test-drm_mm.c
>>> +++ b/drivers/gpu/drm/selftests/test-drm_mm.c
>>> @@ -10,6 +10,7 @@
>>> #include <linux/slab.h>
>>> #include <linux/random.h>
>>> #include <linux/vmalloc.h>
>>> +#include <linux/ktime.h>
>>> #include <drm/drm_mm.h>
>>> @@ -1033,6 +1034,129 @@ static int igt_insert_range(void *ignored)
>>> return 0;
>>> }
>>> +static int prepare_igt_frag(struct drm_mm *mm,
>>> + struct drm_mm_node *nodes,
>>> + unsigned int num_insert,
>>> + const struct insert_mode *mode)
>>> +{
>>> + unsigned int size = 4096;
>>> + unsigned int i;
>>> + u64 ret = -EINVAL;
>>> +
>>> + for (i = 0; i < num_insert; i++) {
>>> + if (!expect_insert(mm, &nodes[i], size, 0, i,
>>> + mode) != 0) {
>>> + pr_err("%s insert failed\n", mode->name);
>>> + goto out;
>>> + }
>>> + }
>>> +
>>> + /* introduce fragmentation by freeing every other node */
>>> + for (i = 0; i < num_insert; i++) {
>>> + if (i % 2 == 0)
>>> + drm_mm_remove_node(&nodes[i]);
>>> + }
>>> +
>>> +out:
>>> + return ret;
>>> +
>>> +}
>>> +
>>> +static u64 get_insert_time(struct drm_mm *mm,
>>> + unsigned int num_insert,
>>> + struct drm_mm_node *nodes,
>>> + const struct insert_mode *mode)
>>> +{
>>> + unsigned int size = 8192;
>>> + ktime_t start;
>>> + unsigned int i;
>>> + u64 ret = -EINVAL;
>>> +
>>> + start = ktime_get();
>>> + for (i = 0; i < num_insert; i++) {
>>> + if (!expect_insert(mm, &nodes[i], size, 0, i, mode) != 0) {
>>> + pr_err("%s insert failed\n", mode->name);
>>> + goto out;
>>> + }
>>> + }
>>> +
>>> + ret = ktime_to_ns(ktime_sub(ktime_get(), start));
>>> +
>>> +out:
>>> + return ret;
>>> +
>>> +}
>>> +
>>> +static int igt_frag(void *ignored)
>>> +{
>>> + struct drm_mm mm;
>>> + const struct insert_mode *mode;
>>> + struct drm_mm_node *nodes, *node, *next;
>>> + unsigned int insert_size = 10000;
>>> + unsigned int scale_factor = 4;
>>> + int ret = -EINVAL;
>>> +
>>> + /* We need 4 * insert_size nodes to hold intermediate allocated
>>> + * drm_mm nodes.
>>> + * 1 times for prepare_igt_frag()
>>> + * 1 times for get_insert_time()
>>> + * 2 times for get_insert_time()
>>> + */
>>> + nodes = vzalloc(array_size(insert_size * 4, sizeof(*nodes)));
>>> + if (!nodes)
>>> + return -ENOMEM;
>>> +
>>> + /* For BOTTOMUP and TOPDOWN, we first fragment the
>>> + * address space using prepare_igt_frag() and then try to verify
>>> + * that that insertions scale quadratically from 10k to 20k
>>> insertions
>>> + */
>>> + drm_mm_init(&mm, 1, U64_MAX - 2);
>>> + for (mode = insert_modes; mode->name; mode++) {
>>> + u64 insert_time1, insert_time2;
>>> +
>>> + if (mode->mode != DRM_MM_INSERT_LOW ||
>>> + mode->mode != DRM_MM_INSERT_HIGH)
>>> + continue;
>>
>> This check here is wrong, that needs to be && instead of || or the
>> test wouldn't execute at all.
>
>
> I didn't bother to check dmesg after adding that "simple" check and
> the test ran fine. :/
Yeah, after that the test seems to work. But there are is another issues.
We only cut of the right or the left branch of the tree and that still
makes the implementation rather inefficient.
In other words we first go down leftmost or rightmost even if we know
that this way is no valuable candidate and then back off again towards
the top.
Going to look into this, but your patches already improves insertion
time by a factor of nearly 30 in a fragmented address space. That is
rather nice.
Regards,
Christian.
>
> Sending again.
>
> Nirmoy
>
>
>>
>> Christian.
>>
>>> +
>>> + ret = prepare_igt_frag(&mm, nodes, insert_size, mode);
>>> + if (!ret)
>>> + goto err;
>>> +
>>> + insert_time1 = get_insert_time(&mm, insert_size,
>>> + nodes + insert_size, mode);
>>> + if (insert_time1 < 0)
>>> + goto err;
>>> +
>>> + insert_time2 = get_insert_time(&mm, (insert_size * 2),
>>> + nodes + insert_size * 2, mode);
>>> + if (insert_time2 < 0)
>>> + goto err;
>>> +
>>> + pr_info("%s fragmented insert of %u and %u insertions took
>>> %llu and %llu nsecs\n",
>>> + mode->name, insert_size, insert_size * 2,
>>> + insert_time1, insert_time2);
>>> +
>>> + if (insert_time2 > (scale_factor * insert_time1)) {
>>> + pr_err("%s fragmented insert took %llu nsecs more\n",
>>> + mode->name,
>>> + insert_time2 - (scale_factor * insert_time1));
>>> + goto err;
>>> + }
>>> +
>>> + drm_mm_for_each_node_safe(node, next, &mm)
>>> + drm_mm_remove_node(node);
>>> + }
>>> +
>>> + ret = 0;
>>> +err:
>>> + drm_mm_for_each_node_safe(node, next, &mm)
>>> + drm_mm_remove_node(node);
>>> + drm_mm_takedown(&mm);
>>> + vfree(nodes);
>>> +
>>> + return ret;
>>> +}
>>> +
>>> static int igt_align(void *ignored)
>>> {
>>> const struct insert_mode *mode;
>>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Intel-gfx] [PATCH v2 1/1] drm/mm: add ig_frag selftest
@ 2020-06-05 8:39 ` Christian König
0 siblings, 0 replies; 16+ messages in thread
From: Christian König @ 2020-06-05 8:39 UTC (permalink / raw)
To: Nirmoy, dri-devel; +Cc: intel-gfx, chris
Am 05.06.20 um 10:18 schrieb Nirmoy:
>
> On 6/5/20 9:45 AM, Christian König wrote:
>> Am 03.06.20 um 12:32 schrieb Nirmoy Das:
>>> This patch introduces fragmentation in the address range
>>> and measures time taken by 10k and 20k insertions. ig_frag()
>>> will fail if the time taken by 20k insertions takes more than
>>> 4 times of 10k insertions as we know that insertions should at
>>> most scale quadratically.
>>>
>>> v2:
>>> introduce fragmentation by freeing every other node.
>>> only test bottom-up and top-down for now.
>>>
>>> Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
>>> ---
>>> drivers/gpu/drm/selftests/drm_mm_selftests.h | 1 +
>>> drivers/gpu/drm/selftests/test-drm_mm.c | 124
>>> +++++++++++++++++++
>>> 2 files changed, 125 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/selftests/drm_mm_selftests.h
>>> b/drivers/gpu/drm/selftests/drm_mm_selftests.h
>>> index 6b943ea1c57d..8c87c964176b 100644
>>> --- a/drivers/gpu/drm/selftests/drm_mm_selftests.h
>>> +++ b/drivers/gpu/drm/selftests/drm_mm_selftests.h
>>> @@ -14,6 +14,7 @@ selftest(insert, igt_insert)
>>> selftest(replace, igt_replace)
>>> selftest(insert_range, igt_insert_range)
>>> selftest(align, igt_align)
>>> +selftest(frag, igt_frag)
>>> selftest(align32, igt_align32)
>>> selftest(align64, igt_align64)
>>> selftest(evict, igt_evict)
>>> diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c
>>> b/drivers/gpu/drm/selftests/test-drm_mm.c
>>> index 9aabe82dcd3a..34231baacd87 100644
>>> --- a/drivers/gpu/drm/selftests/test-drm_mm.c
>>> +++ b/drivers/gpu/drm/selftests/test-drm_mm.c
>>> @@ -10,6 +10,7 @@
>>> #include <linux/slab.h>
>>> #include <linux/random.h>
>>> #include <linux/vmalloc.h>
>>> +#include <linux/ktime.h>
>>> #include <drm/drm_mm.h>
>>> @@ -1033,6 +1034,129 @@ static int igt_insert_range(void *ignored)
>>> return 0;
>>> }
>>> +static int prepare_igt_frag(struct drm_mm *mm,
>>> + struct drm_mm_node *nodes,
>>> + unsigned int num_insert,
>>> + const struct insert_mode *mode)
>>> +{
>>> + unsigned int size = 4096;
>>> + unsigned int i;
>>> + u64 ret = -EINVAL;
>>> +
>>> + for (i = 0; i < num_insert; i++) {
>>> + if (!expect_insert(mm, &nodes[i], size, 0, i,
>>> + mode) != 0) {
>>> + pr_err("%s insert failed\n", mode->name);
>>> + goto out;
>>> + }
>>> + }
>>> +
>>> + /* introduce fragmentation by freeing every other node */
>>> + for (i = 0; i < num_insert; i++) {
>>> + if (i % 2 == 0)
>>> + drm_mm_remove_node(&nodes[i]);
>>> + }
>>> +
>>> +out:
>>> + return ret;
>>> +
>>> +}
>>> +
>>> +static u64 get_insert_time(struct drm_mm *mm,
>>> + unsigned int num_insert,
>>> + struct drm_mm_node *nodes,
>>> + const struct insert_mode *mode)
>>> +{
>>> + unsigned int size = 8192;
>>> + ktime_t start;
>>> + unsigned int i;
>>> + u64 ret = -EINVAL;
>>> +
>>> + start = ktime_get();
>>> + for (i = 0; i < num_insert; i++) {
>>> + if (!expect_insert(mm, &nodes[i], size, 0, i, mode) != 0) {
>>> + pr_err("%s insert failed\n", mode->name);
>>> + goto out;
>>> + }
>>> + }
>>> +
>>> + ret = ktime_to_ns(ktime_sub(ktime_get(), start));
>>> +
>>> +out:
>>> + return ret;
>>> +
>>> +}
>>> +
>>> +static int igt_frag(void *ignored)
>>> +{
>>> + struct drm_mm mm;
>>> + const struct insert_mode *mode;
>>> + struct drm_mm_node *nodes, *node, *next;
>>> + unsigned int insert_size = 10000;
>>> + unsigned int scale_factor = 4;
>>> + int ret = -EINVAL;
>>> +
>>> + /* We need 4 * insert_size nodes to hold intermediate allocated
>>> + * drm_mm nodes.
>>> + * 1 times for prepare_igt_frag()
>>> + * 1 times for get_insert_time()
>>> + * 2 times for get_insert_time()
>>> + */
>>> + nodes = vzalloc(array_size(insert_size * 4, sizeof(*nodes)));
>>> + if (!nodes)
>>> + return -ENOMEM;
>>> +
>>> + /* For BOTTOMUP and TOPDOWN, we first fragment the
>>> + * address space using prepare_igt_frag() and then try to verify
>>> + * that that insertions scale quadratically from 10k to 20k
>>> insertions
>>> + */
>>> + drm_mm_init(&mm, 1, U64_MAX - 2);
>>> + for (mode = insert_modes; mode->name; mode++) {
>>> + u64 insert_time1, insert_time2;
>>> +
>>> + if (mode->mode != DRM_MM_INSERT_LOW ||
>>> + mode->mode != DRM_MM_INSERT_HIGH)
>>> + continue;
>>
>> This check here is wrong, that needs to be && instead of || or the
>> test wouldn't execute at all.
>
>
> I didn't bother to check dmesg after adding that "simple" check and
> the test ran fine. :/
Yeah, after that the test seems to work. But there are is another issues.
We only cut of the right or the left branch of the tree and that still
makes the implementation rather inefficient.
In other words we first go down leftmost or rightmost even if we know
that this way is no valuable candidate and then back off again towards
the top.
Going to look into this, but your patches already improves insertion
time by a factor of nearly 30 in a fragmented address space. That is
rather nice.
Regards,
Christian.
>
> Sending again.
>
> Nirmoy
>
>
>>
>> Christian.
>>
>>> +
>>> + ret = prepare_igt_frag(&mm, nodes, insert_size, mode);
>>> + if (!ret)
>>> + goto err;
>>> +
>>> + insert_time1 = get_insert_time(&mm, insert_size,
>>> + nodes + insert_size, mode);
>>> + if (insert_time1 < 0)
>>> + goto err;
>>> +
>>> + insert_time2 = get_insert_time(&mm, (insert_size * 2),
>>> + nodes + insert_size * 2, mode);
>>> + if (insert_time2 < 0)
>>> + goto err;
>>> +
>>> + pr_info("%s fragmented insert of %u and %u insertions took
>>> %llu and %llu nsecs\n",
>>> + mode->name, insert_size, insert_size * 2,
>>> + insert_time1, insert_time2);
>>> +
>>> + if (insert_time2 > (scale_factor * insert_time1)) {
>>> + pr_err("%s fragmented insert took %llu nsecs more\n",
>>> + mode->name,
>>> + insert_time2 - (scale_factor * insert_time1));
>>> + goto err;
>>> + }
>>> +
>>> + drm_mm_for_each_node_safe(node, next, &mm)
>>> + drm_mm_remove_node(node);
>>> + }
>>> +
>>> + ret = 0;
>>> +err:
>>> + drm_mm_for_each_node_safe(node, next, &mm)
>>> + drm_mm_remove_node(node);
>>> + drm_mm_takedown(&mm);
>>> + vfree(nodes);
>>> +
>>> + return ret;
>>> +}
>>> +
>>> static int igt_align(void *ignored)
>>> {
>>> const struct insert_mode *mode;
>>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v3 1/1] drm/mm: add ig_frag selftest
2020-06-05 7:45 ` [Intel-gfx] " Christian König
@ 2020-06-05 9:14 ` Nirmoy Das
-1 siblings, 0 replies; 16+ messages in thread
From: Nirmoy Das @ 2020-06-05 9:14 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx, Nirmoy Das, christian.koenig, chris
This patch introduces fragmentation in the address range
and measures time taken by 10k and 20k insertions. ig_frag()
will fail if the time taken by 20k insertions takes more than
4 times of 10k insertions as we know that insertions should at
most scale quadratically.
v2:
introduce fragmentation by freeing every other node.
only test bottom-up and top-down for now.
v3:
fix incorrect mode check
Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
---
drivers/gpu/drm/selftests/drm_mm_selftests.h | 1 +
drivers/gpu/drm/selftests/test-drm_mm.c | 124 +++++++++++++++++++
2 files changed, 125 insertions(+)
diff --git a/drivers/gpu/drm/selftests/drm_mm_selftests.h b/drivers/gpu/drm/selftests/drm_mm_selftests.h
index 6b943ea1c57d..8c87c964176b 100644
--- a/drivers/gpu/drm/selftests/drm_mm_selftests.h
+++ b/drivers/gpu/drm/selftests/drm_mm_selftests.h
@@ -14,6 +14,7 @@ selftest(insert, igt_insert)
selftest(replace, igt_replace)
selftest(insert_range, igt_insert_range)
selftest(align, igt_align)
+selftest(frag, igt_frag)
selftest(align32, igt_align32)
selftest(align64, igt_align64)
selftest(evict, igt_evict)
diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c b/drivers/gpu/drm/selftests/test-drm_mm.c
index 9aabe82dcd3a..ca5f35def905 100644
--- a/drivers/gpu/drm/selftests/test-drm_mm.c
+++ b/drivers/gpu/drm/selftests/test-drm_mm.c
@@ -10,6 +10,7 @@
#include <linux/slab.h>
#include <linux/random.h>
#include <linux/vmalloc.h>
+#include <linux/ktime.h>
#include <drm/drm_mm.h>
@@ -1033,6 +1034,129 @@ static int igt_insert_range(void *ignored)
return 0;
}
+static int prepare_igt_frag(struct drm_mm *mm,
+ struct drm_mm_node *nodes,
+ unsigned int num_insert,
+ const struct insert_mode *mode)
+{
+ unsigned int size = 4096;
+ unsigned int i;
+ u64 ret = -EINVAL;
+
+ for (i = 0; i < num_insert; i++) {
+ if (!expect_insert(mm, &nodes[i], size, 0, i,
+ mode) != 0) {
+ pr_err("%s insert failed\n", mode->name);
+ goto out;
+ }
+ }
+
+ /* introduce fragmentation by freeing every other node */
+ for (i = 0; i < num_insert; i++) {
+ if (i % 2 == 0)
+ drm_mm_remove_node(&nodes[i]);
+ }
+
+out:
+ return ret;
+
+}
+
+static u64 get_insert_time(struct drm_mm *mm,
+ unsigned int num_insert,
+ struct drm_mm_node *nodes,
+ const struct insert_mode *mode)
+{
+ unsigned int size = 8192;
+ ktime_t start;
+ unsigned int i;
+ u64 ret = -EINVAL;
+
+ start = ktime_get();
+ for (i = 0; i < num_insert; i++) {
+ if (!expect_insert(mm, &nodes[i], size, 0, i, mode) != 0) {
+ pr_err("%s insert failed\n", mode->name);
+ goto out;
+ }
+ }
+
+ ret = ktime_to_ns(ktime_sub(ktime_get(), start));
+
+out:
+ return ret;
+
+}
+
+static int igt_frag(void *ignored)
+{
+ struct drm_mm mm;
+ const struct insert_mode *mode;
+ struct drm_mm_node *nodes, *node, *next;
+ unsigned int insert_size = 10000;
+ unsigned int scale_factor = 4;
+ int ret = -EINVAL;
+
+ /* We need 4 * insert_size nodes to hold intermediate allocated
+ * drm_mm nodes.
+ * 1 times for prepare_igt_frag()
+ * 1 times for get_insert_time()
+ * 2 times for get_insert_time()
+ */
+ nodes = vzalloc(array_size(insert_size * 4, sizeof(*nodes)));
+ if (!nodes)
+ return -ENOMEM;
+
+ /* For BOTTOMUP and TOPDOWN, we first fragment the
+ * address space using prepare_igt_frag() and then try to verify
+ * that that insertions scale quadratically from 10k to 20k insertions
+ */
+ drm_mm_init(&mm, 1, U64_MAX - 2);
+ for (mode = insert_modes; mode->name; mode++) {
+ u64 insert_time1, insert_time2;
+
+ if (mode->mode != DRM_MM_INSERT_LOW &&
+ mode->mode != DRM_MM_INSERT_HIGH)
+ continue;
+
+ ret = prepare_igt_frag(&mm, nodes, insert_size, mode);
+ if (!ret)
+ goto err;
+
+ insert_time1 = get_insert_time(&mm, insert_size,
+ nodes + insert_size, mode);
+ if (insert_time1 < 0)
+ goto err;
+
+ insert_time2 = get_insert_time(&mm, (insert_size * 2),
+ nodes + insert_size * 2, mode);
+ if (insert_time2 < 0)
+ goto err;
+
+ pr_info("%s fragmented insert of %u and %u insertions took %llu and %llu nsecs\n",
+ mode->name, insert_size, insert_size * 2,
+ insert_time1, insert_time2);
+
+ if (insert_time2 > (scale_factor * insert_time1)) {
+ pr_err("%s fragmented insert took %llu nsecs more\n",
+ mode->name,
+ insert_time2 - (scale_factor * insert_time1));
+ goto err;
+ }
+
+ drm_mm_for_each_node_safe(node, next, &mm)
+ drm_mm_remove_node(node);
+ }
+
+ ret = 0;
+err:
+ drm_mm_for_each_node_safe(node, next, &mm)
+ drm_mm_remove_node(node);
+ drm_mm_takedown(&mm);
+ vfree(nodes);
+
+ return ret;
+}
+
static int igt_align(void *ignored)
{
const struct insert_mode *mode;
--
2.26.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Intel-gfx] [PATCH v3 1/1] drm/mm: add ig_frag selftest
@ 2020-06-05 9:14 ` Nirmoy Das
0 siblings, 0 replies; 16+ messages in thread
From: Nirmoy Das @ 2020-06-05 9:14 UTC (permalink / raw)
To: dri-devel; +Cc: intel-gfx, Nirmoy Das, christian.koenig, chris
This patch introduces fragmentation in the address range
and measures time taken by 10k and 20k insertions. ig_frag()
will fail if the time taken by 20k insertions takes more than
4 times of 10k insertions as we know that insertions should at
most scale quadratically.
v2:
introduce fragmentation by freeing every other node.
only test bottom-up and top-down for now.
v3:
fix incorrect mode check
Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
---
drivers/gpu/drm/selftests/drm_mm_selftests.h | 1 +
drivers/gpu/drm/selftests/test-drm_mm.c | 124 +++++++++++++++++++
2 files changed, 125 insertions(+)
diff --git a/drivers/gpu/drm/selftests/drm_mm_selftests.h b/drivers/gpu/drm/selftests/drm_mm_selftests.h
index 6b943ea1c57d..8c87c964176b 100644
--- a/drivers/gpu/drm/selftests/drm_mm_selftests.h
+++ b/drivers/gpu/drm/selftests/drm_mm_selftests.h
@@ -14,6 +14,7 @@ selftest(insert, igt_insert)
selftest(replace, igt_replace)
selftest(insert_range, igt_insert_range)
selftest(align, igt_align)
+selftest(frag, igt_frag)
selftest(align32, igt_align32)
selftest(align64, igt_align64)
selftest(evict, igt_evict)
diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c b/drivers/gpu/drm/selftests/test-drm_mm.c
index 9aabe82dcd3a..ca5f35def905 100644
--- a/drivers/gpu/drm/selftests/test-drm_mm.c
+++ b/drivers/gpu/drm/selftests/test-drm_mm.c
@@ -10,6 +10,7 @@
#include <linux/slab.h>
#include <linux/random.h>
#include <linux/vmalloc.h>
+#include <linux/ktime.h>
#include <drm/drm_mm.h>
@@ -1033,6 +1034,129 @@ static int igt_insert_range(void *ignored)
return 0;
}
+static int prepare_igt_frag(struct drm_mm *mm,
+ struct drm_mm_node *nodes,
+ unsigned int num_insert,
+ const struct insert_mode *mode)
+{
+ unsigned int size = 4096;
+ unsigned int i;
+ u64 ret = -EINVAL;
+
+ for (i = 0; i < num_insert; i++) {
+ if (!expect_insert(mm, &nodes[i], size, 0, i,
+ mode) != 0) {
+ pr_err("%s insert failed\n", mode->name);
+ goto out;
+ }
+ }
+
+ /* introduce fragmentation by freeing every other node */
+ for (i = 0; i < num_insert; i++) {
+ if (i % 2 == 0)
+ drm_mm_remove_node(&nodes[i]);
+ }
+
+out:
+ return ret;
+
+}
+
+static u64 get_insert_time(struct drm_mm *mm,
+ unsigned int num_insert,
+ struct drm_mm_node *nodes,
+ const struct insert_mode *mode)
+{
+ unsigned int size = 8192;
+ ktime_t start;
+ unsigned int i;
+ u64 ret = -EINVAL;
+
+ start = ktime_get();
+ for (i = 0; i < num_insert; i++) {
+ if (!expect_insert(mm, &nodes[i], size, 0, i, mode) != 0) {
+ pr_err("%s insert failed\n", mode->name);
+ goto out;
+ }
+ }
+
+ ret = ktime_to_ns(ktime_sub(ktime_get(), start));
+
+out:
+ return ret;
+
+}
+
+static int igt_frag(void *ignored)
+{
+ struct drm_mm mm;
+ const struct insert_mode *mode;
+ struct drm_mm_node *nodes, *node, *next;
+ unsigned int insert_size = 10000;
+ unsigned int scale_factor = 4;
+ int ret = -EINVAL;
+
+ /* We need 4 * insert_size nodes to hold intermediate allocated
+ * drm_mm nodes.
+ * 1 times for prepare_igt_frag()
+ * 1 times for get_insert_time()
+ * 2 times for get_insert_time()
+ */
+ nodes = vzalloc(array_size(insert_size * 4, sizeof(*nodes)));
+ if (!nodes)
+ return -ENOMEM;
+
+ /* For BOTTOMUP and TOPDOWN, we first fragment the
+ * address space using prepare_igt_frag() and then try to verify
+ * that that insertions scale quadratically from 10k to 20k insertions
+ */
+ drm_mm_init(&mm, 1, U64_MAX - 2);
+ for (mode = insert_modes; mode->name; mode++) {
+ u64 insert_time1, insert_time2;
+
+ if (mode->mode != DRM_MM_INSERT_LOW &&
+ mode->mode != DRM_MM_INSERT_HIGH)
+ continue;
+
+ ret = prepare_igt_frag(&mm, nodes, insert_size, mode);
+ if (!ret)
+ goto err;
+
+ insert_time1 = get_insert_time(&mm, insert_size,
+ nodes + insert_size, mode);
+ if (insert_time1 < 0)
+ goto err;
+
+ insert_time2 = get_insert_time(&mm, (insert_size * 2),
+ nodes + insert_size * 2, mode);
+ if (insert_time2 < 0)
+ goto err;
+
+ pr_info("%s fragmented insert of %u and %u insertions took %llu and %llu nsecs\n",
+ mode->name, insert_size, insert_size * 2,
+ insert_time1, insert_time2);
+
+ if (insert_time2 > (scale_factor * insert_time1)) {
+ pr_err("%s fragmented insert took %llu nsecs more\n",
+ mode->name,
+ insert_time2 - (scale_factor * insert_time1));
+ goto err;
+ }
+
+ drm_mm_for_each_node_safe(node, next, &mm)
+ drm_mm_remove_node(node);
+ }
+
+ ret = 0;
+err:
+ drm_mm_for_each_node_safe(node, next, &mm)
+ drm_mm_remove_node(node);
+ drm_mm_takedown(&mm);
+ vfree(nodes);
+
+ return ret;
+}
+
static int igt_align(void *ignored)
{
const struct insert_mode *mode;
--
2.26.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,1/1] drm/mm: add ig_frag selftest (rev2)
2020-06-03 10:32 ` [Intel-gfx] " Nirmoy Das
` (4 preceding siblings ...)
(?)
@ 2020-06-05 19:25 ` Patchwork
-1 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2020-06-05 19:25 UTC (permalink / raw)
To: Nirmoy Das; +Cc: intel-gfx
== Series Details ==
Series: series starting with [v3,1/1] drm/mm: add ig_frag selftest (rev2)
URL : https://patchwork.freedesktop.org/series/77964/
State : warning
== Summary ==
$ dim checkpatch origin/drm-tip
375207a3bd0b drm/mm: add ig_frag selftest
-:75: CHECK:BRACES: Blank lines aren't necessary before a close brace '}'
#75: FILE: drivers/gpu/drm/selftests/test-drm_mm.c:1063:
+
+}
-:100: CHECK:BRACES: Blank lines aren't necessary before a close brace '}'
#100: FILE: drivers/gpu/drm/selftests/test-drm_mm.c:1088:
+
+}
-:174: WARNING:NO_AUTHOR_SIGN_OFF: Missing Signed-off-by: line by nominal patch author 'Nirmoy Das <nirmoy.aiemd@gmail.com>'
total: 0 errors, 1 warnings, 2 checks, 143 lines checked
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [v3,1/1] drm/mm: add ig_frag selftest (rev2)
2020-06-03 10:32 ` [Intel-gfx] " Nirmoy Das
` (5 preceding siblings ...)
(?)
@ 2020-06-05 19:47 ` Patchwork
-1 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2020-06-05 19:47 UTC (permalink / raw)
To: Nirmoy Das; +Cc: intel-gfx
== Series Details ==
Series: series starting with [v3,1/1] drm/mm: add ig_frag selftest (rev2)
URL : https://patchwork.freedesktop.org/series/77964/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_8593 -> Patchwork_17893
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/index.html
Known issues
------------
Here are the changes found in Patchwork_17893 that come from known issues:
### IGT changes ###
#### Possible fixes ####
* igt@i915_module_load@reload:
- fi-byt-n2820: [DMESG-WARN][1] ([i915#1982]) -> [PASS][2] +1 similar issue
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/fi-byt-n2820/igt@i915_module_load@reload.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/fi-byt-n2820/igt@i915_module_load@reload.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- {fi-tgl-dsi}: [DMESG-WARN][3] ([i915#1982]) -> [PASS][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/fi-tgl-dsi/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/fi-tgl-dsi/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
* igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
- fi-icl-u2: [DMESG-WARN][5] ([i915#1982]) -> [PASS][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/fi-icl-u2/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/fi-icl-u2/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html
#### Warnings ####
* igt@debugfs_test@read_all_entries:
- fi-kbl-x1275: [DMESG-WARN][7] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][8] ([i915#62] / [i915#92]) +2 similar issues
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/fi-kbl-x1275/igt@debugfs_test@read_all_entries.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/fi-kbl-x1275/igt@debugfs_test@read_all_entries.html
* igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a:
- fi-kbl-x1275: [DMESG-WARN][9] ([i915#62] / [i915#92]) -> [DMESG-WARN][10] ([i915#62] / [i915#92] / [i915#95])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/fi-kbl-x1275/igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/fi-kbl-x1275/igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
[i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
[i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92
[i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
Participating hosts (50 -> 44)
------------------------------
Additional (1): fi-tgl-y
Missing (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper fi-bdw-samus
Build changes
-------------
* Linux: CI_DRM_8593 -> Patchwork_17893
CI-20190529: 20190529
CI_DRM_8593: 11c8af407947d7e9f56a99419f3867972d6c138d @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_5695: 53e8c878a6fb5708e63c99403691e8960b86ea9c @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_17893: 375207a3bd0bdff00c10ad2a0722ac5fe9f1bca4 @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
375207a3bd0b drm/mm: add ig_frag selftest
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [v3,1/1] drm/mm: add ig_frag selftest (rev2)
2020-06-03 10:32 ` [Intel-gfx] " Nirmoy Das
` (6 preceding siblings ...)
(?)
@ 2020-06-05 22:45 ` Patchwork
-1 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2020-06-05 22:45 UTC (permalink / raw)
To: Nirmoy Das; +Cc: intel-gfx
== Series Details ==
Series: series starting with [v3,1/1] drm/mm: add ig_frag selftest (rev2)
URL : https://patchwork.freedesktop.org/series/77964/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_8593_full -> Patchwork_17893_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
New tests
---------
New tests have been introduced between CI_DRM_8593_full and Patchwork_17893_full:
### New IGT tests (1) ###
* igt@drm_mm@all@frag:
- Statuses : 8 pass(s)
- Exec time: [0.19, 2.19] s
Known issues
------------
Here are the changes found in Patchwork_17893_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_ctx_persistence@legacy-engines-mixed-process@render:
- shard-apl: [PASS][1] -> [FAIL][2] ([i915#1528])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-apl4/igt@gem_ctx_persistence@legacy-engines-mixed-process@render.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-apl1/igt@gem_ctx_persistence@legacy-engines-mixed-process@render.html
* igt@gem_exec_whisper@basic-contexts-forked:
- shard-glk: [PASS][3] -> [DMESG-WARN][4] ([i915#118] / [i915#95]) +1 similar issue
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-glk4/igt@gem_exec_whisper@basic-contexts-forked.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-glk8/igt@gem_exec_whisper@basic-contexts-forked.html
* igt@gem_set_tiling_vs_blt@tiled-to-untiled:
- shard-apl: [PASS][5] -> [DMESG-WARN][6] ([i915#95]) +18 similar issues
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-apl8/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-apl7/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
* igt@gen9_exec_parse@allowed-all:
- shard-kbl: [PASS][7] -> [DMESG-WARN][8] ([i915#1436] / [i915#716])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-kbl7/igt@gen9_exec_parse@allowed-all.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-kbl1/igt@gen9_exec_parse@allowed-all.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-0:
- shard-glk: [PASS][9] -> [DMESG-WARN][10] ([i915#1982])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-glk2/igt@kms_big_fb@x-tiled-16bpp-rotate-0.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-glk8/igt@kms_big_fb@x-tiled-16bpp-rotate-0.html
* igt@kms_big_fb@x-tiled-8bpp-rotate-0:
- shard-apl: [PASS][11] -> [DMESG-WARN][12] ([i915#1982])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-apl1/igt@kms_big_fb@x-tiled-8bpp-rotate-0.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-apl1/igt@kms_big_fb@x-tiled-8bpp-rotate-0.html
* igt@kms_color@pipe-d-ctm-0-5:
- shard-tglb: [PASS][13] -> [DMESG-WARN][14] ([i915#1149] / [i915#402])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-tglb5/igt@kms_color@pipe-d-ctm-0-5.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-tglb3/igt@kms_color@pipe-d-ctm-0-5.html
* igt@kms_cursor_crc@pipe-a-cursor-256x85-sliding:
- shard-skl: [PASS][15] -> [FAIL][16] ([i915#54])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-skl4/igt@kms_cursor_crc@pipe-a-cursor-256x85-sliding.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-skl1/igt@kms_cursor_crc@pipe-a-cursor-256x85-sliding.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- shard-skl: [PASS][17] -> [DMESG-WARN][18] ([i915#1982]) +9 similar issues
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-skl2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-skl10/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu:
- shard-skl: [PASS][19] -> [FAIL][20] ([i915#49])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-skl6/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-skl6/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu.html
* igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- shard-iclb: [PASS][21] -> [INCOMPLETE][22] ([CI#80] / [i915#1185])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-iclb1/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-iclb3/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b.html
* igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes:
- shard-apl: [PASS][23] -> [DMESG-WARN][24] ([i915#180]) +1 similar issue
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-apl2/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-apl4/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html
* igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
- shard-skl: [PASS][25] -> [FAIL][26] ([fdo#108145] / [i915#265])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-skl6/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-skl6/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html
* igt@kms_psr@psr2_primary_mmap_cpu:
- shard-iclb: [PASS][27] -> [SKIP][28] ([fdo#109441]) +2 similar issues
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-iclb2/igt@kms_psr@psr2_primary_mmap_cpu.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-iclb1/igt@kms_psr@psr2_primary_mmap_cpu.html
* igt@kms_universal_plane@universal-plane-gen9-features-pipe-a:
- shard-kbl: [PASS][29] -> [DMESG-WARN][30] ([i915#93] / [i915#95]) +1 similar issue
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-kbl4/igt@kms_universal_plane@universal-plane-gen9-features-pipe-a.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-kbl3/igt@kms_universal_plane@universal-plane-gen9-features-pipe-a.html
* igt@kms_vblank@pipe-b-ts-continuation-suspend:
- shard-skl: [PASS][31] -> [INCOMPLETE][32] ([i915#69])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-skl7/igt@kms_vblank@pipe-b-ts-continuation-suspend.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-skl4/igt@kms_vblank@pipe-b-ts-continuation-suspend.html
* igt@syncobj_wait@invalid-multi-wait-unsubmitted-submitted:
- shard-tglb: [PASS][33] -> [DMESG-WARN][34] ([i915#402])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-tglb5/igt@syncobj_wait@invalid-multi-wait-unsubmitted-submitted.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-tglb7/igt@syncobj_wait@invalid-multi-wait-unsubmitted-submitted.html
#### Possible fixes ####
* {igt@gem_ctx_isolation@preservation-s3@vcs0}:
- shard-kbl: [DMESG-WARN][35] ([i915#180]) -> [PASS][36] +3 similar issues
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-kbl2/igt@gem_ctx_isolation@preservation-s3@vcs0.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-kbl4/igt@gem_ctx_isolation@preservation-s3@vcs0.html
* igt@gem_ctx_param@basic:
- shard-apl: [DMESG-WARN][37] ([i915#95]) -> [PASS][38] +22 similar issues
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-apl4/igt@gem_ctx_param@basic.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-apl3/igt@gem_ctx_param@basic.html
* {igt@gem_exec_schedule@implicit-write-read@rcs0}:
- shard-snb: [INCOMPLETE][39] ([i915#82]) -> [PASS][40]
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-snb1/igt@gem_exec_schedule@implicit-write-read@rcs0.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-snb1/igt@gem_exec_schedule@implicit-write-read@rcs0.html
* igt@gem_exec_whisper@basic-queues-forked-all:
- shard-glk: [DMESG-WARN][41] ([i915#118] / [i915#95]) -> [PASS][42]
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-glk1/igt@gem_exec_whisper@basic-queues-forked-all.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-glk6/igt@gem_exec_whisper@basic-queues-forked-all.html
* igt@kms_big_fb@y-tiled-64bpp-rotate-0:
- shard-glk: [DMESG-FAIL][43] ([i915#118] / [i915#95]) -> [PASS][44]
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-glk8/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-glk4/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html
* igt@kms_color@pipe-c-ctm-red-to-blue:
- shard-kbl: [DMESG-WARN][45] ([i915#93] / [i915#95]) -> [PASS][46]
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-kbl2/igt@kms_color@pipe-c-ctm-red-to-blue.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-kbl4/igt@kms_color@pipe-c-ctm-red-to-blue.html
* igt@kms_cursor_crc@pipe-a-cursor-64x21-offscreen:
- shard-skl: [FAIL][47] ([i915#54]) -> [PASS][48]
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-skl7/igt@kms_cursor_crc@pipe-a-cursor-64x21-offscreen.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-skl3/igt@kms_cursor_crc@pipe-a-cursor-64x21-offscreen.html
* igt@kms_cursor_legacy@cursor-vs-flip-atomic:
- shard-hsw: [FAIL][49] ([i915#57]) -> [PASS][50]
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-hsw8/igt@kms_cursor_legacy@cursor-vs-flip-atomic.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-hsw2/igt@kms_cursor_legacy@cursor-vs-flip-atomic.html
* igt@kms_cursor_legacy@short-flip-after-cursor-atomic-transitions-varying-size:
- shard-apl: [DMESG-WARN][51] ([i915#1982]) -> [PASS][52]
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-apl7/igt@kms_cursor_legacy@short-flip-after-cursor-atomic-transitions-varying-size.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-apl8/igt@kms_cursor_legacy@short-flip-after-cursor-atomic-transitions-varying-size.html
* igt@kms_draw_crc@draw-method-rgb565-mmap-gtt-xtiled:
- shard-snb: [TIMEOUT][53] -> [PASS][54]
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-snb4/igt@kms_draw_crc@draw-method-rgb565-mmap-gtt-xtiled.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-snb6/igt@kms_draw_crc@draw-method-rgb565-mmap-gtt-xtiled.html
* {igt@kms_flip@plain-flip-fb-recreate-interruptible@c-edp1}:
- shard-skl: [FAIL][55] ([i915#1928]) -> [PASS][56]
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-skl7/igt@kms_flip@plain-flip-fb-recreate-interruptible@c-edp1.html
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-skl3/igt@kms_flip@plain-flip-fb-recreate-interruptible@c-edp1.html
* igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw:
- shard-skl: [FAIL][57] ([i915#49]) -> [PASS][58]
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-skl7/igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-skl3/igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw.html
* igt@kms_hdr@bpc-switch-suspend:
- shard-skl: [FAIL][59] ([i915#1188]) -> [PASS][60]
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-skl9/igt@kms_hdr@bpc-switch-suspend.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-skl2/igt@kms_hdr@bpc-switch-suspend.html
* igt@kms_plane@plane-panning-bottom-right-pipe-c-planes:
- shard-skl: [DMESG-WARN][61] ([i915#1982]) -> [PASS][62] +6 similar issues
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-skl4/igt@kms_plane@plane-panning-bottom-right-pipe-c-planes.html
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-skl1/igt@kms_plane@plane-panning-bottom-right-pipe-c-planes.html
* igt@kms_plane_alpha_blend@pipe-b-coverage-7efc:
- shard-skl: [DMESG-FAIL][63] ([fdo#108145] / [i915#1982]) -> [PASS][64]
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-skl9/igt@kms_plane_alpha_blend@pipe-b-coverage-7efc.html
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-skl2/igt@kms_plane_alpha_blend@pipe-b-coverage-7efc.html
* igt@kms_psr@psr2_suspend:
- shard-iclb: [SKIP][65] ([fdo#109441]) -> [PASS][66] +2 similar issues
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-iclb8/igt@kms_psr@psr2_suspend.html
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-iclb2/igt@kms_psr@psr2_suspend.html
#### Warnings ####
* igt@i915_pm_dc@dc3co-vpb-simulation:
- shard-snb: [INCOMPLETE][67] ([i915#82]) -> [SKIP][68] ([fdo#109271])
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-snb2/igt@i915_pm_dc@dc3co-vpb-simulation.html
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-snb6/igt@i915_pm_dc@dc3co-vpb-simulation.html
- shard-iclb: [SKIP][69] ([i915#588]) -> [SKIP][70] ([i915#658])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-iclb2/igt@i915_pm_dc@dc3co-vpb-simulation.html
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-iclb1/igt@i915_pm_dc@dc3co-vpb-simulation.html
* igt@i915_pm_dc@dc6-psr:
- shard-tglb: [SKIP][71] ([i915#468]) -> [FAIL][72] ([i915#454])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-tglb2/igt@i915_pm_dc@dc6-psr.html
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-tglb6/igt@i915_pm_dc@dc6-psr.html
* igt@kms_color_chamelium@pipe-c-ctm-limited-range:
- shard-snb: [INCOMPLETE][73] ([CI#80] / [i915#82]) -> [SKIP][74] ([fdo#109271] / [fdo#111827])
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-snb4/igt@kms_color_chamelium@pipe-c-ctm-limited-range.html
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-snb6/igt@kms_color_chamelium@pipe-c-ctm-limited-range.html
* igt@kms_content_protection@legacy:
- shard-apl: [TIMEOUT][75] ([i915#1319] / [i915#1635]) -> [FAIL][76] ([fdo#110321] / [fdo#110336])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-apl2/igt@kms_content_protection@legacy.html
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-apl4/igt@kms_content_protection@legacy.html
* igt@kms_content_protection@lic:
- shard-kbl: [DMESG-FAIL][77] ([fdo#110321] / [i915#95]) -> [TIMEOUT][78] ([i915#1319] / [i915#1958])
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-kbl2/igt@kms_content_protection@lic.html
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-kbl4/igt@kms_content_protection@lic.html
* igt@kms_content_protection@srm:
- shard-kbl: [TIMEOUT][79] ([i915#1319]) -> [TIMEOUT][80] ([i915#1319] / [i915#1958])
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-kbl7/igt@kms_content_protection@srm.html
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-kbl4/igt@kms_content_protection@srm.html
- shard-apl: [TIMEOUT][81] ([i915#1319] / [i915#1635]) -> [DMESG-FAIL][82] ([fdo#110321] / [i915#95])
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-apl3/igt@kms_content_protection@srm.html
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-apl8/igt@kms_content_protection@srm.html
* igt@kms_plane_scaling@pipe-b-scaler-with-clipping-clamping:
- shard-snb: [TIMEOUT][83] -> [SKIP][84] ([fdo#109271]) +2 similar issues
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8593/shard-snb4/igt@kms_plane_scaling@pipe-b-scaler-with-clipping-clamping.html
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/shard-snb6/igt@kms_plane_scaling@pipe-b-scaler-with-clipping-clamping.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[CI#80]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/80
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#110321]: https://bugs.freedesktop.org/show_bug.cgi?id=110321
[fdo#110336]: https://bugs.freedesktop.org/show_bug.cgi?id=110336
[fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
[i915#1149]: https://gitlab.freedesktop.org/drm/intel/issues/1149
[i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
[i915#1185]: https://gitlab.freedesktop.org/drm/intel/issues/1185
[i915#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188
[i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319
[i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
[i915#1528]: https://gitlab.freedesktop.org/drm/intel/issues/1528
[i915#1542]: https://gitlab.freedesktop.org/drm/intel/issues/1542
[i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635
[i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
[i915#1928]: https://gitlab.freedesktop.org/drm/intel/issues/1928
[i915#1930]: https://gitlab.freedesktop.org/drm/intel/issues/1930
[i915#1958]: https://gitlab.freedesktop.org/drm/intel/issues/1958
[i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
[i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
[i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
[i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
[i915#468]: https://gitlab.freedesktop.org/drm/intel/issues/468
[i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49
[i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
[i915#57]: https://gitlab.freedesktop.org/drm/intel/issues/57
[i915#588]: https://gitlab.freedesktop.org/drm/intel/issues/588
[i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
[i915#69]: https://gitlab.freedesktop.org/drm/intel/issues/69
[i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
[i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82
[i915#93]: https://gitlab.freedesktop.org/drm/intel/issues/93
[i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95
Participating hosts (10 -> 11)
------------------------------
Additional (1): pig-icl-1065g7
Build changes
-------------
* Linux: CI_DRM_8593 -> Patchwork_17893
CI-20190529: 20190529
CI_DRM_8593: 11c8af407947d7e9f56a99419f3867972d6c138d @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_5695: 53e8c878a6fb5708e63c99403691e8960b86ea9c @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_17893: 375207a3bd0bdff00c10ad2a0722ac5fe9f1bca4 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17893/index.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2020-06-07 10:21 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-03 10:32 [PATCH v2 1/1] drm/mm: add ig_frag selftest Nirmoy Das
2020-06-03 10:32 ` [Intel-gfx] " Nirmoy Das
2020-06-03 18:07 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [v2,1/1] " Patchwork
2020-06-03 18:29 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-06-04 4:57 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2020-06-05 7:45 ` [PATCH v2 1/1] " Christian König
2020-06-05 7:45 ` [Intel-gfx] " Christian König
2020-06-05 8:18 ` Nirmoy
2020-06-05 8:18 ` [Intel-gfx] " Nirmoy
2020-06-05 8:39 ` Christian König
2020-06-05 8:39 ` [Intel-gfx] " Christian König
2020-06-05 9:14 ` [PATCH v3 " Nirmoy Das
2020-06-05 9:14 ` [Intel-gfx] " Nirmoy Das
2020-06-05 19:25 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,1/1] drm/mm: add ig_frag selftest (rev2) Patchwork
2020-06-05 19:47 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-06-05 22:45 ` [Intel-gfx] ✓ Fi.CI.IGT: " 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.