* [PATCH v2 1/2] drm/ttm: Move swapped objects off the manager's LRU list
2024-09-03 9:47 [PATCH v2 0/2] drm/ttm: Really use a separate LRU list for swapped- and pinned objects Thomas Hellström
@ 2024-09-03 9:47 ` Thomas Hellström
2024-09-03 9:47 ` [PATCH v2 2/2] drm/ttm: Move pinned objects off LRU lists when pinning Thomas Hellström
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Thomas Hellström @ 2024-09-03 9:47 UTC (permalink / raw)
To: intel-xe
Cc: Thomas Hellström, Christian König, Matthew Brost,
dri-devel
Resources of swapped objects remains on the TTM_PL_SYSTEM manager's
LRU list, which is bad for the LRU walk efficiency.
Rename the device-wide "pinned" list to "unevictable" and move
also resources of swapped-out objects to that list.
An alternative would be to create an "UNEVICTABLE" priority to
be able to keep the pinned- and swapped objects on their
respective manager's LRU without affecting the LRU walk efficiency.
v2:
- Remove a bogus WARN_ON (Christian König)
- Update ttm_resource_[add|del] bulk move (Christian König)
- Fix TTM KUNIT tests (Intel CI)
Cc: Christian König <christian.koenig@amd.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: <dri-devel@lists.freedesktop.org>
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
---
drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 2 +-
drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c | 2 +-
drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c | 4 +-
drivers/gpu/drm/ttm/tests/ttm_bo_test.c | 4 +-
drivers/gpu/drm/ttm/tests/ttm_resource_test.c | 6 +-
drivers/gpu/drm/ttm/ttm_bo.c | 60 ++++++++++++++++++-
drivers/gpu/drm/ttm/ttm_bo_util.c | 6 +-
drivers/gpu/drm/ttm/ttm_bo_vm.c | 2 +-
drivers/gpu/drm/ttm/ttm_device.c | 4 +-
drivers/gpu/drm/ttm/ttm_resource.c | 15 +++--
drivers/gpu/drm/ttm/ttm_tt.c | 2 +
drivers/gpu/drm/xe/xe_bo.c | 4 +-
include/drm/ttm/ttm_bo.h | 2 +
include/drm/ttm/ttm_device.h | 5 +-
include/drm/ttm/ttm_tt.h | 5 ++
15 files changed, 96 insertions(+), 27 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
index 5c72462d1f57..7de284766f82 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
@@ -808,7 +808,7 @@ static int __i915_ttm_get_pages(struct drm_i915_gem_object *obj,
}
if (bo->ttm && !ttm_tt_is_populated(bo->ttm)) {
- ret = ttm_tt_populate(bo->bdev, bo->ttm, &ctx);
+ ret = ttm_bo_populate(bo, &ctx);
if (ret)
return ret;
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c
index 03b00a03a634..041dab543b78 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c
@@ -624,7 +624,7 @@ int i915_ttm_move(struct ttm_buffer_object *bo, bool evict,
/* Populate ttm with pages if needed. Typically system memory. */
if (ttm && (dst_man->use_tt || (ttm->page_flags & TTM_TT_FLAG_SWAPPED))) {
- ret = ttm_tt_populate(bo->bdev, ttm, ctx);
+ ret = ttm_bo_populate(bo, ctx);
if (ret)
return ret;
}
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c
index ad649523d5e0..61596cecce4d 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.c
@@ -90,7 +90,7 @@ static int i915_ttm_backup(struct i915_gem_apply_to_region *apply,
goto out_no_lock;
backup_bo = i915_gem_to_ttm(backup);
- err = ttm_tt_populate(backup_bo->bdev, backup_bo->ttm, &ctx);
+ err = ttm_bo_populate(backup_bo, &ctx);
if (err)
goto out_no_populate;
@@ -189,7 +189,7 @@ static int i915_ttm_restore(struct i915_gem_apply_to_region *apply,
if (!backup_bo->resource)
err = ttm_bo_validate(backup_bo, i915_ttm_sys_placement(), &ctx);
if (!err)
- err = ttm_tt_populate(backup_bo->bdev, backup_bo->ttm, &ctx);
+ err = ttm_bo_populate(backup_bo, &ctx);
if (!err) {
err = i915_gem_obj_copy_ttm(obj, backup, pm_apply->allow_gpu,
false);
diff --git a/drivers/gpu/drm/ttm/tests/ttm_bo_test.c b/drivers/gpu/drm/ttm/tests/ttm_bo_test.c
index f0a7eb62116c..3139fd9128d8 100644
--- a/drivers/gpu/drm/ttm/tests/ttm_bo_test.c
+++ b/drivers/gpu/drm/ttm/tests/ttm_bo_test.c
@@ -308,11 +308,11 @@ static void ttm_bo_unreserve_pinned(struct kunit *test)
err = ttm_resource_alloc(bo, place, &res2);
KUNIT_ASSERT_EQ(test, err, 0);
KUNIT_ASSERT_EQ(test,
- list_is_last(&res2->lru.link, &priv->ttm_dev->pinned), 1);
+ list_is_last(&res2->lru.link, &priv->ttm_dev->unevictable), 1);
ttm_bo_unreserve(bo);
KUNIT_ASSERT_EQ(test,
- list_is_last(&res1->lru.link, &priv->ttm_dev->pinned), 1);
+ list_is_last(&res1->lru.link, &priv->ttm_dev->unevictable), 1);
ttm_resource_free(bo, &res1);
ttm_resource_free(bo, &res2);
diff --git a/drivers/gpu/drm/ttm/tests/ttm_resource_test.c b/drivers/gpu/drm/ttm/tests/ttm_resource_test.c
index 22260e7aea58..a9f4b81921c3 100644
--- a/drivers/gpu/drm/ttm/tests/ttm_resource_test.c
+++ b/drivers/gpu/drm/ttm/tests/ttm_resource_test.c
@@ -164,18 +164,18 @@ static void ttm_resource_init_pinned(struct kunit *test)
res = kunit_kzalloc(test, sizeof(*res), GFP_KERNEL);
KUNIT_ASSERT_NOT_NULL(test, res);
- KUNIT_ASSERT_TRUE(test, list_empty(&bo->bdev->pinned));
+ KUNIT_ASSERT_TRUE(test, list_empty(&bo->bdev->unevictable));
dma_resv_lock(bo->base.resv, NULL);
ttm_bo_pin(bo);
ttm_resource_init(bo, place, res);
- KUNIT_ASSERT_TRUE(test, list_is_singular(&bo->bdev->pinned));
+ KUNIT_ASSERT_TRUE(test, list_is_singular(&bo->bdev->unevictable));
ttm_bo_unpin(bo);
ttm_resource_fini(man, res);
dma_resv_unlock(bo->base.resv);
- KUNIT_ASSERT_TRUE(test, list_empty(&bo->bdev->pinned));
+ KUNIT_ASSERT_TRUE(test, list_empty(&bo->bdev->unevictable));
}
static void ttm_resource_fini_basic(struct kunit *test)
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index 320592435252..ae29915c52c0 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -139,7 +139,7 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo,
goto out_err;
if (mem->mem_type != TTM_PL_SYSTEM) {
- ret = ttm_tt_populate(bo->bdev, bo->ttm, ctx);
+ ret = ttm_bo_populate(bo, ctx);
if (ret)
goto out_err;
}
@@ -1128,9 +1128,22 @@ ttm_bo_swapout_cb(struct ttm_lru_walk *walk, struct ttm_buffer_object *bo)
if (bo->bdev->funcs->swap_notify)
bo->bdev->funcs->swap_notify(bo);
- if (ttm_tt_is_populated(bo->ttm))
+ if (ttm_tt_is_populated(bo->ttm)) {
+ spin_lock(&bo->bdev->lru_lock);
+ ttm_resource_del_bulk_move(bo->resource, bo);
+ ttm_resource_move_to_lru_tail(bo->resource);
+ spin_unlock(&bo->bdev->lru_lock);
+
ret = ttm_tt_swapout(bo->bdev, bo->ttm, swapout_walk->gfp_flags);
+ if (ret) {
+ spin_lock(&bo->bdev->lru_lock);
+ ttm_resource_add_bulk_move(bo->resource, bo);
+ ttm_resource_move_to_lru_tail(bo->resource);
+ spin_unlock(&bo->bdev->lru_lock);
+ }
+ }
+
out:
/* Consider -ENOMEM and -ENOSPC non-fatal. */
if (ret == -ENOMEM || ret == -ENOSPC)
@@ -1180,3 +1193,46 @@ void ttm_bo_tt_destroy(struct ttm_buffer_object *bo)
ttm_tt_destroy(bo->bdev, bo->ttm);
bo->ttm = NULL;
}
+
+/**
+ * ttm_bo_populate() - Ensure that a buffer object has backing pages
+ * @bo: The buffer object
+ * @ctx: The ttm_operation_ctx governing the operation.
+ *
+ * For buffer objects in a memory type whose manager uses
+ * struct ttm_tt for backing pages, ensure those backing pages
+ * are present and with valid content. The bo's resource is also
+ * placed on the correct LRU list if it was previously swapped
+ * out.
+ *
+ * Return: 0 if successful, negative error code on failure.
+ * Note: May return -EINTR or -ERESTARTSYS if @ctx::interruptible
+ * is set to true.
+ */
+int ttm_bo_populate(struct ttm_buffer_object *bo,
+ struct ttm_operation_ctx *ctx)
+{
+ struct ttm_tt *tt = bo->ttm;
+ bool swapped;
+ int ret;
+
+ dma_resv_assert_held(bo->base.resv);
+
+ if (!tt)
+ return 0;
+
+ swapped = ttm_tt_is_swapped(tt);
+ ret = ttm_tt_populate(bo->bdev, tt, ctx);
+ if (ret)
+ return ret;
+
+ if (swapped && !ttm_tt_is_swapped(tt) && !bo->pin_count) {
+ spin_lock(&bo->bdev->lru_lock);
+ ttm_resource_add_bulk_move(bo->resource, bo);
+ ttm_resource_move_to_lru_tail(bo->resource);
+ spin_unlock(&bo->bdev->lru_lock);
+ }
+
+ return 0;
+}
+EXPORT_SYMBOL(ttm_bo_populate);
diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
index 3c07f4712d5c..d939925efa81 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
@@ -163,7 +163,7 @@ int ttm_bo_move_memcpy(struct ttm_buffer_object *bo,
src_man = ttm_manager_type(bdev, src_mem->mem_type);
if (ttm && ((ttm->page_flags & TTM_TT_FLAG_SWAPPED) ||
dst_man->use_tt)) {
- ret = ttm_tt_populate(bdev, ttm, ctx);
+ ret = ttm_bo_populate(bo, ctx);
if (ret)
return ret;
}
@@ -350,7 +350,7 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo,
BUG_ON(!ttm);
- ret = ttm_tt_populate(bo->bdev, ttm, &ctx);
+ ret = ttm_bo_populate(bo, &ctx);
if (ret)
return ret;
@@ -507,7 +507,7 @@ int ttm_bo_vmap(struct ttm_buffer_object *bo, struct iosys_map *map)
pgprot_t prot;
void *vaddr;
- ret = ttm_tt_populate(bo->bdev, ttm, &ctx);
+ ret = ttm_bo_populate(bo, &ctx);
if (ret)
return ret;
diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c
index 4212b8c91dd4..2c699ed1963a 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
@@ -224,7 +224,7 @@ vm_fault_t ttm_bo_vm_fault_reserved(struct vm_fault *vmf,
};
ttm = bo->ttm;
- err = ttm_tt_populate(bdev, bo->ttm, &ctx);
+ err = ttm_bo_populate(bo, &ctx);
if (err) {
if (err == -EINTR || err == -ERESTARTSYS ||
err == -EAGAIN)
diff --git a/drivers/gpu/drm/ttm/ttm_device.c b/drivers/gpu/drm/ttm/ttm_device.c
index e7cc4954c1bc..02e797fd1891 100644
--- a/drivers/gpu/drm/ttm/ttm_device.c
+++ b/drivers/gpu/drm/ttm/ttm_device.c
@@ -216,7 +216,7 @@ int ttm_device_init(struct ttm_device *bdev, const struct ttm_device_funcs *func
bdev->vma_manager = vma_manager;
spin_lock_init(&bdev->lru_lock);
- INIT_LIST_HEAD(&bdev->pinned);
+ INIT_LIST_HEAD(&bdev->unevictable);
bdev->dev_mapping = mapping;
mutex_lock(&ttm_global_mutex);
list_add_tail(&bdev->device_list, &glob->device_list);
@@ -283,7 +283,7 @@ void ttm_device_clear_dma_mappings(struct ttm_device *bdev)
struct ttm_resource_manager *man;
unsigned int i, j;
- ttm_device_clear_lru_dma_mappings(bdev, &bdev->pinned);
+ ttm_device_clear_lru_dma_mappings(bdev, &bdev->unevictable);
for (i = TTM_PL_SYSTEM; i < TTM_NUM_MEM_TYPES; ++i) {
man = ttm_manager_type(bdev, i);
diff --git a/drivers/gpu/drm/ttm/ttm_resource.c b/drivers/gpu/drm/ttm/ttm_resource.c
index 6d764ba88aab..93b44043b428 100644
--- a/drivers/gpu/drm/ttm/ttm_resource.c
+++ b/drivers/gpu/drm/ttm/ttm_resource.c
@@ -30,6 +30,7 @@
#include <drm/ttm/ttm_bo.h>
#include <drm/ttm/ttm_placement.h>
#include <drm/ttm/ttm_resource.h>
+#include <drm/ttm/ttm_tt.h>
#include <drm/drm_util.h>
@@ -239,7 +240,8 @@ static void ttm_lru_bulk_move_del(struct ttm_lru_bulk_move *bulk,
void ttm_resource_add_bulk_move(struct ttm_resource *res,
struct ttm_buffer_object *bo)
{
- if (bo->bulk_move && !bo->pin_count)
+ if (bo->bulk_move && !bo->pin_count &&
+ (!bo->ttm || !ttm_tt_is_swapped(bo->ttm)))
ttm_lru_bulk_move_add(bo->bulk_move, res);
}
@@ -247,7 +249,8 @@ void ttm_resource_add_bulk_move(struct ttm_resource *res,
void ttm_resource_del_bulk_move(struct ttm_resource *res,
struct ttm_buffer_object *bo)
{
- if (bo->bulk_move && !bo->pin_count)
+ if (bo->bulk_move && !bo->pin_count &&
+ (!bo->ttm || !ttm_tt_is_swapped(bo->ttm)))
ttm_lru_bulk_move_del(bo->bulk_move, res);
}
@@ -259,8 +262,8 @@ void ttm_resource_move_to_lru_tail(struct ttm_resource *res)
lockdep_assert_held(&bo->bdev->lru_lock);
- if (bo->pin_count) {
- list_move_tail(&res->lru.link, &bdev->pinned);
+ if (bo->pin_count || (bo->ttm && ttm_tt_is_swapped(bo->ttm))) {
+ list_move_tail(&res->lru.link, &bdev->unevictable);
} else if (bo->bulk_move) {
struct ttm_lru_bulk_move_pos *pos =
@@ -301,8 +304,8 @@ void ttm_resource_init(struct ttm_buffer_object *bo,
man = ttm_manager_type(bo->bdev, place->mem_type);
spin_lock(&bo->bdev->lru_lock);
- if (bo->pin_count)
- list_add_tail(&res->lru.link, &bo->bdev->pinned);
+ if (bo->pin_count || (bo->ttm && ttm_tt_is_swapped(bo->ttm)))
+ list_add_tail(&res->lru.link, &bo->bdev->unevictable);
else
list_add_tail(&res->lru.link, &man->lru[bo->priority]);
man->usage += res->size;
diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c
index 4b51b9023126..1a3b2a1d8d4e 100644
--- a/drivers/gpu/drm/ttm/ttm_tt.c
+++ b/drivers/gpu/drm/ttm/ttm_tt.c
@@ -367,7 +367,9 @@ int ttm_tt_populate(struct ttm_device *bdev,
}
return ret;
}
+#if IS_ENABLED(CONFIG_DRM_TTM_KUNIT_TEST)
EXPORT_SYMBOL(ttm_tt_populate);
+#endif
void ttm_tt_unpopulate(struct ttm_device *bdev, struct ttm_tt *ttm)
{
diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index a8e4d46d9123..f34daae2cf2b 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -892,7 +892,7 @@ int xe_bo_evict_pinned(struct xe_bo *bo)
}
}
- ret = ttm_tt_populate(bo->ttm.bdev, bo->ttm.ttm, &ctx);
+ ret = ttm_bo_populate(&bo->ttm, &ctx);
if (ret)
goto err_res_free;
@@ -945,7 +945,7 @@ int xe_bo_restore_pinned(struct xe_bo *bo)
if (ret)
return ret;
- ret = ttm_tt_populate(bo->ttm.bdev, bo->ttm.ttm, &ctx);
+ ret = ttm_bo_populate(&bo->ttm, &ctx);
if (ret)
goto err_res_free;
diff --git a/include/drm/ttm/ttm_bo.h b/include/drm/ttm/ttm_bo.h
index 7b56d1ca36d7..5804408815be 100644
--- a/include/drm/ttm/ttm_bo.h
+++ b/include/drm/ttm/ttm_bo.h
@@ -462,5 +462,7 @@ int ttm_bo_pipeline_gutting(struct ttm_buffer_object *bo);
pgprot_t ttm_io_prot(struct ttm_buffer_object *bo, struct ttm_resource *res,
pgprot_t tmp);
void ttm_bo_tt_destroy(struct ttm_buffer_object *bo);
+int ttm_bo_populate(struct ttm_buffer_object *bo,
+ struct ttm_operation_ctx *ctx);
#endif
diff --git a/include/drm/ttm/ttm_device.h b/include/drm/ttm/ttm_device.h
index c22f30535c84..438358f72716 100644
--- a/include/drm/ttm/ttm_device.h
+++ b/include/drm/ttm/ttm_device.h
@@ -252,9 +252,10 @@ struct ttm_device {
spinlock_t lru_lock;
/**
- * @pinned: Buffer objects which are pinned and so not on any LRU list.
+ * @unevictable Buffer objects which are pinned or swapped and as such
+ * not on an LRU list.
*/
- struct list_head pinned;
+ struct list_head unevictable;
/**
* @dev_mapping: A pointer to the struct address_space for invalidating
diff --git a/include/drm/ttm/ttm_tt.h b/include/drm/ttm/ttm_tt.h
index 2b9d856ff388..991edafdb2dd 100644
--- a/include/drm/ttm/ttm_tt.h
+++ b/include/drm/ttm/ttm_tt.h
@@ -129,6 +129,11 @@ static inline bool ttm_tt_is_populated(struct ttm_tt *tt)
return tt->page_flags & TTM_TT_FLAG_PRIV_POPULATED;
}
+static inline bool ttm_tt_is_swapped(const struct ttm_tt *tt)
+{
+ return tt->page_flags & TTM_TT_FLAG_SWAPPED;
+}
+
/**
* ttm_tt_create
*
--
2.46.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* ✗ CI.KUnit: failure for drm/ttm: Really use a separate LRU list for swapped- and pinned objects (rev2)
2024-09-03 9:47 [PATCH v2 0/2] drm/ttm: Really use a separate LRU list for swapped- and pinned objects Thomas Hellström
` (3 preceding siblings ...)
2024-09-03 10:43 ` ✗ CI.checkpatch: warning " Patchwork
@ 2024-09-03 10:45 ` Patchwork
4 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2024-09-03 10:45 UTC (permalink / raw)
To: Thomas Hellström; +Cc: intel-xe
== Series Details ==
Series: drm/ttm: Really use a separate LRU list for swapped- and pinned objects (rev2)
URL : https://patchwork.freedesktop.org/series/138103/
State : failure
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[10:43:43] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[10:43:48] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
[10:44:14] Starting KUnit Kernel (1/1)...
[10:44:14] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[10:44:14] =================== guc_dbm (7 subtests) ===================
[10:44:14] [PASSED] test_empty
[10:44:14] [PASSED] test_default
[10:44:14] ======================== test_size ========================
[10:44:14] [PASSED] 4
[10:44:14] [PASSED] 8
[10:44:14] [PASSED] 32
[10:44:14] [PASSED] 256
[10:44:14] ==================== [PASSED] test_size ====================
[10:44:14] ======================= test_reuse ========================
[10:44:14] [PASSED] 4
[10:44:14] [PASSED] 8
[10:44:14] [PASSED] 32
[10:44:14] [PASSED] 256
[10:44:14] =================== [PASSED] test_reuse ====================
[10:44:14] =================== test_range_overlap ====================
[10:44:14] [PASSED] 4
[10:44:14] [PASSED] 8
[10:44:14] [PASSED] 32
[10:44:14] [PASSED] 256
[10:44:14] =============== [PASSED] test_range_overlap ================
[10:44:14] =================== test_range_compact ====================
[10:44:14] [PASSED] 4
[10:44:14] [PASSED] 8
[10:44:14] [PASSED] 32
[10:44:14] [PASSED] 256
[10:44:14] =============== [PASSED] test_range_compact ================
[10:44:14] ==================== test_range_spare =====================
[10:44:14] [PASSED] 4
[10:44:14] [PASSED] 8
[10:44:14] [PASSED] 32
[10:44:14] [PASSED] 256
[10:44:14] ================ [PASSED] test_range_spare =================
[10:44:14] ===================== [PASSED] guc_dbm =====================
[10:44:14] =================== guc_idm (6 subtests) ===================
[10:44:14] [PASSED] bad_init
[10:44:14] [PASSED] no_init
[10:44:14] [PASSED] init_fini
[10:44:14] [PASSED] check_used
[10:44:14] [PASSED] check_quota
[10:44:14] [PASSED] check_all
[10:44:14] ===================== [PASSED] guc_idm =====================
[10:44:14] ================== no_relay (3 subtests) ===================
[10:44:14] [PASSED] xe_drops_guc2pf_if_not_ready
[10:44:14] [PASSED] xe_drops_guc2vf_if_not_ready
[10:44:14] [PASSED] xe_rejects_send_if_not_ready
[10:44:14] ==================== [PASSED] no_relay =====================
[10:44:14] ================== pf_relay (14 subtests) ==================
[10:44:14] [PASSED] pf_rejects_guc2pf_too_short
[10:44:14] [PASSED] pf_rejects_guc2pf_too_long
[10:44:14] [PASSED] pf_rejects_guc2pf_no_payload
[10:44:14] [PASSED] pf_fails_no_payload
[10:44:14] [PASSED] pf_fails_bad_origin
[10:44:14] [PASSED] pf_fails_bad_type
[10:44:14] [PASSED] pf_txn_reports_error
[10:44:14] [PASSED] pf_txn_sends_pf2guc
[10:44:14] [PASSED] pf_sends_pf2guc
[10:44:14] [SKIPPED] pf_loopback_nop
[10:44:14] [SKIPPED] pf_loopback_echo
[10:44:14] [SKIPPED] pf_loopback_fail
[10:44:14] [SKIPPED] pf_loopback_busy
[10:44:14] [SKIPPED] pf_loopback_retry
[10:44:14] ==================== [PASSED] pf_relay =====================
[10:44:14] ================== vf_relay (3 subtests) ===================
[10:44:14] [PASSED] vf_rejects_guc2vf_too_short
[10:44:14] [PASSED] vf_rejects_guc2vf_too_long
[10:44:14] [PASSED] vf_rejects_guc2vf_no_payload
[10:44:14] ==================== [PASSED] vf_relay =====================
[10:44:14] ================= pf_service (11 subtests) =================
[10:44:14] [PASSED] pf_negotiate_any
[10:44:14] [PASSED] pf_negotiate_base_match
[10:44:14] [PASSED] pf_negotiate_base_newer
[10:44:14] [PASSED] pf_negotiate_base_next
[10:44:14] [SKIPPED] pf_negotiate_base_older
[10:44:14] [PASSED] pf_negotiate_base_prev
[10:44:14] [PASSED] pf_negotiate_latest_match
[10:44:14] [PASSED] pf_negotiate_latest_newer
[10:44:14] [PASSED] pf_negotiate_latest_next
[10:44:14] [SKIPPED] pf_negotiate_latest_older
[10:44:14] [SKIPPED] pf_negotiate_latest_prev
[10:44:14] =================== [PASSED] pf_service ====================
[10:44:14] ===================== lmtt (1 subtest) =====================
[10:44:14] ======================== test_ops =========================
[10:44:14] [PASSED] 2-level
[10:44:14] [PASSED] multi-level
[10:44:14] ==================== [PASSED] test_ops =====================
[10:44:14] ====================== [PASSED] lmtt =======================
[10:44:14] =================== xe_mocs (2 subtests) ===================
[10:44:14] ================ xe_live_mocs_kernel_kunit ================
[10:44:14] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[10:44:14] ================ xe_live_mocs_reset_kunit =================
[10:44:14] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[10:44:14] ==================== [SKIPPED] xe_mocs =====================
[10:44:14] ================= xe_migrate (2 subtests) ==================
[10:44:14] ================= xe_migrate_sanity_kunit =================
[10:44:14] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[10:44:14] ================== xe_validate_ccs_kunit ==================
[10:44:14] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[10:44:14] =================== [SKIPPED] xe_migrate ===================
[10:44:14] ================== xe_dma_buf (1 subtest) ==================
[10:44:14] ==================== xe_dma_buf_kunit =====================
[10:44:14] ================ [SKIPPED] xe_dma_buf_kunit ================
[10:44:14] =================== [SKIPPED] xe_dma_buf ===================
[10:44:14] ==================== xe_bo (2 subtests) ====================
[10:44:14] ================== xe_ccs_migrate_kunit ===================
[10:44:14] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[10:44:14] ==================== xe_bo_evict_kunit ====================
[10:44:14] =============== [SKIPPED] xe_bo_evict_kunit ================
[10:44:14] ===================== [SKIPPED] xe_bo ======================
[10:44:14] ==================== args (11 subtests) ====================
[10:44:14] [PASSED] count_args_test
[10:44:14] [PASSED] call_args_example
[10:44:14] [PASSED] call_args_test
[10:44:14] [PASSED] drop_first_arg_example
[10:44:14] [PASSED] drop_first_arg_test
[10:44:14] [PASSED] first_arg_example
[10:44:14] [PASSED] first_arg_test
[10:44:14] [PASSED] last_arg_example
[10:44:14] [PASSED] last_arg_test
[10:44:14] [PASSED] pick_arg_example
[10:44:14] [PASSED] sep_comma_example
[10:44:14] ====================== [PASSED] args =======================
[10:44:14] =================== xe_pci (2 subtests) ====================
stty: 'standard input': Inappropriate ioctl for device
[10:44:14] [PASSED] xe_gmdid_graphics_ip
[10:44:14] [PASSED] xe_gmdid_media_ip
[10:44:14] ===================== [PASSED] xe_pci ======================
[10:44:14] =================== xe_rtp (2 subtests) ====================
[10:44:14] =============== xe_rtp_process_to_sr_tests ================
[10:44:14] [PASSED] coalesce-same-reg
[10:44:14] [PASSED] no-match-no-add
[10:44:14] [PASSED] match-or
[10:44:14] [PASSED] match-or-xfail
[10:44:14] [PASSED] no-match-no-add-multiple-rules
[10:44:14] [PASSED] two-regs-two-entries
[10:44:14] [PASSED] clr-one-set-other
[10:44:14] [PASSED] set-field
[10:44:14] [PASSED] conflict-duplicate
[10:44:14] [PASSED] conflict-not-disjoint
[10:44:14] [PASSED] conflict-reg-type
[10:44:14] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[10:44:14] ================== xe_rtp_process_tests ===================
[10:44:14] [PASSED] active1
[10:44:14] [PASSED] active2
[10:44:14] [PASSED] active-inactive
[10:44:14] [PASSED] inactive-active
[10:44:14] [PASSED] inactive-1st_or_active-inactive
[10:44:14] [PASSED] inactive-2nd_or_active-inactive
[10:44:14] [PASSED] inactive-last_or_active-inactive
[10:44:14] [PASSED] inactive-no_or_active-inactive
[10:44:14] ============== [PASSED] xe_rtp_process_tests ===============
[10:44:14] ===================== [PASSED] xe_rtp ======================
[10:44:14] ==================== xe_wa (1 subtest) =====================
[10:44:14] ======================== xe_wa_gt =========================
[10:44:14] [PASSED] TIGERLAKE (B0)
[10:44:14] [PASSED] DG1 (A0)
[10:44:14] [PASSED] DG1 (B0)
[10:44:14] [PASSED] ALDERLAKE_S (A0)
[10:44:14] [PASSED] ALDERLAKE_S (B0)
[10:44:14] [PASSED] ALDERLAKE_S (C0)
[10:44:14] [PASSED] ALDERLAKE_S (D0)
[10:44:14] [PASSED] ALDERLAKE_P (A0)
[10:44:14] [PASSED] ALDERLAKE_P (B0)
[10:44:14] [PASSED] ALDERLAKE_P (C0)
[10:44:14] [PASSED] ALDERLAKE_S_RPLS (D0)
[10:44:14] [PASSED] ALDERLAKE_P_RPLU (E0)
[10:44:14] [PASSED] DG2_G10 (C0)
[10:44:14] [PASSED] DG2_G11 (B1)
[10:44:14] [PASSED] DG2_G12 (A1)
[10:44:14] [PASSED] METEORLAKE (g:A0, m:A0)
[10:44:14] [PASSED] METEORLAKE (g:A0, m:A0)
[10:44:14] [PASSED] METEORLAKE (g:A0, m:A0)
[10:44:14] [PASSED] LUNARLAKE (g:A0, m:A0)
[10:44:14] [PASSED] LUNARLAKE (g:B0, m:A0)
[10:44:14] [PASSED] BATTLEMAGE (g:A0, m:A1)
[10:44:14] ==================== [PASSED] xe_wa_gt =====================
[10:44:14] ====================== [PASSED] xe_wa ======================
[10:44:14] ============================================================
[10:44:14] Testing complete. Ran 121 tests: passed: 106, skipped: 15
[10:44:14] Elapsed time: 30.860s total, 4.260s configuring, 26.329s building, 0.229s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[10:44:14] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[10:44:16] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
[10:44:38] Starting KUnit Kernel (1/1)...
[10:44:38] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[10:44:38] ============ drm_test_pick_cmdline (2 subtests) ============
[10:44:38] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[10:44:38] =============== drm_test_pick_cmdline_named ===============
[10:44:38] [PASSED] NTSC
[10:44:38] [PASSED] NTSC-J
[10:44:38] [PASSED] PAL
[10:44:38] [PASSED] PAL-M
[10:44:38] =========== [PASSED] drm_test_pick_cmdline_named ===========
[10:44:38] ============== [PASSED] drm_test_pick_cmdline ==============
[10:44:38] ================== drm_buddy (7 subtests) ==================
[10:44:38] [PASSED] drm_test_buddy_alloc_limit
[10:44:38] [PASSED] drm_test_buddy_alloc_optimistic
[10:44:38] [PASSED] drm_test_buddy_alloc_pessimistic
[10:44:38] [PASSED] drm_test_buddy_alloc_pathological
[10:44:38] [PASSED] drm_test_buddy_alloc_contiguous
[10:44:38] [PASSED] drm_test_buddy_alloc_clear
[10:44:38] [PASSED] drm_test_buddy_alloc_range_bias
[10:44:38] ==================== [PASSED] drm_buddy ====================
[10:44:38] ============= drm_cmdline_parser (40 subtests) =============
[10:44:38] [PASSED] drm_test_cmdline_force_d_only
[10:44:38] [PASSED] drm_test_cmdline_force_D_only_dvi
[10:44:38] [PASSED] drm_test_cmdline_force_D_only_hdmi
[10:44:38] [PASSED] drm_test_cmdline_force_D_only_not_digital
[10:44:38] [PASSED] drm_test_cmdline_force_e_only
[10:44:38] [PASSED] drm_test_cmdline_res
[10:44:38] [PASSED] drm_test_cmdline_res_vesa
[10:44:38] [PASSED] drm_test_cmdline_res_vesa_rblank
[10:44:38] [PASSED] drm_test_cmdline_res_rblank
[10:44:38] [PASSED] drm_test_cmdline_res_bpp
[10:44:38] [PASSED] drm_test_cmdline_res_refresh
[10:44:38] [PASSED] drm_test_cmdline_res_bpp_refresh
[10:44:38] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[10:44:38] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[10:44:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[10:44:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[10:44:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[10:44:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[10:44:38] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[10:44:38] [PASSED] drm_test_cmdline_res_margins_force_on
[10:44:38] [PASSED] drm_test_cmdline_res_vesa_margins
[10:44:38] [PASSED] drm_test_cmdline_name
[10:44:38] [PASSED] drm_test_cmdline_name_bpp
[10:44:38] [PASSED] drm_test_cmdline_name_option
[10:44:38] [PASSED] drm_test_cmdline_name_bpp_option
[10:44:38] [PASSED] drm_test_cmdline_rotate_0
[10:44:38] [PASSED] drm_test_cmdline_rotate_90
[10:44:38] [PASSED] drm_test_cmdline_rotate_180
[10:44:38] [PASSED] drm_test_cmdline_rotate_270
[10:44:38] [PASSED] drm_test_cmdline_hmirror
[10:44:38] [PASSED] drm_test_cmdline_vmirror
[10:44:38] [PASSED] drm_test_cmdline_margin_options
[10:44:38] [PASSED] drm_test_cmdline_multiple_options
[10:44:38] [PASSED] drm_test_cmdline_bpp_extra_and_option
[10:44:38] [PASSED] drm_test_cmdline_extra_and_option
[10:44:38] [PASSED] drm_test_cmdline_freestanding_options
[10:44:38] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[10:44:38] [PASSED] drm_test_cmdline_panel_orientation
[10:44:38] ================ drm_test_cmdline_invalid =================
[10:44:38] [PASSED] margin_only
[10:44:38] [PASSED] interlace_only
[10:44:38] [PASSED] res_missing_x
[10:44:38] [PASSED] res_missing_y
[10:44:38] [PASSED] res_bad_y
[10:44:38] [PASSED] res_missing_y_bpp
[10:44:38] [PASSED] res_bad_bpp
[10:44:38] [PASSED] res_bad_refresh
[10:44:38] [PASSED] res_bpp_refresh_force_on_off
[10:44:38] [PASSED] res_invalid_mode
[10:44:38] [PASSED] res_bpp_wrong_place_mode
[10:44:38] [PASSED] name_bpp_refresh
[10:44:38] [PASSED] name_refresh
[10:44:38] [PASSED] name_refresh_wrong_mode
[10:44:38] [PASSED] name_refresh_invalid_mode
[10:44:38] [PASSED] rotate_multiple
[10:44:38] [PASSED] rotate_invalid_val
[10:44:38] [PASSED] rotate_truncated
[10:44:38] [PASSED] invalid_option
[10:44:38] [PASSED] invalid_tv_option
[10:44:38] [PASSED] truncated_tv_option
[10:44:38] ============ [PASSED] drm_test_cmdline_invalid =============
[10:44:38] =============== drm_test_cmdline_tv_options ===============
[10:44:38] [PASSED] NTSC
[10:44:38] [PASSED] NTSC_443
[10:44:38] [PASSED] NTSC_J
[10:44:38] [PASSED] PAL
[10:44:38] [PASSED] PAL_M
[10:44:38] [PASSED] PAL_N
[10:44:38] [PASSED] SECAM
[10:44:38] [PASSED] MONO_525
[10:44:38] [PASSED] MONO_625
[10:44:38] =========== [PASSED] drm_test_cmdline_tv_options ===========
[10:44:38] =============== [PASSED] drm_cmdline_parser ================
[10:44:38] ========== drmm_connector_hdmi_init (19 subtests) ==========
[10:44:38] [PASSED] drm_test_connector_hdmi_init_valid
[10:44:38] [PASSED] drm_test_connector_hdmi_init_bpc_8
[10:44:38] [PASSED] drm_test_connector_hdmi_init_bpc_10
[10:44:38] [PASSED] drm_test_connector_hdmi_init_bpc_12
[10:44:38] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[10:44:38] [PASSED] drm_test_connector_hdmi_init_bpc_null
[10:44:38] [PASSED] drm_test_connector_hdmi_init_formats_empty
[10:44:38] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[10:44:38] [PASSED] drm_test_connector_hdmi_init_null_ddc
[10:44:38] [PASSED] drm_test_connector_hdmi_init_null_product
[10:44:38] [PASSED] drm_test_connector_hdmi_init_null_vendor
[10:44:38] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[10:44:38] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[10:44:38] [PASSED] drm_test_connector_hdmi_init_product_valid
[10:44:38] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[10:44:38] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[10:44:38] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[10:44:38] ========= drm_test_connector_hdmi_init_type_valid =========
[10:44:38] [PASSED] HDMI-A
[10:44:38] [PASSED] HDMI-B
[10:44:38] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[10:44:38] ======== drm_test_connector_hdmi_init_type_invalid ========
[10:44:38] [PASSED] Unknown
[10:44:38] [PASSED] VGA
[10:44:38] [PASSED] DVI-I
[10:44:38] [PASSED] DVI-D
[10:44:38] [PASSED] DVI-A
[10:44:38] [PASSED] Composite
[10:44:38] [PASSED] SVIDEO
[10:44:38] [PASSED] LVDS
[10:44:38] [PASSED] Component
[10:44:38] [PASSED] DIN
[10:44:38] [PASSED] DP
[10:44:38] [PASSED] TV
[10:44:38] [PASSED] eDP
[10:44:38] [PASSED] Virtual
[10:44:38] [PASSED] DSI
[10:44:38] [PASSED] DPI
[10:44:38] [PASSED] Writeback
[10:44:38] [PASSED] SPI
[10:44:38] [PASSED] USB
[10:44:38] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[10:44:38] ============ [PASSED] drmm_connector_hdmi_init =============
[10:44:38] ============= drmm_connector_init (3 subtests) =============
[10:44:38] [PASSED] drm_test_drmm_connector_init
[10:44:38] [PASSED] drm_test_drmm_connector_init_null_ddc
[10:44:38] ========= drm_test_drmm_connector_init_type_valid =========
[10:44:38] [PASSED] Unknown
[10:44:38] [PASSED] VGA
[10:44:38] [PASSED] DVI-I
[10:44:38] [PASSED] DVI-D
[10:44:38] [PASSED] DVI-A
[10:44:38] [PASSED] Composite
[10:44:38] [PASSED] SVIDEO
[10:44:38] [PASSED] LVDS
[10:44:38] [PASSED] Component
[10:44:38] [PASSED] DIN
[10:44:38] [PASSED] DP
[10:44:38] [PASSED] HDMI-A
[10:44:38] [PASSED] HDMI-B
[10:44:38] [PASSED] TV
[10:44:38] [PASSED] eDP
[10:44:38] [PASSED] Virtual
[10:44:38] [PASSED] DSI
[10:44:38] [PASSED] DPI
[10:44:38] [PASSED] Writeback
[10:44:38] [PASSED] SPI
[10:44:38] [PASSED] USB
[10:44:38] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[10:44:38] =============== [PASSED] drmm_connector_init ===============
[10:44:38] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[10:44:38] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[10:44:38] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[10:44:38] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[10:44:38] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[10:44:38] ========== drm_test_get_tv_mode_from_name_valid ===========
[10:44:38] [PASSED] NTSC
[10:44:38] [PASSED] NTSC-443
[10:44:38] [PASSED] NTSC-J
[10:44:38] [PASSED] PAL
[10:44:38] [PASSED] PAL-M
[10:44:38] [PASSED] PAL-N
[10:44:38] [PASSED] SECAM
[10:44:38] [PASSED] Mono
[10:44:38] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[10:44:38] [PASSED] drm_test_get_tv_mode_from_name_truncated
[10:44:38] ============ [PASSED] drm_get_tv_mode_from_name ============
[10:44:38] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[10:44:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[10:44:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[10:44:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[10:44:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[10:44:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[10:44:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[10:44:38] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[10:44:38] [PASSED] VIC 96
[10:44:38] [PASSED] VIC 97
[10:44:38] [PASSED] VIC 101
[10:44:38] [PASSED] VIC 102
[10:44:38] [PASSED] VIC 106
[10:44:38] [PASSED] VIC 107
[10:44:38] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[10:44:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[10:44:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[10:44:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[10:44:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[10:44:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[10:44:38] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[10:44:38] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[10:44:38] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[10:44:38] [PASSED] Automatic
[10:44:38] [PASSED] Full
[10:44:38] [PASSED] Limited 16:235
[10:44:38] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[10:44:38] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[10:44:38] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[10:44:38] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[10:44:38] === drm_test_drm_hdmi_connector_get_output_format_name ====
[10:44:38] [PASSED] RGB
[10:44:38] [PASSED] YUV 4:2:0
[10:44:38] [PASSED] YUV 4:2:2
[10:44:38] [PASSED] YUV 4:4:4
[10:44:38] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[10:44:38] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[10:44:38] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[10:44:38] ============= drm_damage_helper (21 subtests) ==============
[10:44:38] [PASSED] drm_test_damage_iter_no_damage
[10:44:38] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[10:44:38] [PASSED] drm_test_damage_iter_no_damage_src_moved
[10:44:38] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[10:44:38] [PASSED] drm_test_damage_iter_no_damage_not_visible
[10:44:38] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[10:44:38] [PASSED] drm_test_damage_iter_no_damage_no_fb
[10:44:38] [PASSED] drm_test_damage_iter_simple_damage
[10:44:38] [PASSED] drm_test_damage_iter_single_damage
[10:44:38] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[10:44:38] [PASSED] drm_test_damage_iter_single_damage_outside_src
[10:44:38] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[10:44:38] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[10:44:38] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[10:44:38] [PASSED] drm_test_damage_iter_single_damage_src_moved
[10:44:38] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[10:44:38] [PASSED] drm_test_damage_iter_damage
[10:44:38] [PASSED] drm_test_damage_iter_damage_one_intersect
[10:44:38] [PASSED] drm_test_damage_iter_damage_one_outside
[10:44:38] [PASSED] drm_test_damage_iter_damage_src_moved
[10:44:38] [PASSED] drm_test_damage_iter_damage_not_visible
[10:44:38] ================ [PASSED] drm_damage_helper ================
[10:44:38] ============== drm_dp_mst_helper (3 subtests) ==============
[10:44:38] ============== drm_test_dp_mst_calc_pbn_mode ==============
[10:44:38] [PASSED] Clock 154000 BPP 30 DSC disabled
[10:44:38] [PASSED] Clock 234000 BPP 30 DSC disabled
[10:44:38] [PASSED] Clock 297000 BPP 24 DSC disabled
[10:44:38] [PASSED] Clock 332880 BPP 24 DSC enabled
[10:44:38] [PASSED] Clock 324540 BPP 24 DSC enabled
[10:44:38] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[10:44:38] ============== drm_test_dp_mst_calc_pbn_div ===============
[10:44:38] [PASSED] Link rate 2000000 lane count 4
[10:44:38] [PASSED] Link rate 2000000 lane count 2
[10:44:38] [PASSED] Link rate 2000000 lane count 1
[10:44:38] [PASSED] Link rate 1350000 lane count 4
[10:44:38] [PASSED] Link rate 1350000 lane count 2
[10:44:38] [PASSED] Link rate 1350000 lane count 1
[10:44:38] [PASSED] Link rate 1000000 lane count 4
[10:44:38] [PASSED] Link rate 1000000 lane count 2
[10:44:38] [PASSED] Link rate 1000000 lane count 1
[10:44:38] [PASSED] Link rate 810000 lane count 4
[10:44:38] [PASSED] Link rate 810000 lane count 2
[10:44:38] [PASSED] Link rate 810000 lane count 1
[10:44:38] [PASSED] Link rate 540000 lane count 4
[10:44:38] [PASSED] Link rate 540000 lane count 2
[10:44:38] [PASSED] Link rate 540000 lane count 1
[10:44:38] [PASSED] Link rate 270000 lane count 4
[10:44:38] [PASSED] Link rate 270000 lane count 2
[10:44:38] [PASSED] Link rate 270000 lane count 1
[10:44:38] [PASSED] Link rate 162000 lane count 4
[10:44:38] [PASSED] Link rate 162000 lane count 2
[10:44:38] [PASSED] Link rate 162000 lane count 1
[10:44:38] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[10:44:38] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[10:44:38] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[10:44:38] [PASSED] DP_POWER_UP_PHY with port number
[10:44:38] [PASSED] DP_POWER_DOWN_PHY with port number
[10:44:38] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[10:44:38] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[10:44:38] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[10:44:38] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[10:44:38] [PASSED] DP_QUERY_PAYLOAD with port number
[10:44:38] [PASSED] DP_QUERY_PAYLOAD with VCPI
[10:44:38] [PASSED] DP_REMOTE_DPCD_READ with port number
[10:44:38] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[10:44:38] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[10:44:38] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[10:44:38] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[10:44:38] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[10:44:38] [PASSED] DP_REMOTE_I2C_READ with port number
[10:44:38] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[10:44:38] [PASSED] DP_REMOTE_I2C_READ with transactions array
[10:44:38] [PASSED] DP_REMOTE_I2C_WRITE with port number
[10:44:38] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[10:44:38] [PASSED] DP_REMOTE_I2C_WRITE with data array
[10:44:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[10:44:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[10:44:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[10:44:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[10:44:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[10:44:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[10:44:38] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[10:44:38] ================ [PASSED] drm_dp_mst_helper ================
[10:44:38] ================== drm_exec (7 subtests) ===================
[10:44:38] [PASSED] sanitycheck
[10:44:38] [PASSED] test_lock
[10:44:38] [PASSED] test_lock_unlock
[10:44:38] [PASSED] test_duplicates
[10:44:38] [PASSED] test_prepare
[10:44:38] [PASSED] test_prepare_array
[10:44:38] [PASSED] test_multiple_loops
[10:44:38] ==================== [PASSED] drm_exec =====================
[10:44:38] =========== drm_format_helper_test (17 subtests) ===========
[10:44:38] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[10:44:38] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[10:44:38] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[10:44:38] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[10:44:38] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[10:44:38] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[10:44:38] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[10:44:38] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[10:44:38] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[10:44:38] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[10:44:38] ============== drm_test_fb_xrgb8888_to_mono ===============
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[10:44:38] ==================== drm_test_fb_swab =====================
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ================ [PASSED] drm_test_fb_swab =================
[10:44:38] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[10:44:38] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[10:44:38] [PASSED] single_pixel_source_buffer
[10:44:38] [PASSED] single_pixel_clip_rectangle
[10:44:38] [PASSED] well_known_colors
[10:44:38] [PASSED] destination_pitch
[10:44:38] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[10:44:38] ================= drm_test_fb_clip_offset =================
[10:44:38] [PASSED] pass through
[10:44:38] [PASSED] horizontal offset
[10:44:38] [PASSED] vertical offset
[10:44:38] [PASSED] horizontal and vertical offset
[10:44:38] [PASSED] horizontal offset (custom pitch)
[10:44:38] [PASSED] vertical offset (custom pitch)
[10:44:38] [PASSED] horizontal and vertical offset (custom pitch)
[10:44:38] ============= [PASSED] drm_test_fb_clip_offset =============
[10:44:38] ============== drm_test_fb_build_fourcc_list ==============
[10:44:38] [PASSED] no native formats
[10:44:38] [PASSED] XRGB8888 as native format
[10:44:38] [PASSED] remove duplicates
[10:44:38] [PASSED] convert alpha formats
[10:44:38] [PASSED] random formats
[10:44:38] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[10:44:38] =================== drm_test_fb_memcpy ====================
[10:44:38] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[10:44:38] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[10:44:38] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[10:44:38] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[10:44:38] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[10:44:38] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[10:44:38] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[10:44:38] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[10:44:38] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[10:44:38] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[10:44:38] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[10:44:38] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[10:44:38] =============== [PASSED] drm_test_fb_memcpy ================
[10:44:38] ============= [PASSED] drm_format_helper_test ==============
[10:44:38] ================= drm_format (18 subtests) =================
[10:44:38] [PASSED] drm_test_format_block_width_invalid
[10:44:38] [PASSED] drm_test_format_block_width_one_plane
[10:44:38] [PASSED] drm_test_format_block_width_two_plane
[10:44:38] [PASSED] drm_test_format_block_width_three_plane
[10:44:38] [PASSED] drm_test_format_block_width_tiled
[10:44:38] [PASSED] drm_test_format_block_height_invalid
[10:44:38] [PASSED] drm_test_format_block_height_one_plane
[10:44:38] [PASSED] drm_test_format_block_height_two_plane
[10:44:38] [PASSED] drm_test_format_block_height_three_plane
[10:44:38] [PASSED] drm_test_format_block_height_tiled
[10:44:38] [PASSED] drm_test_format_min_pitch_invalid
[10:44:38] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[10:44:38] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[10:44:38] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[10:44:38] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[10:44:38] [PASSED] drm_test_format_min_pitch_two_plane
[10:44:38] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[10:44:38] [PASSED] drm_test_format_min_pitch_tiled
[10:44:38] =================== [PASSED] drm_format ====================
[10:44:38] =============== drm_framebuffer (1 subtest) ================
[10:44:38] =============== drm_test_framebuffer_create ===============
[10:44:38] [PASSED] ABGR8888 normal sizes
[10:44:38] [PASSED] ABGR8888 max sizes
[10:44:38] [PASSED] ABGR8888 pitch greater than min required
[10:44:38] [PASSED] ABGR8888 pitch less than min required
[10:44:38] [PASSED] ABGR8888 Invalid width
[10:44:38] [PASSED] ABGR8888 Invalid buffer handle
[10:44:38] [PASSED] No pixel format
[10:44:38] [PASSED] ABGR8888 Width 0
[10:44:38] [PASSED] ABGR8888 Height 0
[10:44:38] [PASSED] ABGR8888 Out of bound height * pitch combination
[10:44:38] [PASSED] ABGR8888 Large buffer offset
[10:44:38] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[10:44:38] [PASSED] ABGR8888 Valid buffer modifier
[10:44:38] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[10:44:38] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[10:44:38] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[10:44:38] [PASSED] NV12 Normal sizes
[10:44:38] [PASSED] NV12 Max sizes
[10:44:38] [PASSED] NV12 Invalid pitch
[10:44:38] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[10:44:38] [PASSED] NV12 different modifier per-plane
[10:44:38] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[10:44:38] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[10:44:38] [PASSED] NV12 Modifier for inexistent plane
[10:44:38] [PASSED] NV12 Handle for inexistent plane
[10:44:38] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[10:44:38] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[10:44:38] [PASSED] YVU420 Normal sizes
[10:44:38] [PASSED] YVU420 Max sizes
[10:44:38] [PASSED] YVU420 Invalid pitch
[10:44:38] [PASSED] YVU420 Different pitches
[10:44:38] [PASSED] YVU420 Different buffer offsets/pitches
[10:44:38] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[10:44:38] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[10:44:38] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[10:44:38] [PASSED] YVU420 Valid modifier
[10:44:38] [PASSED] YVU420 Different modifiers per plane
[10:44:38] [PASSED] YVU420 Modifier for inexistent plane
[10:44:38] [PASSED] X0L2 Normal sizes
[10:44:38] [PASSED] X0L2 Max sizes
[10:44:38] [PASSED] X0L2 Invalid pitch
[10:44:38] [PASSED] X0L2 Pitch greater than minimum required
[10:44:38] [PASSED] X0L2 Handle for inexistent plane
[10:44:38] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[10:44:38] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[10:44:38] [PASSED] X0L2 Valid modifier
[10:44:38] [PASSED] X0L2 Modifier for inexistent plane
[10:44:38] =========== [PASSED] drm_test_framebuffer_create ===========
[10:44:38] ================= [PASSED] drm_framebuffer =================
[10:44:38] ================ drm_gem_shmem (8 subtests) ================
[10:44:38] [PASSED] drm_gem_shmem_test_obj_create
[10:44:38] [PASSED] drm_gem_shmem_test_obj_create_private
[10:44:38] [PASSED] drm_gem_shmem_test_pin_pages
[10:44:38] [PASSED] drm_gem_shmem_test_vmap
[10:44:38] [PASSED] drm_gem_shmem_test_get_pages_sgt
[10:44:38] [PASSED] drm_gem_shmem_test_get_sg_table
[10:44:38] [PASSED] drm_gem_shmem_test_madvise
[10:44:38] [PASSED] drm_gem_shmem_test_purge
[10:44:38] ================== [PASSED] drm_gem_shmem ==================
[10:44:38] === drm_atomic_helper_connector_hdmi_check (22 subtests) ===
[10:44:38] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[10:44:38] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[10:44:38] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[10:44:38] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[10:44:38] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[10:44:38] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[10:44:38] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[10:44:38] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[10:44:38] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[10:44:38] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback
[10:44:38] [PASSED] drm_test_check_max_tmds_rate_format_fallback
[10:44:38] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[10:44:38] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[10:44:38] [PASSED] drm_test_check_output_bpc_dvi
[10:44:38] [PASSED] drm_test_check_output_bpc_format_vic_1
[10:44:38] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[10:44:38] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[10:44:38] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[10:44:38] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[10:44:38] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[10:44:38] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[10:44:38] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[10:44:38] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[10:44:38] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[10:44:38] [PASSED] drm_test_check_broadcast_rgb_value
[10:44:38] [PASSED] drm_test_check_bpc_8_value
[10:44:38] [PASSED] drm_test_check_bpc_10_value
[10:44:38] [PASSED] drm_test_check_bpc_12_value
[10:44:38] [PASSED] drm_test_check_format_value
[10:44:38] [PASSED] drm_test_check_tmds_char_value
[10:44:38] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[10:44:38] ================= drm_managed (2 subtests) =================
[10:44:38] [PASSED] drm_test_managed_release_action
[10:44:38] [PASSED] drm_test_managed_run_action
[10:44:38] =================== [PASSED] drm_managed ===================
[10:44:38] =================== drm_mm (6 subtests) ====================
[10:44:38] [PASSED] drm_test_mm_init
[10:44:38] [PASSED] drm_test_mm_debug
[10:44:38] [PASSED] drm_test_mm_align32
[10:44:38] [PASSED] drm_test_mm_align64
[10:44:38] [PASSED] drm_test_mm_lowest
[10:44:38] [PASSED] drm_test_mm_highest
[10:44:38] ===================== [PASSED] drm_mm ======================
[10:44:38] ============= drm_modes_analog_tv (5 subtests) =============
[10:44:38] [PASSED] drm_test_modes_analog_tv_mono_576i
[10:44:38] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[10:44:38] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[10:44:38] [PASSED] drm_test_modes_analog_tv_pal_576i
[10:44:38] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[10:44:38] =============== [PASSED] drm_modes_analog_tv ===============
[10:44:38] ============== drm_plane_helper (2 subtests) ===============
[10:44:38] =============== drm_test_check_plane_state ================
[10:44:38] [PASSED] clipping_simple
[10:44:38] [PASSED] clipping_rotate_reflect
[10:44:38] [PASSED] positioning_simple
[10:44:38] [PASSED] upscaling
[10:44:38] [PASSED] downscaling
[10:44:38] [PASSED] rounding1
[10:44:38] [PASSED] rounding2
[10:44:38] [PASSED] rounding3
[10:44:38] [PASSED] rounding4
[10:44:38] =========== [PASSED] drm_test_check_plane_state ============
[10:44:38] =========== drm_test_check_invalid_plane_state ============
[10:44:38] [PASSED] positioning_invalid
[10:44:38] [PASSED] upscaling_invalid
stty: 'standard input': Inappropriate ioctl for device
[10:44:38] [PASSED] downscaling_invalid
[10:44:38] ======= [PASSED] drm_test_check_invalid_plane_state ========
[10:44:38] ================ [PASSED] drm_plane_helper =================
[10:44:38] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[10:44:38] ====== drm_test_connector_helper_tv_get_modes_check =======
[10:44:38] [PASSED] None
[10:44:38] [PASSED] PAL
[10:44:38] [PASSED] NTSC
[10:44:38] [PASSED] Both, NTSC Default
[10:44:38] [PASSED] Both, PAL Default
[10:44:38] [PASSED] Both, NTSC Default, with PAL on command-line
[10:44:38] [PASSED] Both, PAL Default, with NTSC on command-line
[10:44:38] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[10:44:38] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[10:44:38] ================== drm_rect (9 subtests) ===================
[10:44:38] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[10:44:38] [PASSED] drm_test_rect_clip_scaled_not_clipped
[10:44:38] [PASSED] drm_test_rect_clip_scaled_clipped
[10:44:38] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[10:44:38] ================= drm_test_rect_intersect =================
[10:44:38] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[10:44:38] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[10:44:38] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[10:44:38] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[10:44:38] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[10:44:38] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[10:44:38] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[10:44:38] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[10:44:38] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[10:44:38] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[10:44:38] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[10:44:38] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[10:44:38] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[10:44:38] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[10:44:38] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[10:44:38] ============= [PASSED] drm_test_rect_intersect =============
[10:44:38] ================ drm_test_rect_calc_hscale ================
[10:44:38] [PASSED] normal use
[10:44:38] [PASSED] out of max range
[10:44:38] [PASSED] out of min range
[10:44:38] [PASSED] zero dst
[10:44:38] [PASSED] negative src
[10:44:38] [PASSED] negative dst
[10:44:38] ============ [PASSED] drm_test_rect_calc_hscale ============
[10:44:38] ================ drm_test_rect_calc_vscale ================
[10:44:38] [PASSED] normal use
[10:44:38] [PASSED] out of max range
[10:44:38] [PASSED] out of min range
[10:44:38] [PASSED] zero dst
[10:44:38] [PASSED] negative src
[10:44:38] [PASSED] negative dst
[10:44:38] ============ [PASSED] drm_test_rect_calc_vscale ============
[10:44:38] ================== drm_test_rect_rotate ===================
[10:44:38] [PASSED] reflect-x
[10:44:38] [PASSED] reflect-y
[10:44:38] [PASSED] rotate-0
[10:44:38] [PASSED] rotate-90
[10:44:38] [PASSED] rotate-180
[10:44:38] [PASSED] rotate-270
[10:44:38] ============== [PASSED] drm_test_rect_rotate ===============
[10:44:38] ================ drm_test_rect_rotate_inv =================
[10:44:38] [PASSED] reflect-x
[10:44:38] [PASSED] reflect-y
[10:44:38] [PASSED] rotate-0
[10:44:38] [PASSED] rotate-90
[10:44:38] [PASSED] rotate-180
[10:44:38] [PASSED] rotate-270
[10:44:38] ============ [PASSED] drm_test_rect_rotate_inv =============
[10:44:38] ==================== [PASSED] drm_rect =====================
[10:44:38] ============================================================
[10:44:38] Testing complete. Ran 515 tests: passed: 515
[10:44:38] Elapsed time: 23.988s total, 1.847s configuring, 21.922s building, 0.201s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
stty: 'standard input': Inappropriate ioctl for device
[10:44:38] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[10:44:40] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
[10:44:50] Starting KUnit Kernel (1/1)...
[10:44:50] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[10:44:50] ================= ttm_device (5 subtests) ==================
[10:44:50] [PASSED] ttm_device_init_basic
[10:44:50] [PASSED] ttm_device_init_multiple
[10:44:50] [PASSED] ttm_device_fini_basic
[10:44:50] [PASSED] ttm_device_init_no_vma_man
[10:44:50] ================== ttm_device_init_pools ==================
[10:44:50] [PASSED] No DMA allocations, no DMA32 required
[10:44:50] [PASSED] DMA allocations, DMA32 required
[10:44:50] [PASSED] No DMA allocations, DMA32 required
[10:44:50] [PASSED] DMA allocations, no DMA32 required
[10:44:50] ============== [PASSED] ttm_device_init_pools ==============
[10:44:50] =================== [PASSED] ttm_device ====================
[10:44:50] ================== ttm_pool (8 subtests) ===================
[10:44:50] ================== ttm_pool_alloc_basic ===================
[10:44:50] [PASSED] One page
[10:44:50] [PASSED] More than one page
[10:44:50] [PASSED] Above the allocation limit
[10:44:50] [PASSED] One page, with coherent DMA mappings enabled
[10:44:50] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[10:44:50] ============== [PASSED] ttm_pool_alloc_basic ===============
[10:44:50] ============== ttm_pool_alloc_basic_dma_addr ==============
[10:44:50] [PASSED] One page
[10:44:50] [PASSED] More than one page
[10:44:50] [PASSED] Above the allocation limit
[10:44:50] [PASSED] One page, with coherent DMA mappings enabled
[10:44:50] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[10:44:50] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[10:44:50] [PASSED] ttm_pool_alloc_order_caching_match
[10:44:50] [PASSED] ttm_pool_alloc_caching_mismatch
[10:44:50] [PASSED] ttm_pool_alloc_order_mismatch
[10:44:50] [PASSED] ttm_pool_free_dma_alloc
[10:44:50] [PASSED] ttm_pool_free_no_dma_alloc
[10:44:50] [PASSED] ttm_pool_fini_basic
[10:44:50] ==================== [PASSED] ttm_pool =====================
[10:44:50] ================ ttm_resource (8 subtests) =================
[10:44:50] ================= ttm_resource_init_basic =================
[10:44:50] [PASSED] Init resource in TTM_PL_SYSTEM
[10:44:50] [PASSED] Init resource in TTM_PL_VRAM
[10:44:50] [PASSED] Init resource in a private placement
[10:44:50] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[10:44:50] ============= [PASSED] ttm_resource_init_basic =============
[10:44:50] [PASSED] ttm_resource_init_pinned
[10:44:50] [PASSED] ttm_resource_fini_basic
[10:44:50] [PASSED] ttm_resource_manager_init_basic
[10:44:50] [PASSED] ttm_resource_manager_usage_basic
[10:44:50] [PASSED] ttm_resource_manager_set_used_basic
[10:44:50] [PASSED] ttm_sys_man_alloc_basic
[10:44:50] [PASSED] ttm_sys_man_free_basic
[10:44:50] ================== [PASSED] ttm_resource ===================
[10:44:50] =================== ttm_tt (15 subtests) ===================
[10:44:50] ==================== ttm_tt_init_basic ====================
[10:44:50] [PASSED] Page-aligned size
[10:44:50] [PASSED] Extra pages requested
[10:44:50] ================ [PASSED] ttm_tt_init_basic ================
[10:44:50] [PASSED] ttm_tt_init_misaligned
[10:44:50] [PASSED] ttm_tt_fini_basic
[10:44:50] [PASSED] ttm_tt_fini_sg
[10:44:50] [PASSED] ttm_tt_fini_shmem
[10:44:50] [PASSED] ttm_tt_create_basic
[10:44:50] [PASSED] ttm_tt_create_invalid_bo_type
[10:44:50] [PASSED] ttm_tt_create_ttm_exists
[10:44:50] [PASSED] ttm_tt_create_failed
[10:44:50] [PASSED] ttm_tt_destroy_basic
[10:44:50] [PASSED] ttm_tt_populate_null_ttm
[10:44:50] [PASSED] ttm_tt_populate_populated_ttm
[10:44:50] [PASSED] ttm_tt_unpopulate_basic
[10:44:50] [PASSED] ttm_tt_unpopulate_empty_ttm
[10:44:50] [PASSED] ttm_tt_swapin_basic
[10:44:50] ===================== [PASSED] ttm_tt ======================
[10:44:50] =================== ttm_bo (14 subtests) ===================
[10:44:50] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[10:44:50] [PASSED] Cannot be interrupted and sleeps
[10:44:50] [PASSED] Cannot be interrupted, locks straight away
[10:44:50] [PASSED] Can be interrupted, sleeps
[10:44:50] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[10:44:50] [PASSED] ttm_bo_reserve_locked_no_sleep
[10:44:50] [PASSED] ttm_bo_reserve_no_wait_ticket
[10:44:50] [PASSED] ttm_bo_reserve_double_resv
[10:44:50] [PASSED] ttm_bo_reserve_interrupted
[10:44:50] [PASSED] ttm_bo_reserve_deadlock
[10:44:50] [PASSED] ttm_bo_unreserve_basic
[10:44:50] [PASSED] ttm_bo_unreserve_pinned
[10:44:50] [PASSED] ttm_bo_unreserve_bulk
[10:44:50] [PASSED] ttm_bo_put_basic
[10:44:50] [PASSED] ttm_bo_put_shared_resv
[10:44:50] [PASSED] ttm_bo_pin_basic
[10:44:50] [ERROR] Test: ttm_bo: missing expected subtest!
[10:44:50]
[10:44:50] Pid: 230, comm: kunit_try_catch Tainted: G W N 6.11.0-rc6
[10:44:50] RIP: 0033:ttm_resource_move_to_lru_tail+0x7e/0x140
[10:44:50] RSP: 00000000a21c3ca8 EFLAGS: 00010206
[10:44:50] RAX: 0000000062025840 RBX: 0000000062329000 RCX: 00000000a21c3cf0
[10:44:50] RDX: 0000000000000000 RSI: 00000000622d8998 RDI: 00000000622d8960
[10:44:50] RBP: 00000000a2003d20 R08: 0000000062025840 R09: 0000000000000000
[10:44:50] R10: 00000000622d8960 R11: 00000000a0a37660 R12: 0000000062329000
[10:44:50] R13: 0000000060331340 R14: 0000000060331d80 R15: 0000000000000000
[10:44:50] Kernel panic - not syncing: Segfault with no mm
[10:44:50] [CRASHED]
[10:44:50] [ERROR] Test: ttm_bo: missing expected subtest!
[10:44:50] [CRASHED]
[10:44:50] [ERROR] Test: ttm_bo: missing subtest result line!
[10:44:50] # module: ttm_bo_test
[10:44:50] ===================== [CRASHED] ttm_bo =====================
[10:44:50] [ERROR] Test: main: missing expected subtest!
[10:44:50] [CRASHED]
[10:44:50] ============================================================
[10:44:50] Testing complete. Ran 68 tests: passed: 65, crashed: 3, errors: 4
The kernel seems to have crashed; you can decode the stack traces with:
$ scripts/decode_stacktrace.sh .kunit/vmlinux .kunit < .kunit/test.log | tee .kunit/decoded.log | /kernel/tools/testing/kunit/kunit.py parse
[10:44:50] Elapsed time: 11.771s total, 1.770s configuring, 9.530s building, 0.471s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 6+ messages in thread