* [PATCH 1/3] drm/ttm/tests: Add tests for ttm_resource and ttm_sys_man
2023-08-31 10:58 [PATCH 0/3] Improve test coverage of TTM Karolina Stolarek
@ 2023-08-31 10:58 ` Karolina Stolarek
2023-08-31 19:51 ` kernel test robot
2023-08-31 10:58 ` [PATCH 2/3] drm/ttm/tests: Add tests for ttm_tt Karolina Stolarek
2023-08-31 10:58 ` [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions Karolina Stolarek
2 siblings, 1 reply; 12+ messages in thread
From: Karolina Stolarek @ 2023-08-31 10:58 UTC (permalink / raw)
To: dri-devel; +Cc: Thomas Hellström, Karolina Stolarek, Christian König
Test initialization of ttm_resource using different memory domains.
Add tests for a system memory manager and functions that can be
tested without a fully-featured resource manager. Update
ttm_bo_kunit_init() to initialize BO's kref and reservation object.
Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
---
drivers/gpu/drm/ttm/tests/Makefile | 1 +
drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c | 23 ++
drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.h | 4 +
drivers/gpu/drm/ttm/tests/ttm_resource_test.c | 335 ++++++++++++++++++
4 files changed, 363 insertions(+)
create mode 100644 drivers/gpu/drm/ttm/tests/ttm_resource_test.c
diff --git a/drivers/gpu/drm/ttm/tests/Makefile b/drivers/gpu/drm/ttm/tests/Makefile
index ec87c4fc1ad5..ff62ff59e9d9 100644
--- a/drivers/gpu/drm/ttm/tests/Makefile
+++ b/drivers/gpu/drm/ttm/tests/Makefile
@@ -3,4 +3,5 @@
obj-$(CONFIG_DRM_TTM_KUNIT_TEST) += \
ttm_device_test.o \
ttm_pool_test.o \
+ ttm_resource_test.o\
ttm_kunit_helpers.o
diff --git a/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c b/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c
index 81661d8827aa..eccc59b981f8 100644
--- a/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c
+++ b/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c
@@ -38,10 +38,33 @@ struct ttm_buffer_object *ttm_bo_kunit_init(struct kunit *test,
bo->base = gem_obj;
bo->bdev = devs->ttm_dev;
+ kref_init(&bo->kref);
+
+ dma_resv_init(&bo->base._resv);
+ bo->base.resv = &bo->base._resv;
+
return bo;
}
EXPORT_SYMBOL_GPL(ttm_bo_kunit_init);
+struct ttm_place *ttm_place_kunit_init(struct kunit *test,
+ uint32_t mem_type, uint32_t flags,
+ size_t size)
+{
+ struct ttm_place *place;
+
+ place = kunit_kzalloc(test, sizeof(*place), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, place);
+
+ place->mem_type = mem_type;
+ place->flags = flags;
+ place->fpfn = size >> PAGE_SHIFT;
+ place->lpfn = place->fpfn + (size >> PAGE_SHIFT);
+
+ return place;
+}
+EXPORT_SYMBOL_GPL(ttm_place_kunit_init);
+
struct ttm_test_devices *ttm_test_devices_basic(struct kunit *test)
{
struct ttm_test_devices *devs;
diff --git a/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.h b/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.h
index e261e3660d0b..f38140f93c05 100644
--- a/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.h
+++ b/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.h
@@ -8,6 +8,7 @@
#include <drm/drm_drv.h>
#include <drm/ttm/ttm_device.h>
#include <drm/ttm/ttm_bo.h>
+#include <drm/ttm/ttm_placement.h>
#include <drm/drm_kunit_helpers.h>
#include <kunit/test.h>
@@ -28,6 +29,9 @@ int ttm_device_kunit_init(struct ttm_test_devices *priv,
struct ttm_buffer_object *ttm_bo_kunit_init(struct kunit *test,
struct ttm_test_devices *devs,
size_t size);
+struct ttm_place *ttm_place_kunit_init(struct kunit *test,
+ uint32_t mem_type, uint32_t flags,
+ size_t size);
struct ttm_test_devices *ttm_test_devices_basic(struct kunit *test);
struct ttm_test_devices *ttm_test_devices_all(struct kunit *test);
diff --git a/drivers/gpu/drm/ttm/tests/ttm_resource_test.c b/drivers/gpu/drm/ttm/tests/ttm_resource_test.c
new file mode 100644
index 000000000000..851cdc43dc37
--- /dev/null
+++ b/drivers/gpu/drm/ttm/tests/ttm_resource_test.c
@@ -0,0 +1,335 @@
+// SPDX-License-Identifier: GPL-2.0 AND MIT
+/*
+ * Copyright © 2023 Intel Corporation
+ */
+#include <drm/ttm/ttm_resource.h>
+
+#include "ttm_kunit_helpers.h"
+
+#define RES_SIZE SZ_4K
+#define TTM_PRIV_DUMMY_REG (TTM_NUM_MEM_TYPES - 1)
+
+struct ttm_resource_test_case {
+ const char *description;
+ uint32_t mem_type;
+ uint32_t flags;
+};
+
+struct ttm_resource_test_priv {
+ struct ttm_test_devices *devs;
+ struct ttm_buffer_object *bo;
+ struct ttm_place *place;
+};
+
+static const struct ttm_resource_manager_func ttm_resource_manager_mock_funcs = { };
+
+static int ttm_resource_test_init(struct kunit *test)
+{
+ struct ttm_resource_test_priv *priv;
+
+ priv = kunit_kzalloc(test, sizeof(*priv), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, priv);
+
+ priv->devs = ttm_test_devices_all(test);
+ KUNIT_ASSERT_NOT_NULL(test, priv->devs);
+
+ test->priv = priv;
+
+ return 0;
+}
+
+static void ttm_resource_test_fini(struct kunit *test)
+{
+ struct ttm_resource_test_priv *priv = test->priv;
+
+ ttm_test_devices_put(test, priv->devs);
+}
+
+static void ttm_init_test_mocks(struct kunit *test,
+ struct ttm_resource_test_priv *priv,
+ uint32_t mem_type, uint32_t flags)
+{
+ size_t size = RES_SIZE;
+
+ /* Make sure we have what we need for a good BO mock */
+ KUNIT_ASSERT_NOT_NULL(test, priv->devs->ttm_dev);
+
+ priv->bo = ttm_bo_kunit_init(test, priv->devs, size);
+ priv->place = ttm_place_kunit_init(test, mem_type, flags, size);
+}
+
+static void ttm_init_test_manager(struct kunit *test,
+ struct ttm_resource_test_priv *priv,
+ uint32_t mem_type)
+{
+ struct ttm_device *ttm_dev = priv->devs->ttm_dev;
+ struct ttm_resource_manager *man;
+ size_t size = SZ_16K;
+
+ man = kunit_kzalloc(test, sizeof(*man), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, man);
+
+ man->use_tt = false;
+ man->func = &ttm_resource_manager_mock_funcs;
+
+ ttm_resource_manager_init(man, ttm_dev, size);
+ ttm_set_driver_manager(ttm_dev, mem_type, man);
+ ttm_resource_manager_set_used(man, true);
+}
+
+static const struct ttm_resource_test_case ttm_resource_cases[] = {
+ {
+ .description = "Init resource in TTM_PL_SYSTEM",
+ .mem_type = TTM_PL_SYSTEM,
+ },
+ {
+ .description = "Init resource in TTM_PL_VRAM",
+ .mem_type = TTM_PL_VRAM,
+ },
+ {
+ .description = "Init resource in a private placement",
+ .mem_type = TTM_PRIV_DUMMY_REG,
+ },
+ {
+ .description = "Init resource in TTM_PL_SYSTEM, set placement flags",
+ .mem_type = TTM_PL_SYSTEM,
+ .flags = TTM_PL_FLAG_TOPDOWN,
+ },
+};
+
+static void ttm_resource_case_desc(const struct ttm_resource_test_case *t, char *desc)
+{
+ strscpy(desc, t->description, KUNIT_PARAM_DESC_SIZE);
+}
+
+KUNIT_ARRAY_PARAM(ttm_resource, ttm_resource_cases, ttm_resource_case_desc);
+
+static void ttm_resource_init_basic(struct kunit *test)
+{
+ const struct ttm_resource_test_case *params = test->param_value;
+ struct ttm_resource_test_priv *priv = test->priv;
+ struct ttm_resource *res;
+ struct ttm_buffer_object *bo;
+ struct ttm_place *place;
+ struct ttm_resource_manager *man;
+ uint64_t expected_usage;
+
+ ttm_init_test_mocks(test, priv, params->mem_type, params->flags);
+ bo = priv->bo;
+ place = priv->place;
+
+ if (params->mem_type > TTM_PL_SYSTEM)
+ ttm_init_test_manager(test, priv, params->mem_type);
+
+ res = kunit_kzalloc(test, sizeof(*res), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, res);
+
+ man = ttm_manager_type(priv->devs->ttm_dev, place->mem_type);
+ expected_usage = man->usage + RES_SIZE;
+
+ KUNIT_ASSERT_TRUE(test, list_empty(&man->lru[bo->priority]));
+
+ ttm_resource_init(bo, place, res);
+
+ KUNIT_ASSERT_EQ(test, res->start, 0);
+ KUNIT_ASSERT_EQ(test, res->size, RES_SIZE);
+ KUNIT_ASSERT_EQ(test, res->mem_type, place->mem_type);
+ KUNIT_ASSERT_EQ(test, res->placement, place->flags);
+ KUNIT_ASSERT_PTR_EQ(test, res->bo, bo);
+
+ KUNIT_ASSERT_NULL(test, res->bus.addr);
+ KUNIT_ASSERT_EQ(test, res->bus.offset, 0);
+ KUNIT_ASSERT_FALSE(test, res->bus.is_iomem);
+ KUNIT_ASSERT_EQ(test, res->bus.caching, ttm_cached);
+ KUNIT_ASSERT_EQ(test, man->usage, expected_usage);
+
+ KUNIT_ASSERT_TRUE(test, list_is_singular(&man->lru[bo->priority]));
+
+ ttm_resource_fini(man, res);
+}
+
+static void ttm_resource_init_pinned(struct kunit *test)
+{
+ struct ttm_resource_test_priv *priv = test->priv;
+ struct ttm_resource *res;
+ struct ttm_buffer_object *bo;
+ struct ttm_place *place;
+ struct ttm_resource_manager *man;
+
+ ttm_init_test_mocks(test, priv, TTM_PL_SYSTEM, 0);
+ bo = priv->bo;
+ place = priv->place;
+
+ man = ttm_manager_type(priv->devs->ttm_dev, place->mem_type);
+
+ res = kunit_kzalloc(test, sizeof(*res), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, res);
+ KUNIT_ASSERT_TRUE(test, list_empty(&bo->bdev->pinned));
+
+ 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));
+
+ ttm_bo_unpin(bo);
+ ttm_resource_fini(man, res);
+ dma_resv_unlock(bo->base.resv);
+
+ KUNIT_ASSERT_TRUE(test, list_empty(&bo->bdev->pinned));
+}
+
+static void ttm_resource_fini_basic(struct kunit *test)
+{
+ struct ttm_resource_test_priv *priv = test->priv;
+ struct ttm_resource *res;
+ struct ttm_buffer_object *bo;
+ struct ttm_place *place;
+ struct ttm_resource_manager *man;
+
+ ttm_init_test_mocks(test, priv, TTM_PL_SYSTEM, 0);
+ bo = priv->bo;
+ place = priv->place;
+
+ man = ttm_manager_type(priv->devs->ttm_dev, place->mem_type);
+
+ res = kunit_kzalloc(test, sizeof(*res), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, res);
+
+ ttm_resource_init(bo, place, res);
+ ttm_resource_fini(man, res);
+
+ KUNIT_ASSERT_TRUE(test, list_empty(&res->lru));
+ KUNIT_ASSERT_EQ(test, man->usage, 0);
+}
+
+static void ttm_resource_manager_init_basic(struct kunit *test)
+{
+ struct ttm_resource_test_priv *priv = test->priv;
+ struct ttm_resource_manager *man;
+ size_t size = SZ_16K;
+
+ man = kunit_kzalloc(test, sizeof(*man), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, man);
+
+ ttm_resource_manager_init(man, priv->devs->ttm_dev, size);
+
+ KUNIT_ASSERT_PTR_EQ(test, man->bdev, priv->devs->ttm_dev);
+ KUNIT_ASSERT_EQ(test, man->size, size);
+ KUNIT_ASSERT_EQ(test, man->usage, 0);
+ KUNIT_ASSERT_NULL(test, man->move);
+ KUNIT_ASSERT_NOT_NULL(test, &man->move_lock);
+
+ for (int i = 0; i < TTM_MAX_BO_PRIORITY; ++i)
+ KUNIT_ASSERT_TRUE(test, list_empty(&man->lru[i]));
+}
+
+static void ttm_resource_manager_usage_basic(struct kunit *test)
+{
+ struct ttm_resource_test_priv *priv = test->priv;
+ struct ttm_resource *res;
+ struct ttm_buffer_object *bo;
+ struct ttm_place *place;
+ struct ttm_resource_manager *man;
+ uint64_t actual_usage;
+
+ ttm_init_test_mocks(test, priv, TTM_PL_SYSTEM, TTM_PL_FLAG_TOPDOWN);
+ bo = priv->bo;
+ place = priv->place;
+
+ res = kunit_kzalloc(test, sizeof(*res), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, res);
+
+ man = ttm_manager_type(priv->devs->ttm_dev, place->mem_type);
+
+ ttm_resource_init(bo, place, res);
+ actual_usage = ttm_resource_manager_usage(man);
+
+ KUNIT_ASSERT_EQ(test, actual_usage, RES_SIZE);
+
+ ttm_resource_fini(man, res);
+}
+
+static void ttm_resource_manager_set_used_basic(struct kunit *test)
+{
+ struct ttm_resource_test_priv *priv = test->priv;
+ struct ttm_resource_manager *man;
+
+ man = ttm_manager_type(priv->devs->ttm_dev, TTM_PL_SYSTEM);
+ KUNIT_ASSERT_TRUE(test, man->use_type);
+
+ ttm_resource_manager_set_used(man, false);
+ KUNIT_ASSERT_FALSE(test, man->use_type);
+}
+
+static void ttm_sys_man_alloc_basic(struct kunit *test)
+{
+ struct ttm_resource_test_priv *priv = test->priv;
+ struct ttm_resource_manager *man;
+ struct ttm_buffer_object *bo;
+ struct ttm_place *place;
+ struct ttm_resource *res;
+ uint32_t mem_type = TTM_PL_SYSTEM;
+ int ret;
+
+ ttm_init_test_mocks(test, priv, mem_type, 0);
+ bo = priv->bo;
+ place = priv->place;
+
+ man = ttm_manager_type(priv->devs->ttm_dev, mem_type);
+ ret = man->func->alloc(man, bo, place, &res);
+
+ KUNIT_ASSERT_EQ(test, ret, 0);
+ KUNIT_ASSERT_EQ(test, res->size, RES_SIZE);
+ KUNIT_ASSERT_EQ(test, res->mem_type, mem_type);
+ KUNIT_ASSERT_PTR_EQ(test, res->bo, bo);
+
+ ttm_resource_fini(man, res);
+}
+
+static void ttm_sys_man_free_basic(struct kunit *test)
+{
+ struct ttm_resource_test_priv *priv = test->priv;
+ struct ttm_resource_manager *man;
+ struct ttm_buffer_object *bo;
+ struct ttm_place *place;
+ struct ttm_resource *res;
+ uint32_t mem_type = TTM_PL_SYSTEM;
+
+ ttm_init_test_mocks(test, priv, mem_type, 0);
+ bo = priv->bo;
+ place = priv->place;
+
+ res = kunit_kzalloc(test, sizeof(*res), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, res);
+
+ ttm_resource_alloc(bo, place, &res);
+
+ man = ttm_manager_type(priv->devs->ttm_dev, mem_type);
+ man->func->free(man, res);
+
+ KUNIT_ASSERT_TRUE(test, list_empty(&man->lru[bo->priority]));
+ KUNIT_ASSERT_EQ(test, man->usage, 0);
+}
+
+static struct kunit_case ttm_resource_test_cases[] = {
+ KUNIT_CASE_PARAM(ttm_resource_init_basic, ttm_resource_gen_params),
+ KUNIT_CASE(ttm_resource_init_pinned),
+ KUNIT_CASE(ttm_resource_fini_basic),
+ KUNIT_CASE(ttm_resource_manager_init_basic),
+ KUNIT_CASE(ttm_resource_manager_usage_basic),
+ KUNIT_CASE(ttm_resource_manager_set_used_basic),
+ KUNIT_CASE(ttm_sys_man_alloc_basic),
+ KUNIT_CASE(ttm_sys_man_free_basic),
+ {}
+};
+
+static struct kunit_suite ttm_resource_test_suite = {
+ .name = "ttm_resource",
+ .init = ttm_resource_test_init,
+ .exit = ttm_resource_test_fini,
+ .test_cases = ttm_resource_test_cases,
+};
+
+kunit_test_suites(&ttm_resource_test_suite);
+
+MODULE_LICENSE("GPL");
--
2.25.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 1/3] drm/ttm/tests: Add tests for ttm_resource and ttm_sys_man
2023-08-31 10:58 ` [PATCH 1/3] drm/ttm/tests: Add tests for ttm_resource and ttm_sys_man Karolina Stolarek
@ 2023-08-31 19:51 ` kernel test robot
0 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2023-08-31 19:51 UTC (permalink / raw)
To: Karolina Stolarek, dri-devel
Cc: Thomas Hellström, Karolina Stolarek, Christian König,
oe-kbuild-all
Hi Karolina,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-tip/drm-tip linus/master next-20230831]
[cannot apply to drm-intel/for-linux-next-fixes v6.5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Karolina-Stolarek/drm-ttm-tests-Add-tests-for-ttm_resource-and-ttm_sys_man/20230831-185954
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/9d3bd31bf434b172c13412f35abfbab71fd66238.1693479161.git.karolina.stolarek%40intel.com
patch subject: [PATCH 1/3] drm/ttm/tests: Add tests for ttm_resource and ttm_sys_man
config: openrisc-allmodconfig (https://download.01.org/0day-ci/archive/20230901/202309010358.50gYLkmw-lkp@intel.com/config)
compiler: or1k-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230901/202309010358.50gYLkmw-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309010358.50gYLkmw-lkp@intel.com/
All errors (new ones prefixed by >>, old ones prefixed by <<):
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_rr.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_wrr.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_lc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_wlc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_fo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_ovf.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_lblc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_lblcr.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_dh.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_sh.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_sed.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_nq.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_twos.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_ftp.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_pe_sip.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/nf_defrag_ipv4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/nf_reject_ipv4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/iptable_nat.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/iptable_raw.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ipip.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_gre.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_vti.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ah4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/esp4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/xfrm4_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tunnel4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/inet_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tcp_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/raw_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_algo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_user.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/unix/unix_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/ip6table_raw.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/ip6table_nat.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/nf_defrag_ipv6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/nf_reject_ipv6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/ah6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/esp6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/xfrm6_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/tunnel6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/mip6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/sit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/ip6_udp_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ar9331.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_brcm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_dsa.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_gswip.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_hellcreek.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ksz.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_lan9303.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_mtk.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_none.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ocelot.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ocelot_8021q.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_qca.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl4_a.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl8_4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rzn1_a5psw.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_sja1105.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_trailer.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_xrs700x.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/8021q/8021q.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/xdp/xsk_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_crypto_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_token_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/packet/af_packet.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/packet/af_packet_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/key/af_key.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/nf_conntrack_bridge.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtables.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtable_broute.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtable_filter.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtable_nat.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/bridge.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/sunrpc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/auth_gss/auth_rpcgss.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/auth_gss/rpcsec_gss_krb5.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/kcm/kcm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/atm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/lec.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/mpoa.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/sctp/sctp_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/tipc/diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/smc/smc_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/chnl_net.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_socket.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_usb.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/6lowpan/6lowpan.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ieee802154/6lowpan/ieee802154_6lowpan.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ieee802154/ieee802154_socket.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci_spi.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nfc_digital.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/vmw_vsock/vsock_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/hsr/hsr.o
>> ERROR: modpost: "ttm_resource_alloc" [drivers/gpu/drm/ttm/tests/ttm_resource_test.ko] undefined!
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/3] drm/ttm/tests: Add tests for ttm_tt
2023-08-31 10:58 [PATCH 0/3] Improve test coverage of TTM Karolina Stolarek
2023-08-31 10:58 ` [PATCH 1/3] drm/ttm/tests: Add tests for ttm_resource and ttm_sys_man Karolina Stolarek
@ 2023-08-31 10:58 ` Karolina Stolarek
2023-09-01 3:41 ` kernel test robot
2023-08-31 10:58 ` [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions Karolina Stolarek
2 siblings, 1 reply; 12+ messages in thread
From: Karolina Stolarek @ 2023-08-31 10:58 UTC (permalink / raw)
To: dri-devel; +Cc: Thomas Hellström, Karolina Stolarek, Christian König
Test initialization, creation and destruction of ttm_tt instances.
Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
---
drivers/gpu/drm/ttm/tests/Makefile | 1 +
drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c | 20 ++
drivers/gpu/drm/ttm/tests/ttm_tt_test.c | 277 ++++++++++++++++++
3 files changed, 298 insertions(+)
create mode 100644 drivers/gpu/drm/ttm/tests/ttm_tt_test.c
diff --git a/drivers/gpu/drm/ttm/tests/Makefile b/drivers/gpu/drm/ttm/tests/Makefile
index ff62ff59e9d9..cf8ee2999b33 100644
--- a/drivers/gpu/drm/ttm/tests/Makefile
+++ b/drivers/gpu/drm/ttm/tests/Makefile
@@ -4,4 +4,5 @@ obj-$(CONFIG_DRM_TTM_KUNIT_TEST) += \
ttm_device_test.o \
ttm_pool_test.o \
ttm_resource_test.o\
+ ttm_tt_test.o\
ttm_kunit_helpers.o
diff --git a/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c b/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c
index eccc59b981f8..112381153bbf 100644
--- a/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c
+++ b/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c
@@ -2,9 +2,29 @@
/*
* Copyright © 2023 Intel Corporation
*/
+#include <drm/ttm/ttm_tt.h>
+
#include "ttm_kunit_helpers.h"
+static struct ttm_tt *ttm_tt_simple_create(struct ttm_buffer_object *bo,
+ uint32_t page_flags)
+{
+ struct ttm_tt *tt;
+
+ tt = kzalloc(sizeof(*tt), GFP_KERNEL);
+ ttm_tt_init(tt, bo, 0, ttm_cached, 0);
+
+ return tt;
+}
+
+static void ttm_tt_simple_destroy(struct ttm_device *bdev, struct ttm_tt *ttm)
+{
+ kfree(ttm);
+}
+
struct ttm_device_funcs ttm_dev_funcs = {
+ .ttm_tt_create = ttm_tt_simple_create,
+ .ttm_tt_destroy = ttm_tt_simple_destroy,
};
EXPORT_SYMBOL_GPL(ttm_dev_funcs);
diff --git a/drivers/gpu/drm/ttm/tests/ttm_tt_test.c b/drivers/gpu/drm/ttm/tests/ttm_tt_test.c
new file mode 100644
index 000000000000..1300ca93e523
--- /dev/null
+++ b/drivers/gpu/drm/ttm/tests/ttm_tt_test.c
@@ -0,0 +1,277 @@
+// SPDX-License-Identifier: GPL-2.0 AND MIT
+/*
+ * Copyright © 2023 Intel Corporation
+ */
+#include <linux/mm.h>
+#include <linux/shmem_fs.h>
+
+#include <drm/ttm/ttm_tt.h>
+
+#include "ttm_kunit_helpers.h"
+
+#define BO_SIZE SZ_4K
+
+struct ttm_tt_test_case {
+ const char *description;
+ uint32_t size;
+ uint32_t extra_pages_num;
+};
+
+static int ttm_tt_test_init(struct kunit *test)
+{
+ struct ttm_test_devices *priv;
+
+ priv = kunit_kzalloc(test, sizeof(*priv), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, priv);
+
+ priv = ttm_test_devices_all(test);
+ test->priv = priv;
+
+ return 0;
+}
+
+static const struct ttm_tt_test_case ttm_tt_init_basic_cases[] = {
+ {
+ .description = "Page-aligned size",
+ .size = SZ_4K,
+ },
+ {
+ .description = "Misaligned size",
+ .size = SZ_8K + 1,
+ },
+ {
+ .description = "Extra pages requested",
+ .size = SZ_4K,
+ .extra_pages_num = 1,
+ },
+};
+
+static void ttm_tt_init_case_desc(const struct ttm_tt_test_case *t,
+ char *desc)
+{
+ strscpy(desc, t->description, KUNIT_PARAM_DESC_SIZE);
+}
+
+KUNIT_ARRAY_PARAM(ttm_tt_init_basic, ttm_tt_init_basic_cases,
+ ttm_tt_init_case_desc);
+
+static void ttm_tt_init_basic(struct kunit *test)
+{
+ const struct ttm_tt_test_case *params = test->param_value;
+ struct ttm_buffer_object *bo;
+ struct ttm_tt *tt;
+ uint32_t page_flags = TTM_TT_FLAG_ZERO_ALLOC;
+ enum ttm_caching caching = ttm_cached;
+ uint32_t extra_pages = params->extra_pages_num;
+ int num_pages = PAGE_ALIGN(params->size) / PAGE_SIZE;
+ int err;
+
+ tt = kunit_kzalloc(test, sizeof(*tt), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, tt);
+
+ bo = ttm_bo_kunit_init(test, test->priv, params->size);
+
+ err = ttm_tt_init(tt, bo, page_flags, caching, extra_pages);
+ KUNIT_ASSERT_EQ(test, err, 0);
+
+ KUNIT_ASSERT_EQ(test, tt->num_pages, num_pages + extra_pages);
+
+ KUNIT_ASSERT_EQ(test, tt->page_flags, page_flags);
+ KUNIT_ASSERT_EQ(test, tt->caching, caching);
+
+ KUNIT_ASSERT_NULL(test, tt->dma_address);
+ KUNIT_ASSERT_NULL(test, tt->swap_storage);
+}
+
+static void ttm_tt_fini_basic(struct kunit *test)
+{
+ struct ttm_buffer_object *bo;
+ struct ttm_tt *tt;
+ enum ttm_caching caching = ttm_cached;
+ int err;
+
+ tt = kunit_kzalloc(test, sizeof(*tt), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, tt);
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ err = ttm_tt_init(tt, bo, 0, caching, 0);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ KUNIT_ASSERT_NOT_NULL(test, tt->pages);
+
+ ttm_tt_fini(tt);
+ KUNIT_ASSERT_NULL(test, tt->pages);
+}
+
+static void ttm_tt_fini_sg(struct kunit *test)
+{
+ struct ttm_buffer_object *bo;
+ struct ttm_tt *tt;
+ enum ttm_caching caching = ttm_cached;
+ int err;
+
+ tt = kunit_kzalloc(test, sizeof(*tt), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, tt);
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ err = ttm_sg_tt_init(tt, bo, 0, caching);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ KUNIT_ASSERT_NOT_NULL(test, tt->dma_address);
+
+ ttm_tt_fini(tt);
+ KUNIT_ASSERT_NULL(test, tt->dma_address);
+}
+
+static void ttm_tt_fini_shmem(struct kunit *test)
+{
+ struct ttm_buffer_object *bo;
+ struct ttm_tt *tt;
+ struct file *shmem;
+ enum ttm_caching caching = ttm_cached;
+ int err;
+
+ tt = kunit_kzalloc(test, sizeof(*tt), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, tt);
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ err = ttm_tt_init(tt, bo, 0, caching, 0);
+ KUNIT_ASSERT_EQ(test, err, 0);
+
+ shmem = shmem_file_setup("ttm swap", BO_SIZE, 0);
+ tt->swap_storage = shmem;
+
+ ttm_tt_fini(tt);
+ KUNIT_ASSERT_NULL(test, tt->swap_storage);
+}
+
+static void ttm_tt_create_basic(struct kunit *test)
+{
+ struct ttm_buffer_object *bo;
+ int err;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+ bo->type = ttm_bo_type_device;
+
+ dma_resv_lock(bo->base.resv, NULL);
+ err = ttm_tt_create(bo, false);
+ dma_resv_unlock(bo->base.resv);
+
+ KUNIT_EXPECT_EQ(test, err, 0);
+ KUNIT_EXPECT_NOT_NULL(test, bo->ttm);
+
+ /* Free manually, as it was allocated outside of KUnit */
+ kfree(bo->ttm);
+}
+
+static void ttm_tt_create_invalid_bo_type(struct kunit *test)
+{
+ struct ttm_buffer_object *bo;
+ int err;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+ bo->type = ttm_bo_type_sg + 1;
+
+ dma_resv_lock(bo->base.resv, NULL);
+ err = ttm_tt_create(bo, false);
+ dma_resv_unlock(bo->base.resv);
+
+ KUNIT_EXPECT_EQ(test, err, -EINVAL);
+ KUNIT_EXPECT_NULL(test, bo->ttm);
+}
+
+static void ttm_tt_create_ttm_exists(struct kunit *test)
+{
+ struct ttm_buffer_object *bo;
+ struct ttm_tt *tt;
+ enum ttm_caching caching = ttm_cached;
+ int err;
+
+ tt = kunit_kzalloc(test, sizeof(*tt), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, tt);
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ err = ttm_tt_init(tt, bo, 0, caching, 0);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ bo->ttm = tt;
+
+ dma_resv_lock(bo->base.resv, NULL);
+ err = ttm_tt_create(bo, false);
+ dma_resv_unlock(bo->base.resv);
+
+ /* Expect to keep the previous TTM */
+ KUNIT_ASSERT_EQ(test, err, 0);
+ KUNIT_ASSERT_PTR_EQ(test, tt, bo->ttm);
+}
+
+static struct ttm_tt *ttm_tt_null_create(struct ttm_buffer_object *bo,
+ uint32_t page_flags)
+{
+ return NULL;
+}
+
+struct ttm_device_funcs ttm_dev_empty_funcs = {
+ .ttm_tt_create = ttm_tt_null_create,
+};
+
+static void ttm_tt_create_failed(struct kunit *test)
+{
+ const struct ttm_test_devices *devs = test->priv;
+ struct ttm_buffer_object *bo;
+ int err;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ /* Update ttm_device_funcs so we don't alloc ttm_tt */
+ devs->ttm_dev->funcs = &ttm_dev_empty_funcs;
+
+ dma_resv_lock(bo->base.resv, NULL);
+ err = ttm_tt_create(bo, false);
+ dma_resv_unlock(bo->base.resv);
+
+ KUNIT_ASSERT_EQ(test, err, -ENOMEM);
+}
+
+static void ttm_tt_destroy_basic(struct kunit *test)
+{
+ const struct ttm_test_devices *devs = test->priv;
+ struct ttm_buffer_object *bo;
+ int err;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ dma_resv_lock(bo->base.resv, NULL);
+ err = ttm_tt_create(bo, false);
+ dma_resv_unlock(bo->base.resv);
+
+ KUNIT_ASSERT_EQ(test, err, 0);
+ KUNIT_ASSERT_NOT_NULL(test, bo->ttm);
+
+ ttm_tt_destroy(devs->ttm_dev, bo->ttm);
+}
+
+static struct kunit_case ttm_tt_test_cases[] = {
+ KUNIT_CASE_PARAM(ttm_tt_init_basic, ttm_tt_init_basic_gen_params),
+ KUNIT_CASE(ttm_tt_fini_basic),
+ KUNIT_CASE(ttm_tt_fini_sg),
+ KUNIT_CASE(ttm_tt_fini_shmem),
+ KUNIT_CASE(ttm_tt_create_basic),
+ KUNIT_CASE(ttm_tt_create_invalid_bo_type),
+ KUNIT_CASE(ttm_tt_create_ttm_exists),
+ KUNIT_CASE(ttm_tt_create_failed),
+ KUNIT_CASE(ttm_tt_destroy_basic),
+ {}
+};
+
+static struct kunit_suite ttm_tt_test_suite = {
+ .name = "ttm_tt",
+ .init = ttm_tt_test_init,
+ .exit = ttm_test_devices_fini,
+ .test_cases = ttm_tt_test_cases,
+};
+
+kunit_test_suites(&ttm_tt_test_suite);
+
+MODULE_LICENSE("GPL");
--
2.25.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 2/3] drm/ttm/tests: Add tests for ttm_tt
2023-08-31 10:58 ` [PATCH 2/3] drm/ttm/tests: Add tests for ttm_tt Karolina Stolarek
@ 2023-09-01 3:41 ` kernel test robot
0 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2023-09-01 3:41 UTC (permalink / raw)
To: Karolina Stolarek, dri-devel
Cc: Thomas Hellström, Karolina Stolarek, Christian König,
oe-kbuild-all
Hi Karolina,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-tip/drm-tip linus/master next-20230831]
[cannot apply to drm-intel/for-linux-next-fixes v6.5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Karolina-Stolarek/drm-ttm-tests-Add-tests-for-ttm_resource-and-ttm_sys_man/20230831-185954
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/8981ec2479d57bbe60be7dacff11093e23739763.1693479161.git.karolina.stolarek%40intel.com
patch subject: [PATCH 2/3] drm/ttm/tests: Add tests for ttm_tt
config: openrisc-allmodconfig (https://download.01.org/0day-ci/archive/20230901/202309011134.bwvpuyOj-lkp@intel.com/config)
compiler: or1k-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230901/202309011134.bwvpuyOj-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309011134.bwvpuyOj-lkp@intel.com/
All errors (new ones prefixed by >>, old ones prefixed by <<):
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_wrr.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_lc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_wlc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_fo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_ovf.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_lblc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_lblcr.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_dh.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_sh.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_sed.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_nq.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_twos.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_ftp.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_pe_sip.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/nf_defrag_ipv4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/nf_reject_ipv4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/iptable_nat.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/iptable_raw.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ipip.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_gre.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_vti.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ah4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/esp4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/xfrm4_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tunnel4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/inet_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tcp_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/raw_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_algo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_user.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/unix/unix_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/ip6table_raw.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/ip6table_nat.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/nf_defrag_ipv6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/nf_reject_ipv6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/ah6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/esp6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/xfrm6_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/tunnel6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/mip6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/sit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/ip6_udp_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ar9331.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_brcm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_dsa.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_gswip.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_hellcreek.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ksz.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_lan9303.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_mtk.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_none.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ocelot.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ocelot_8021q.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_qca.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl4_a.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl8_4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rzn1_a5psw.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_sja1105.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_trailer.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_xrs700x.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/8021q/8021q.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/xdp/xsk_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_crypto_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_token_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/packet/af_packet.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/packet/af_packet_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/key/af_key.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/nf_conntrack_bridge.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtables.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtable_broute.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtable_filter.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtable_nat.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/bridge.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/sunrpc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/auth_gss/auth_rpcgss.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/auth_gss/rpcsec_gss_krb5.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/kcm/kcm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/atm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/lec.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/mpoa.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/sctp/sctp_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/tipc/diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/smc/smc_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/chnl_net.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_socket.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_usb.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/6lowpan/6lowpan.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ieee802154/6lowpan/ieee802154_6lowpan.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ieee802154/ieee802154_socket.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci_spi.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nfc_digital.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/vmw_vsock/vsock_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/hsr/hsr.o
ERROR: modpost: "ttm_resource_alloc" [drivers/gpu/drm/ttm/tests/ttm_resource_test.ko] undefined!
>> ERROR: modpost: "ttm_tt_create" [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
>> ERROR: modpost: "ttm_tt_destroy" [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions
2023-08-31 10:58 [PATCH 0/3] Improve test coverage of TTM Karolina Stolarek
2023-08-31 10:58 ` [PATCH 1/3] drm/ttm/tests: Add tests for ttm_resource and ttm_sys_man Karolina Stolarek
2023-08-31 10:58 ` [PATCH 2/3] drm/ttm/tests: Add tests for ttm_tt Karolina Stolarek
@ 2023-08-31 10:58 ` Karolina Stolarek
2023-09-01 12:04 ` kernel test robot
2 siblings, 1 reply; 12+ messages in thread
From: Karolina Stolarek @ 2023-08-31 10:58 UTC (permalink / raw)
To: dri-devel; +Cc: Thomas Hellström, Karolina Stolarek, Christian König
Test reservation and release of TTM buffer objects. Add tests to check
pin and unpin operations.
Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
---
drivers/gpu/drm/ttm/tests/Makefile | 1 +
drivers/gpu/drm/ttm/tests/ttm_bo_test.c | 616 ++++++++++++++++++
drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c | 5 +
3 files changed, 622 insertions(+)
create mode 100644 drivers/gpu/drm/ttm/tests/ttm_bo_test.c
diff --git a/drivers/gpu/drm/ttm/tests/Makefile b/drivers/gpu/drm/ttm/tests/Makefile
index cf8ee2999b33..cc764a886118 100644
--- a/drivers/gpu/drm/ttm/tests/Makefile
+++ b/drivers/gpu/drm/ttm/tests/Makefile
@@ -5,4 +5,5 @@ obj-$(CONFIG_DRM_TTM_KUNIT_TEST) += \
ttm_pool_test.o \
ttm_resource_test.o\
ttm_tt_test.o\
+ ttm_bo_test.o \
ttm_kunit_helpers.o
diff --git a/drivers/gpu/drm/ttm/tests/ttm_bo_test.c b/drivers/gpu/drm/ttm/tests/ttm_bo_test.c
new file mode 100644
index 000000000000..c8dc1004a391
--- /dev/null
+++ b/drivers/gpu/drm/ttm/tests/ttm_bo_test.c
@@ -0,0 +1,616 @@
+// SPDX-License-Identifier: GPL-2.0 AND MIT
+/*
+ * Copyright © 2023 Intel Corporation
+ */
+#include <linux/dma-resv.h>
+#include <linux/kthread.h>
+#include <linux/delay.h>
+#include <linux/timer.h>
+#include <linux/jiffies.h>
+#include <linux/mutex.h>
+#include <linux/ww_mutex.h>
+
+#include <drm/ttm/ttm_resource.h>
+#include <drm/ttm/ttm_placement.h>
+#include <drm/ttm/ttm_tt.h>
+
+#include "ttm_kunit_helpers.h"
+
+#define BO_SIZE SZ_8K
+
+struct ttm_bo_test_case {
+ const char *description;
+ bool interruptible;
+ bool no_wait;
+};
+
+static const struct ttm_bo_test_case ttm_bo_reserved_cases[] = {
+ {
+ .description = "Cannot be interrupted and sleeps",
+ .interruptible = false,
+ .no_wait = false,
+ },
+ {
+ .description = "Cannot be interrupted, locks straight away",
+ .interruptible = false,
+ .no_wait = true,
+ },
+ {
+ .description = "Can be interrupted, sleeps",
+ .interruptible = true,
+ .no_wait = false,
+ },
+};
+
+static void ttm_bo_init_case_desc(const struct ttm_bo_test_case *t,
+ char *desc)
+{
+ strscpy(desc, t->description, KUNIT_PARAM_DESC_SIZE);
+}
+
+KUNIT_ARRAY_PARAM(ttm_bo_reserve, ttm_bo_reserved_cases, ttm_bo_init_case_desc);
+
+static void ttm_bo_reserve_optimistic_no_ticket(struct kunit *test)
+{
+ const struct ttm_bo_test_case *params = test->param_value;
+ struct ttm_buffer_object *bo;
+ int err;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ err = ttm_bo_reserve(bo, params->interruptible, params->no_wait, NULL);
+ KUNIT_ASSERT_EQ(test, err, 0);
+
+ dma_resv_unlock(bo->base.resv);
+}
+
+static void ttm_bo_reserve_locked_no_sleep(struct kunit *test)
+{
+ struct ttm_buffer_object *bo;
+ bool interruptible = false;
+ bool no_wait = true;
+ int err;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ /* Let's lock it beforehand */
+ dma_resv_lock(bo->base.resv, NULL);
+
+ err = ttm_bo_reserve(bo, interruptible, no_wait, NULL);
+ dma_resv_unlock(bo->base.resv);
+
+ KUNIT_ASSERT_EQ(test, err, -EBUSY);
+}
+
+static void ttm_bo_reserve_no_wait_ticket(struct kunit *test)
+{
+ struct ttm_buffer_object *bo;
+ struct ww_acquire_ctx ctx;
+ bool interruptible = false;
+ bool no_wait = true;
+ int err;
+
+ ww_acquire_init(&ctx, &reservation_ww_class);
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ err = ttm_bo_reserve(bo, interruptible, no_wait, &ctx);
+ KUNIT_ASSERT_EQ(test, err, -EBUSY);
+
+ ww_acquire_fini(&ctx);
+}
+
+static void ttm_bo_reserve_double_resv(struct kunit *test)
+{
+ struct ttm_buffer_object *bo;
+ struct ww_acquire_ctx ctx;
+ bool interruptible = false;
+ bool no_wait = false;
+ int err;
+
+ ww_acquire_init(&ctx, &reservation_ww_class);
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ err = ttm_bo_reserve(bo, interruptible, no_wait, &ctx);
+ KUNIT_ASSERT_EQ(test, err, 0);
+
+ err = ttm_bo_reserve(bo, interruptible, no_wait, &ctx);
+
+ ww_acquire_fini(&ctx);
+ dma_resv_unlock(bo->base.resv);
+
+ KUNIT_ASSERT_EQ(test, err, -EALREADY);
+}
+
+/*
+ * A test case heavily inspired by ww_test_edeadlk_normal(). Checks
+ * if -EDEADLK is properly propagated by ttm_bo_reserve()
+ */
+static void ttm_bo_reserve_deadlock(struct kunit *test)
+{
+ struct ttm_buffer_object *bo1, *bo2;
+ struct ww_acquire_ctx ctx1, ctx2;
+ bool interruptible = false;
+ bool no_wait = false;
+ int err;
+
+ bo1 = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+ bo2 = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ mutex_lock(&bo2->base.resv->lock.base);
+ bo2->base.resv->lock.ctx = &ctx2;
+
+ ww_acquire_init(&ctx1, &reservation_ww_class);
+ ctx2 = ctx1;
+ ctx2.stamp--; /* Make the context holding the lock younger */
+
+ err = ttm_bo_reserve(bo1, interruptible, no_wait, &ctx1);
+ KUNIT_ASSERT_EQ(test, err, 0);
+
+ err = ttm_bo_reserve(bo2, interruptible, no_wait, &ctx1);
+ KUNIT_ASSERT_EQ(test, err, -EDEADLK);
+
+ mutex_unlock(&bo2->base.resv->lock.base);
+
+ dma_resv_unlock(bo1->base.resv);
+
+ ww_acquire_fini(&ctx1);
+ ww_acquire_fini(&ctx2);
+}
+
+struct signal_timer {
+ struct timer_list timer;
+ struct ww_acquire_ctx *ctx;
+};
+
+static void signal_for_ttm_bo_reserve(struct timer_list *t)
+{
+ struct signal_timer *s_timer = from_timer(s_timer, t, timer);
+ struct task_struct *task = s_timer->ctx->task;
+
+ do_send_sig_info(SIGTERM, SEND_SIG_PRIV, task, PIDTYPE_PID);
+}
+
+static int threaded_ttm_bo_reserve(void *arg)
+{
+ struct ttm_buffer_object *bo = arg;
+ struct signal_timer s_timer;
+ struct ww_acquire_ctx ctx;
+ bool interruptible = true;
+ bool no_wait = false;
+ int err;
+
+ ww_acquire_init(&ctx, &reservation_ww_class);
+
+ /* Prepare a signal that will interrupt the reservation attempt */
+ timer_setup_on_stack(&s_timer.timer, &signal_for_ttm_bo_reserve, 0);
+ s_timer.ctx = &ctx;
+
+ mod_timer(&s_timer.timer, msecs_to_jiffies(100));
+
+ err = ttm_bo_reserve(bo, interruptible, no_wait, &ctx);
+
+ timer_delete_sync(&s_timer.timer);
+ destroy_timer_on_stack(&s_timer.timer);
+
+ ww_acquire_fini(&ctx);
+
+ return err;
+}
+
+static void ttm_bo_reserve_interrupted(struct kunit *test)
+{
+ struct ttm_buffer_object *bo;
+ struct task_struct *task;
+ int err;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ task = kthread_create(threaded_ttm_bo_reserve, bo, "ttm-bo-reserve");
+
+ if (IS_ERR(task))
+ KUNIT_FAIL(test, "Couldn't create ttm bo reserve task\n");
+
+ /* Take a lock so the threaded reserve has to wait */
+ mutex_lock(&bo->base.resv->lock.base);
+
+ wake_up_process(task);
+ msleep(20);
+ err = kthread_stop(task);
+
+ mutex_unlock(&bo->base.resv->lock.base);
+
+ KUNIT_ASSERT_EQ(test, err, -ERESTARTSYS);
+}
+
+static void ttm_bo_unreserve_basic(struct kunit *test)
+{
+ struct ttm_test_devices *priv = test->priv;
+ struct ttm_buffer_object *bo;
+ struct ttm_device *ttm_dev;
+ struct ttm_resource *res1, *res2;
+ struct ttm_place *place;
+ struct ttm_resource_manager *man;
+ unsigned int bo_prio = TTM_MAX_BO_PRIORITY - 1;
+ uint32_t mem_type = TTM_PL_SYSTEM;
+ int err;
+
+ place = ttm_place_kunit_init(test, mem_type, 0, BO_SIZE);
+
+ ttm_dev = kunit_kzalloc(test, sizeof(*ttm_dev), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, ttm_dev);
+
+ err = ttm_device_kunit_init(priv, ttm_dev, false, false);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ priv->ttm_dev = ttm_dev;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+ bo->priority = bo_prio;
+
+ err = ttm_resource_alloc(bo, place, &res1);
+ KUNIT_ASSERT_EQ(test, err, 0);
+
+ bo->resource = res1;
+
+ /* Add a dummy resource to populate LRU */
+ ttm_resource_alloc(bo, place, &res2);
+
+ dma_resv_lock(bo->base.resv, NULL);
+ ttm_bo_unreserve(bo);
+
+ man = ttm_manager_type(priv->ttm_dev, mem_type);
+ KUNIT_ASSERT_EQ(test,
+ list_is_last(&res1->lru, &man->lru[bo->priority]), 1);
+
+ ttm_resource_free(bo, &res2);
+ ttm_resource_free(bo, &res1);
+}
+
+static void ttm_bo_unreserve_pinned(struct kunit *test)
+{
+ struct ttm_test_devices *priv = test->priv;
+ struct ttm_buffer_object *bo;
+ struct ttm_device *ttm_dev;
+ struct ttm_resource *res1, *res2;
+ struct ttm_place *place;
+ uint32_t mem_type = TTM_PL_SYSTEM;
+ int err;
+
+ ttm_dev = kunit_kzalloc(test, sizeof(*ttm_dev), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, ttm_dev);
+
+ err = ttm_device_kunit_init(priv, ttm_dev, false, false);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ priv->ttm_dev = ttm_dev;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+ place = ttm_place_kunit_init(test, mem_type, 0, BO_SIZE);
+
+ dma_resv_lock(bo->base.resv, NULL);
+ ttm_bo_pin(bo);
+
+ err = ttm_resource_alloc(bo, place, &res1);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ bo->resource = res1;
+
+ /* Add a dummy resource to the pinned list */
+ err = ttm_resource_alloc(bo, place, &res2);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ KUNIT_ASSERT_EQ(test,
+ list_is_last(&res2->lru, &priv->ttm_dev->pinned), 1);
+
+ ttm_bo_unreserve(bo);
+ KUNIT_ASSERT_EQ(test,
+ list_is_last(&res1->lru, &priv->ttm_dev->pinned), 1);
+
+ ttm_resource_free(bo, &res1);
+ ttm_resource_free(bo, &res2);
+}
+
+static void ttm_bo_unreserve_bulk(struct kunit *test)
+{
+ struct ttm_test_devices *priv = test->priv;
+ struct ttm_lru_bulk_move lru_bulk_move;
+ struct ttm_lru_bulk_move_pos *pos;
+ struct ttm_buffer_object *bo1, *bo2;
+ struct ttm_resource *res1, *res2;
+ struct ttm_device *ttm_dev;
+ struct ttm_place *place;
+ uint32_t mem_type = TTM_PL_SYSTEM;
+ unsigned int bo_priority = 0;
+ int err;
+
+ ttm_lru_bulk_move_init(&lru_bulk_move);
+
+ place = ttm_place_kunit_init(test, mem_type, 0, BO_SIZE);
+
+ ttm_dev = kunit_kzalloc(test, sizeof(*ttm_dev), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, ttm_dev);
+
+ err = ttm_device_kunit_init(priv, ttm_dev, false, false);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ priv->ttm_dev = ttm_dev;
+
+ bo1 = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+ bo2 = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ dma_resv_lock(bo1->base.resv, NULL);
+ ttm_bo_set_bulk_move(bo1, &lru_bulk_move);
+ dma_resv_unlock(bo1->base.resv);
+
+ err = ttm_resource_alloc(bo1, place, &res1);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ bo1->resource = res1;
+
+ dma_resv_lock(bo2->base.resv, NULL);
+ ttm_bo_set_bulk_move(bo2, &lru_bulk_move);
+ dma_resv_unlock(bo2->base.resv);
+
+ err = ttm_resource_alloc(bo2, place, &res2);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ bo2->resource = res2;
+
+ ttm_bo_reserve(bo1, false, false, NULL);
+ ttm_bo_unreserve(bo1);
+
+ pos = &lru_bulk_move.pos[mem_type][bo_priority];
+ KUNIT_ASSERT_PTR_EQ(test, res1, pos->last);
+
+ ttm_resource_free(bo1, &res1);
+ ttm_resource_free(bo2, &res2);
+}
+
+static void ttm_bo_put_basic(struct kunit *test)
+{
+ struct ttm_test_devices *priv = test->priv;
+ struct ttm_buffer_object *bo;
+ struct ttm_resource *res;
+ struct ttm_device *ttm_dev;
+ struct ttm_place *place;
+ uint32_t mem_type = TTM_PL_SYSTEM;
+ int err;
+
+ place = ttm_place_kunit_init(test, mem_type, 0, BO_SIZE);
+
+ ttm_dev = kunit_kzalloc(test, sizeof(*ttm_dev), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, ttm_dev);
+
+ err = ttm_device_kunit_init(priv, ttm_dev, false, false);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ priv->ttm_dev = ttm_dev;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+ bo->type = ttm_bo_type_device;
+
+ err = ttm_resource_alloc(bo, place, &res);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ bo->resource = res;
+
+ dma_resv_lock(bo->base.resv, NULL);
+ err = ttm_tt_create(bo, false);
+ dma_resv_unlock(bo->base.resv);
+ KUNIT_EXPECT_EQ(test, err, 0);
+
+ ttm_bo_put(bo);
+}
+
+static const char *mock_name(struct dma_fence *f)
+{
+ return "kunit-ttm-bo-put";
+}
+
+static const struct dma_fence_ops mock_fence_ops = {
+ .get_driver_name = mock_name,
+ .get_timeline_name = mock_name,
+};
+
+static void ttm_bo_put_shared_resv(struct kunit *test)
+{
+ struct ttm_test_devices *priv = test->priv;
+ struct ttm_buffer_object *bo;
+ struct dma_resv *external_resv;
+ struct dma_fence *fence;
+ /* A dummy DMA fence lock */
+ spinlock_t fence_lock;
+ struct ttm_device *ttm_dev;
+ int err;
+
+ ttm_dev = kunit_kzalloc(test, sizeof(*ttm_dev), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, ttm_dev);
+
+ err = ttm_device_kunit_init(priv, ttm_dev, false, false);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ priv->ttm_dev = ttm_dev;
+
+ external_resv = kunit_kzalloc(test, sizeof(*ttm_dev), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, external_resv);
+
+ dma_resv_init(external_resv);
+
+ fence = kunit_kzalloc(test, sizeof(*fence), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, fence);
+
+ spin_lock_init(&fence_lock);
+ dma_fence_init(fence, &mock_fence_ops, &fence_lock, 0, 0);
+
+ dma_resv_lock(external_resv, NULL);
+ dma_resv_reserve_fences(external_resv, 1);
+ dma_resv_add_fence(external_resv, fence, DMA_RESV_USAGE_BOOKKEEP);
+ dma_resv_unlock(external_resv);
+
+ dma_fence_signal(fence);
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+ bo->type = ttm_bo_type_device;
+ bo->base.resv = external_resv;
+
+ ttm_bo_put(bo);
+}
+
+static void ttm_bo_pin_basic(struct kunit *test)
+{
+ struct ttm_test_devices *priv = test->priv;
+ struct ttm_buffer_object *bo;
+ struct ttm_device *ttm_dev;
+ unsigned int no_pins = 3;
+ int err;
+
+ ttm_dev = kunit_kzalloc(test, sizeof(*ttm_dev), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, ttm_dev);
+
+ err = ttm_device_kunit_init(priv, ttm_dev, false, false);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ priv->ttm_dev = ttm_dev;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ for (int i = 0; i < no_pins; i++) {
+ dma_resv_lock(bo->base.resv, NULL);
+ ttm_bo_pin(bo);
+ dma_resv_unlock(bo->base.resv);
+ }
+
+ KUNIT_ASSERT_EQ(test, bo->pin_count, no_pins);
+}
+
+static void ttm_bo_pin_unpin_resource(struct kunit *test)
+{
+ struct ttm_test_devices *priv = test->priv;
+ struct ttm_lru_bulk_move lru_bulk_move;
+ struct ttm_lru_bulk_move_pos *pos;
+ struct ttm_buffer_object *bo;
+ struct ttm_resource *res;
+ struct ttm_device *ttm_dev;
+ struct ttm_place *place;
+ uint32_t mem_type = TTM_PL_SYSTEM;
+ unsigned int bo_priority = 0;
+ int err;
+
+ ttm_lru_bulk_move_init(&lru_bulk_move);
+
+ place = ttm_place_kunit_init(test, mem_type, 0, BO_SIZE);
+
+ ttm_dev = kunit_kzalloc(test, sizeof(*ttm_dev), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, ttm_dev);
+
+ err = ttm_device_kunit_init(priv, ttm_dev, false, false);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ priv->ttm_dev = ttm_dev;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ err = ttm_resource_alloc(bo, place, &res);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ bo->resource = res;
+
+ dma_resv_lock(bo->base.resv, NULL);
+ ttm_bo_set_bulk_move(bo, &lru_bulk_move);
+ ttm_bo_pin(bo);
+ dma_resv_unlock(bo->base.resv);
+
+ pos = &lru_bulk_move.pos[mem_type][bo_priority];
+
+ KUNIT_ASSERT_EQ(test, bo->pin_count, 1);
+ KUNIT_ASSERT_NULL(test, pos->first);
+ KUNIT_ASSERT_NULL(test, pos->last);
+
+ dma_resv_lock(bo->base.resv, NULL);
+ ttm_bo_unpin(bo);
+ dma_resv_unlock(bo->base.resv);
+
+ KUNIT_ASSERT_PTR_EQ(test, res, pos->last);
+ KUNIT_ASSERT_EQ(test, bo->pin_count, 0);
+
+ ttm_resource_free(bo, &res);
+}
+
+static void ttm_bo_multiple_pin_one_unpin(struct kunit *test)
+{
+ struct ttm_test_devices *priv = test->priv;
+ struct ttm_lru_bulk_move lru_bulk_move;
+ struct ttm_lru_bulk_move_pos *pos;
+ struct ttm_buffer_object *bo;
+ struct ttm_resource *res;
+ struct ttm_device *ttm_dev;
+ struct ttm_place *place;
+ uint32_t mem_type = TTM_PL_SYSTEM;
+ unsigned int bo_priority = 0;
+ int err;
+
+ ttm_lru_bulk_move_init(&lru_bulk_move);
+
+ place = ttm_place_kunit_init(test, mem_type, 0, BO_SIZE);
+
+ ttm_dev = kunit_kzalloc(test, sizeof(*ttm_dev), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_NULL(test, ttm_dev);
+
+ err = ttm_device_kunit_init(priv, ttm_dev, false, false);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ priv->ttm_dev = ttm_dev;
+
+ bo = ttm_bo_kunit_init(test, test->priv, BO_SIZE);
+
+ err = ttm_resource_alloc(bo, place, &res);
+ KUNIT_ASSERT_EQ(test, err, 0);
+ bo->resource = res;
+
+ dma_resv_lock(bo->base.resv, NULL);
+ ttm_bo_set_bulk_move(bo, &lru_bulk_move);
+
+ /* Multiple pins */
+ ttm_bo_pin(bo);
+ ttm_bo_pin(bo);
+
+ dma_resv_unlock(bo->base.resv);
+
+ pos = &lru_bulk_move.pos[mem_type][bo_priority];
+
+ KUNIT_ASSERT_EQ(test, bo->pin_count, 2);
+ KUNIT_ASSERT_NULL(test, pos->first);
+ KUNIT_ASSERT_NULL(test, pos->last);
+
+ dma_resv_lock(bo->base.resv, NULL);
+ ttm_bo_unpin(bo);
+ dma_resv_unlock(bo->base.resv);
+
+ KUNIT_ASSERT_EQ(test, bo->pin_count, 1);
+ KUNIT_ASSERT_NULL(test, pos->first);
+ KUNIT_ASSERT_NULL(test, pos->last);
+
+ dma_resv_lock(bo->base.resv, NULL);
+ ttm_bo_unpin(bo);
+ dma_resv_unlock(bo->base.resv);
+
+ ttm_resource_free(bo, &res);
+}
+
+static struct kunit_case ttm_bo_test_cases[] = {
+ KUNIT_CASE_PARAM(ttm_bo_reserve_optimistic_no_ticket,
+ ttm_bo_reserve_gen_params),
+ KUNIT_CASE(ttm_bo_reserve_locked_no_sleep),
+ KUNIT_CASE(ttm_bo_reserve_no_wait_ticket),
+ KUNIT_CASE(ttm_bo_reserve_double_resv),
+ KUNIT_CASE(ttm_bo_reserve_interrupted),
+ KUNIT_CASE(ttm_bo_reserve_deadlock),
+ KUNIT_CASE(ttm_bo_unreserve_basic),
+ KUNIT_CASE(ttm_bo_unreserve_pinned),
+ KUNIT_CASE(ttm_bo_unreserve_bulk),
+ KUNIT_CASE(ttm_bo_put_basic),
+ KUNIT_CASE(ttm_bo_put_shared_resv),
+ KUNIT_CASE(ttm_bo_pin_basic),
+ KUNIT_CASE(ttm_bo_pin_unpin_resource),
+ KUNIT_CASE(ttm_bo_multiple_pin_one_unpin),
+ {}
+};
+
+static struct kunit_suite ttm_bo_test_suite = {
+ .name = "ttm_bo",
+ .init = ttm_test_devices_init,
+ .exit = ttm_test_devices_fini,
+ .test_cases = ttm_bo_test_cases,
+};
+
+kunit_test_suites(&ttm_bo_test_suite);
+
+MODULE_LICENSE("GPL");
diff --git a/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c b/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c
index 112381153bbf..dbe562c59677 100644
--- a/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c
+++ b/drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c
@@ -22,6 +22,10 @@ static void ttm_tt_simple_destroy(struct ttm_device *bdev, struct ttm_tt *ttm)
kfree(ttm);
}
+static void dummy_ttm_bo_destroy(struct ttm_buffer_object *bo)
+{
+}
+
struct ttm_device_funcs ttm_dev_funcs = {
.ttm_tt_create = ttm_tt_simple_create,
.ttm_tt_destroy = ttm_tt_simple_destroy,
@@ -57,6 +61,7 @@ struct ttm_buffer_object *ttm_bo_kunit_init(struct kunit *test,
bo->base = gem_obj;
bo->bdev = devs->ttm_dev;
+ bo->destroy = dummy_ttm_bo_destroy;
kref_init(&bo->kref);
--
2.25.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions
2023-08-31 10:58 ` [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions Karolina Stolarek
@ 2023-09-01 12:04 ` kernel test robot
2023-09-01 12:37 ` Karolina Stolarek
0 siblings, 1 reply; 12+ messages in thread
From: kernel test robot @ 2023-09-01 12:04 UTC (permalink / raw)
To: Karolina Stolarek, dri-devel
Cc: Thomas Hellström, Karolina Stolarek, Christian König,
oe-kbuild-all
Hi Karolina,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-tip/drm-tip linus/master next-20230831]
[cannot apply to drm-intel/for-linux-next-fixes v6.5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Karolina-Stolarek/drm-ttm-tests-Add-tests-for-ttm_resource-and-ttm_sys_man/20230831-185954
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/d914169aee773ee20c0b730b38d42a1fd7613bb6.1693479161.git.karolina.stolarek%40intel.com
patch subject: [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions
config: openrisc-allmodconfig (https://download.01.org/0day-ci/archive/20230901/202309011935.bBpezbUQ-lkp@intel.com/config)
compiler: or1k-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230901/202309011935.bBpezbUQ-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309011935.bBpezbUQ-lkp@intel.com/
All errors (new ones prefixed by >>, old ones prefixed by <<):
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_wlc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_fo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_ovf.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_lblc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_lblcr.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_dh.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_sh.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_sed.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_nq.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_twos.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_ftp.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_pe_sip.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/nf_defrag_ipv4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/nf_reject_ipv4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/iptable_nat.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/iptable_raw.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ipip.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_gre.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_vti.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ah4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/esp4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/xfrm4_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tunnel4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/inet_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tcp_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/raw_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_algo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_user.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/unix/unix_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/ip6table_raw.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/ip6table_nat.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/nf_defrag_ipv6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/nf_reject_ipv6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/ah6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/esp6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/xfrm6_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/tunnel6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/mip6.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/sit.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/ip6_udp_tunnel.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ar9331.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_brcm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_dsa.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_gswip.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_hellcreek.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ksz.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_lan9303.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_mtk.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_none.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ocelot.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ocelot_8021q.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_qca.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl4_a.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl8_4.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rzn1_a5psw.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_sja1105.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_trailer.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_xrs700x.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/8021q/8021q.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/xdp/xsk_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_crypto_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_token_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/packet/af_packet.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/packet/af_packet_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/key/af_key.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/nf_conntrack_bridge.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtables.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtable_broute.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtable_filter.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtable_nat.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/bridge.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/sunrpc.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/auth_gss/auth_rpcgss.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/auth_gss/rpcsec_gss_krb5.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/kcm/kcm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/atm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/lec.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/mpoa.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/sctp/sctp_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/tipc/diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/smc/smc_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/chnl_net.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_socket.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_usb.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/6lowpan/6lowpan.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ieee802154/6lowpan/ieee802154_6lowpan.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/ieee802154/ieee802154_socket.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci_spi.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nfc_digital.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/vmw_vsock/vsock_diag.o
WARNING: modpost: missing MODULE_DESCRIPTION() in net/hsr/hsr.o
ERROR: modpost: "ttm_resource_alloc" [drivers/gpu/drm/ttm/tests/ttm_resource_test.ko] undefined!
ERROR: modpost: "ttm_tt_create" [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
ERROR: modpost: "ttm_tt_destroy" [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
>> ERROR: modpost: "ttm_resource_alloc" [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>> ERROR: modpost: "ttm_tt_create" [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>> ERROR: modpost: "do_send_sig_info" [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions
2023-09-01 12:04 ` kernel test robot
@ 2023-09-01 12:37 ` Karolina Stolarek
2023-09-01 13:19 ` Christian König
0 siblings, 1 reply; 12+ messages in thread
From: Karolina Stolarek @ 2023-09-01 12:37 UTC (permalink / raw)
To: Christian König, dri-devel, kernel test robot
Cc: Thomas Hellström, oe-kbuild-all
On 1.09.2023 14:04, kernel test robot wrote:
> Hi Karolina,
>
> kernel test robot noticed the following build errors:
It's a problem of building TTM KUnit tests as a module, the issue is not
tied to a specific arch -- the subtests use unexported definitions.
While it would be possible to add EXPORT_SYMBOL to the TTM functions, we
don't want to do it with do_send_sig_info.
Christian, two questions here:
1) Shall we export ttm_resource_alloc, ttm_tt_create and ttm_tt_destroy?
Or is there a reason why they are "hidden"?
2) If we decide to keep ttm_bo_reserve_interrupted subtest as it is,
should I make CONFIG_DRM_TTM_KUNIT_TEST a boolean, instead of a
tristate? DRM KUnit tests are tristate, but I think they don't use
non-exported functions.
Many thanks,
Karolina
>
> [auto build test ERROR on drm-misc/drm-misc-next]
> [also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-tip/drm-tip linus/master next-20230831]
> [cannot apply to drm-intel/for-linux-next-fixes v6.5]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Karolina-Stolarek/drm-ttm-tests-Add-tests-for-ttm_resource-and-ttm_sys_man/20230831-185954
> base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
> patch link: https://lore.kernel.org/r/d914169aee773ee20c0b730b38d42a1fd7613bb6.1693479161.git.karolina.stolarek%40intel.com
> patch subject: [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions
> config: openrisc-allmodconfig (https://download.01.org/0day-ci/archive/20230901/202309011935.bBpezbUQ-lkp@intel.com/config)
> compiler: or1k-linux-gcc (GCC) 13.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230901/202309011935.bBpezbUQ-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202309011935.bBpezbUQ-lkp@intel.com/
>
> All errors (new ones prefixed by >>, old ones prefixed by <<):
>
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_wlc.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_fo.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_ovf.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_lblc.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_lblcr.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_dh.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_sh.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_sed.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_nq.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_twos.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_ftp.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/netfilter/ipvs/ip_vs_pe_sip.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/nf_defrag_ipv4.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/nf_reject_ipv4.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/iptable_nat.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/netfilter/iptable_raw.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_tunnel.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ipip.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_gre.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_tunnel.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_vti.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ah4.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/esp4.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/xfrm4_tunnel.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tunnel4.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/inet_diag.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tcp_diag.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_diag.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/raw_diag.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_algo.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_user.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/unix/unix_diag.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/ip6table_raw.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/ip6table_nat.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/nf_defrag_ipv6.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/netfilter/nf_reject_ipv6.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/ah6.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/esp6.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/xfrm6_tunnel.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/tunnel6.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/mip6.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/sit.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/ip6_udp_tunnel.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ar9331.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_brcm.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_dsa.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_gswip.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_hellcreek.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ksz.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_lan9303.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_mtk.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_none.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ocelot.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ocelot_8021q.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_qca.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl4_a.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl8_4.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rzn1_a5psw.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_sja1105.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_trailer.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_xrs700x.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/8021q/8021q.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xdp/xsk_diag.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_diag.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_crypto_test.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_token_test.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/packet/af_packet.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/packet/af_packet_diag.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/key/af_key.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/nf_conntrack_bridge.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtables.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtable_broute.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtable_filter.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/netfilter/ebtable_nat.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/bridge.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/sunrpc.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/auth_gss/auth_rpcgss.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/auth_gss/rpcsec_gss_krb5.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/kcm/kcm.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/atm.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/lec.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/mpoa.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/sctp/sctp_diag.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/tipc/diag.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/smc/smc_diag.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/chnl_net.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_socket.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_usb.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/6lowpan/6lowpan.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ieee802154/6lowpan/ieee802154_6lowpan.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ieee802154/ieee802154_socket.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci_spi.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nfc_digital.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/vmw_vsock/vsock_diag.o
> WARNING: modpost: missing MODULE_DESCRIPTION() in net/hsr/hsr.o
> ERROR: modpost: "ttm_resource_alloc" [drivers/gpu/drm/ttm/tests/ttm_resource_test.ko] undefined!
> ERROR: modpost: "ttm_tt_create" [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
> ERROR: modpost: "ttm_tt_destroy" [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
>>> ERROR: modpost: "ttm_resource_alloc" [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>> ERROR: modpost: "ttm_tt_create" [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>> ERROR: modpost: "do_send_sig_info" [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions
2023-09-01 12:37 ` Karolina Stolarek
@ 2023-09-01 13:19 ` Christian König
2023-09-01 13:30 ` Karolina Stolarek
0 siblings, 1 reply; 12+ messages in thread
From: Christian König @ 2023-09-01 13:19 UTC (permalink / raw)
To: Karolina Stolarek, dri-devel, kernel test robot
Cc: Thomas Hellström, oe-kbuild-all
Am 01.09.23 um 14:37 schrieb Karolina Stolarek:
> On 1.09.2023 14:04, kernel test robot wrote:
>> Hi Karolina,
>>
>> kernel test robot noticed the following build errors:
>
> It's a problem of building TTM KUnit tests as a module, the issue is
> not tied to a specific arch -- the subtests use unexported
> definitions. While it would be possible to add EXPORT_SYMBOL to the
> TTM functions, we don't want to do it with do_send_sig_info.
>
> Christian, two questions here:
>
> 1) Shall we export ttm_resource_alloc, ttm_tt_create and
> ttm_tt_destroy? Or is there a reason why they are "hidden"?
Yeah, those are not supposed to be touched by drivers directly.
>
> 2) If we decide to keep ttm_bo_reserve_interrupted subtest as it is,
> should I make CONFIG_DRM_TTM_KUNIT_TEST a boolean, instead of a
> tristate? DRM KUnit tests are tristate, but I think they don't use
> non-exported functions.
Another option would be to build them together with TTM into one module,
but I'm not sure if the KUNIT tests can do this.
Regards,
Christian.
>
> Many thanks,
> Karolina
>
>>
>> [auto build test ERROR on drm-misc/drm-misc-next]
>> [also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next
>> drm-intel/for-linux-next drm-tip/drm-tip linus/master next-20230831]
>> [cannot apply to drm-intel/for-linux-next-fixes v6.5]
>> [If your patch is applied to the wrong git tree, kindly drop us a note.
>> And when submitting patch, we suggest to use '--base' as documented in
>> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>>
>> url:
>> https://github.com/intel-lab-lkp/linux/commits/Karolina-Stolarek/drm-ttm-tests-Add-tests-for-ttm_resource-and-ttm_sys_man/20230831-185954
>> base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
>> patch link:
>> https://lore.kernel.org/r/d914169aee773ee20c0b730b38d42a1fd7613bb6.1693479161.git.karolina.stolarek%40intel.com
>> patch subject: [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions
>> config: openrisc-allmodconfig
>> (https://download.01.org/0day-ci/archive/20230901/202309011935.bBpezbUQ-lkp@intel.com/config)
>> compiler: or1k-linux-gcc (GCC) 13.2.0
>> reproduce (this is a W=1 build):
>> (https://download.01.org/0day-ci/archive/20230901/202309011935.bBpezbUQ-lkp@intel.com/reproduce)
>>
>> If you fix the issue in a separate patch/commit (i.e. not just a new
>> version of
>> the same patch/commit), kindly add following tags
>> | Reported-by: kernel test robot <lkp@intel.com>
>> | Closes:
>> https://lore.kernel.org/oe-kbuild-all/202309011935.bBpezbUQ-lkp@intel.com/
>>
>> All errors (new ones prefixed by >>, old ones prefixed by <<):
>>
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/netfilter/ipvs/ip_vs_wlc.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/netfilter/ipvs/ip_vs_fo.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/netfilter/ipvs/ip_vs_ovf.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/netfilter/ipvs/ip_vs_lblc.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/netfilter/ipvs/ip_vs_lblcr.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/netfilter/ipvs/ip_vs_dh.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/netfilter/ipvs/ip_vs_sh.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/netfilter/ipvs/ip_vs_sed.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/netfilter/ipvs/ip_vs_nq.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/netfilter/ipvs/ip_vs_twos.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/netfilter/ipvs/ip_vs_ftp.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/netfilter/ipvs/ip_vs_pe_sip.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ipv4/netfilter/nf_defrag_ipv4.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ipv4/netfilter/nf_reject_ipv4.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ipv4/netfilter/iptable_nat.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ipv4/netfilter/iptable_raw.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_tunnel.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ipip.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_gre.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_tunnel.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_vti.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ah4.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/esp4.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ipv4/xfrm4_tunnel.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tunnel4.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/inet_diag.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tcp_diag.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_diag.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/raw_diag.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_algo.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_user.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/unix/unix_diag.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ipv6/netfilter/ip6table_raw.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ipv6/netfilter/ip6table_nat.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ipv6/netfilter/nf_defrag_ipv6.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ipv6/netfilter/nf_reject_ipv6.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/ah6.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/esp6.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ipv6/xfrm6_tunnel.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/tunnel6.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/mip6.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/sit.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ipv6/ip6_udp_tunnel.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ar9331.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_brcm.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_dsa.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_gswip.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/dsa/tag_hellcreek.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ksz.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_lan9303.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_mtk.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_none.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ocelot.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/dsa/tag_ocelot_8021q.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_qca.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl4_a.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl8_4.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/dsa/tag_rzn1_a5psw.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_sja1105.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_trailer.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_xrs700x.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/8021q/8021q.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xdp/xsk_diag.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_diag.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/mptcp/mptcp_crypto_test.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/mptcp/mptcp_token_test.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/packet/af_packet.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/packet/af_packet_diag.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/key/af_key.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/bridge/netfilter/nf_conntrack_bridge.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/bridge/netfilter/ebtables.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/bridge/netfilter/ebtable_broute.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/bridge/netfilter/ebtable_filter.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/bridge/netfilter/ebtable_nat.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/bridge.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/sunrpc.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/sunrpc/auth_gss/auth_rpcgss.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/sunrpc/auth_gss/rpcsec_gss_krb5.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/kcm/kcm.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/atm.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/lec.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/mpoa.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/sctp/sctp_diag.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/tipc/diag.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/smc/smc_diag.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/chnl_net.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_socket.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_usb.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/6lowpan/6lowpan.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ieee802154/6lowpan/ieee802154_6lowpan.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/ieee802154/ieee802154_socket.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci_spi.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nfc_digital.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>> net/vmw_vsock/vsock_diag.o
>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/hsr/hsr.o
>> ERROR: modpost: "ttm_resource_alloc"
>> [drivers/gpu/drm/ttm/tests/ttm_resource_test.ko] undefined!
>> ERROR: modpost: "ttm_tt_create"
>> [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
>> ERROR: modpost: "ttm_tt_destroy"
>> [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
>>>> ERROR: modpost: "ttm_resource_alloc"
>>>> [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>>> ERROR: modpost: "ttm_tt_create"
>>>> [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>>> ERROR: modpost: "do_send_sig_info"
>>>> [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions
2023-09-01 13:19 ` Christian König
@ 2023-09-01 13:30 ` Karolina Stolarek
2023-09-01 13:50 ` Christian König
0 siblings, 1 reply; 12+ messages in thread
From: Karolina Stolarek @ 2023-09-01 13:30 UTC (permalink / raw)
To: Christian König, dri-devel, kernel test robot
Cc: Thomas Hellström, oe-kbuild-all
On 1.09.2023 15:19, Christian König wrote:
> Am 01.09.23 um 14:37 schrieb Karolina Stolarek:
>> On 1.09.2023 14:04, kernel test robot wrote:
>>> Hi Karolina,
>>>
>>> kernel test robot noticed the following build errors:
>>
>> It's a problem of building TTM KUnit tests as a module, the issue is
>> not tied to a specific arch -- the subtests use unexported
>> definitions. While it would be possible to add EXPORT_SYMBOL to the
>> TTM functions, we don't want to do it with do_send_sig_info.
>>
>> Christian, two questions here:
>>
>> 1) Shall we export ttm_resource_alloc, ttm_tt_create and
>> ttm_tt_destroy? Or is there a reason why they are "hidden"?
>
> Yeah, those are not supposed to be touched by drivers directly.
Right, makes sense
>
>>
>> 2) If we decide to keep ttm_bo_reserve_interrupted subtest as it is,
>> should I make CONFIG_DRM_TTM_KUNIT_TEST a boolean, instead of a
>> tristate? DRM KUnit tests are tristate, but I think they don't use
>> non-exported functions.
>
> Another option would be to build them together with TTM into one module,
> but I'm not sure if the KUNIT tests can do this.
While I can imagine doing it with TTM, I'm not so sure about coupling it
with signal.o. Still, I'll take a look.
All the best,
Karolina
>
> Regards,
> Christian.
>
>>
>> Many thanks,
>> Karolina
>>
>>>
>>> [auto build test ERROR on drm-misc/drm-misc-next]
>>> [also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next
>>> drm-intel/for-linux-next drm-tip/drm-tip linus/master next-20230831]
>>> [cannot apply to drm-intel/for-linux-next-fixes v6.5]
>>> [If your patch is applied to the wrong git tree, kindly drop us a note.
>>> And when submitting patch, we suggest to use '--base' as documented in
>>> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>>>
>>> url:
>>> https://github.com/intel-lab-lkp/linux/commits/Karolina-Stolarek/drm-ttm-tests-Add-tests-for-ttm_resource-and-ttm_sys_man/20230831-185954
>>> base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
>>> patch link:
>>> https://lore.kernel.org/r/d914169aee773ee20c0b730b38d42a1fd7613bb6.1693479161.git.karolina.stolarek%40intel.com
>>> patch subject: [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions
>>> config: openrisc-allmodconfig
>>> (https://download.01.org/0day-ci/archive/20230901/202309011935.bBpezbUQ-lkp@intel.com/config)
>>> compiler: or1k-linux-gcc (GCC) 13.2.0
>>> reproduce (this is a W=1 build):
>>> (https://download.01.org/0day-ci/archive/20230901/202309011935.bBpezbUQ-lkp@intel.com/reproduce)
>>>
>>> If you fix the issue in a separate patch/commit (i.e. not just a new
>>> version of
>>> the same patch/commit), kindly add following tags
>>> | Reported-by: kernel test robot <lkp@intel.com>
>>> | Closes:
>>> https://lore.kernel.org/oe-kbuild-all/202309011935.bBpezbUQ-lkp@intel.com/
>>>
>>> All errors (new ones prefixed by >>, old ones prefixed by <<):
>>>
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/netfilter/ipvs/ip_vs_wlc.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/netfilter/ipvs/ip_vs_fo.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/netfilter/ipvs/ip_vs_ovf.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/netfilter/ipvs/ip_vs_lblc.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/netfilter/ipvs/ip_vs_lblcr.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/netfilter/ipvs/ip_vs_dh.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/netfilter/ipvs/ip_vs_sh.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/netfilter/ipvs/ip_vs_sed.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/netfilter/ipvs/ip_vs_nq.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/netfilter/ipvs/ip_vs_twos.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/netfilter/ipvs/ip_vs_ftp.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/netfilter/ipvs/ip_vs_pe_sip.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ipv4/netfilter/nf_defrag_ipv4.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ipv4/netfilter/nf_reject_ipv4.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ipv4/netfilter/iptable_nat.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ipv4/netfilter/iptable_raw.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_tunnel.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ipip.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_gre.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_tunnel.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_vti.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ah4.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/esp4.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ipv4/xfrm4_tunnel.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tunnel4.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/inet_diag.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tcp_diag.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_diag.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/raw_diag.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_algo.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_user.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/unix/unix_diag.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ipv6/netfilter/ip6table_raw.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ipv6/netfilter/ip6table_nat.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ipv6/netfilter/nf_defrag_ipv6.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ipv6/netfilter/nf_reject_ipv6.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/ah6.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/esp6.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ipv6/xfrm6_tunnel.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/tunnel6.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/mip6.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/sit.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ipv6/ip6_udp_tunnel.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ar9331.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_brcm.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_dsa.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_gswip.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/dsa/tag_hellcreek.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ksz.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_lan9303.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_mtk.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_none.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ocelot.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/dsa/tag_ocelot_8021q.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_qca.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl4_a.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl8_4.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/dsa/tag_rzn1_a5psw.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_sja1105.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_trailer.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_xrs700x.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/8021q/8021q.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xdp/xsk_diag.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/mptcp/mptcp_diag.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/mptcp/mptcp_crypto_test.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/mptcp/mptcp_token_test.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/packet/af_packet.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/packet/af_packet_diag.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/key/af_key.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/bridge/netfilter/nf_conntrack_bridge.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/bridge/netfilter/ebtables.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/bridge/netfilter/ebtable_broute.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/bridge/netfilter/ebtable_filter.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/bridge/netfilter/ebtable_nat.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/bridge.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/sunrpc.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/sunrpc/auth_gss/auth_rpcgss.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/sunrpc/auth_gss/rpcsec_gss_krb5.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/kcm/kcm.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/atm.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/lec.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/mpoa.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/sctp/sctp_diag.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/tipc/diag.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/smc/smc_diag.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/chnl_net.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_socket.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_usb.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/6lowpan/6lowpan.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ieee802154/6lowpan/ieee802154_6lowpan.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/ieee802154/ieee802154_socket.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci_spi.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nfc_digital.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>> net/vmw_vsock/vsock_diag.o
>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/hsr/hsr.o
>>> ERROR: modpost: "ttm_resource_alloc"
>>> [drivers/gpu/drm/ttm/tests/ttm_resource_test.ko] undefined!
>>> ERROR: modpost: "ttm_tt_create"
>>> [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
>>> ERROR: modpost: "ttm_tt_destroy"
>>> [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
>>>>> ERROR: modpost: "ttm_resource_alloc"
>>>>> [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>>>> ERROR: modpost: "ttm_tt_create"
>>>>> [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>>>> ERROR: modpost: "do_send_sig_info"
>>>>> [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>>
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions
2023-09-01 13:30 ` Karolina Stolarek
@ 2023-09-01 13:50 ` Christian König
2023-09-11 9:47 ` Karolina Stolarek
0 siblings, 1 reply; 12+ messages in thread
From: Christian König @ 2023-09-01 13:50 UTC (permalink / raw)
To: Karolina Stolarek, dri-devel, kernel test robot
Cc: Thomas Hellström, oe-kbuild-all
Am 01.09.23 um 15:30 schrieb Karolina Stolarek:
> On 1.09.2023 15:19, Christian König wrote:
>> Am 01.09.23 um 14:37 schrieb Karolina Stolarek:
>>> On 1.09.2023 14:04, kernel test robot wrote:
>>>> Hi Karolina,
>>>>
>>>> kernel test robot noticed the following build errors:
>>>
>>> It's a problem of building TTM KUnit tests as a module, the issue is
>>> not tied to a specific arch -- the subtests use unexported
>>> definitions. While it would be possible to add EXPORT_SYMBOL to the
>>> TTM functions, we don't want to do it with do_send_sig_info.
>>>
>>> Christian, two questions here:
>>>
>>> 1) Shall we export ttm_resource_alloc, ttm_tt_create and
>>> ttm_tt_destroy? Or is there a reason why they are "hidden"?
>>
>> Yeah, those are not supposed to be touched by drivers directly.
>
> Right, makes sense
If you can't find a cleaner way exporting them conditionally on
CONFIG_DRM_TTM_KUNIT_TEST might be a way to go.
>
>>
>>>
>>> 2) If we decide to keep ttm_bo_reserve_interrupted subtest as it is,
>>> should I make CONFIG_DRM_TTM_KUNIT_TEST a boolean, instead of a
>>> tristate? DRM KUnit tests are tristate, but I think they don't use
>>> non-exported functions.
>>
>> Another option would be to build them together with TTM into one
>> module, but I'm not sure if the KUNIT tests can do this.
>
> While I can imagine doing it with TTM, I'm not so sure about coupling
> it with signal.o. Still, I'll take a look.
I have a high level understanding what you are trying to to, but that is
absolutely not my field of expertise :)
Regards,
Christian.
>
> All the best,
> Karolina
>
>>
>> Regards,
>> Christian.
>>
>>>
>>> Many thanks,
>>> Karolina
>>>
>>>>
>>>> [auto build test ERROR on drm-misc/drm-misc-next]
>>>> [also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next
>>>> drm-intel/for-linux-next drm-tip/drm-tip linus/master next-20230831]
>>>> [cannot apply to drm-intel/for-linux-next-fixes v6.5]
>>>> [If your patch is applied to the wrong git tree, kindly drop us a
>>>> note.
>>>> And when submitting patch, we suggest to use '--base' as documented in
>>>> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>>>>
>>>> url:
>>>> https://github.com/intel-lab-lkp/linux/commits/Karolina-Stolarek/drm-ttm-tests-Add-tests-for-ttm_resource-and-ttm_sys_man/20230831-185954
>>>> base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
>>>> patch link:
>>>> https://lore.kernel.org/r/d914169aee773ee20c0b730b38d42a1fd7613bb6.1693479161.git.karolina.stolarek%40intel.com
>>>> patch subject: [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo
>>>> functions
>>>> config: openrisc-allmodconfig
>>>> (https://download.01.org/0day-ci/archive/20230901/202309011935.bBpezbUQ-lkp@intel.com/config)
>>>> compiler: or1k-linux-gcc (GCC) 13.2.0
>>>> reproduce (this is a W=1 build):
>>>> (https://download.01.org/0day-ci/archive/20230901/202309011935.bBpezbUQ-lkp@intel.com/reproduce)
>>>>
>>>> If you fix the issue in a separate patch/commit (i.e. not just a
>>>> new version of
>>>> the same patch/commit), kindly add following tags
>>>> | Reported-by: kernel test robot <lkp@intel.com>
>>>> | Closes:
>>>> https://lore.kernel.org/oe-kbuild-all/202309011935.bBpezbUQ-lkp@intel.com/
>>>>
>>>> All errors (new ones prefixed by >>, old ones prefixed by <<):
>>>>
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/netfilter/ipvs/ip_vs_wlc.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/netfilter/ipvs/ip_vs_fo.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/netfilter/ipvs/ip_vs_ovf.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/netfilter/ipvs/ip_vs_lblc.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/netfilter/ipvs/ip_vs_lblcr.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/netfilter/ipvs/ip_vs_dh.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/netfilter/ipvs/ip_vs_sh.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/netfilter/ipvs/ip_vs_sed.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/netfilter/ipvs/ip_vs_nq.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/netfilter/ipvs/ip_vs_twos.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/netfilter/ipvs/ip_vs_ftp.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/netfilter/ipvs/ip_vs_pe_sip.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ipv4/netfilter/nf_defrag_ipv4.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ipv4/netfilter/nf_reject_ipv4.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ipv4/netfilter/iptable_nat.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ipv4/netfilter/iptable_raw.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_tunnel.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ipip.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_gre.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ipv4/udp_tunnel.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_vti.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ah4.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/esp4.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ipv4/xfrm4_tunnel.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tunnel4.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/inet_diag.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tcp_diag.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_diag.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/raw_diag.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_algo.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_user.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/unix/unix_diag.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ipv6/netfilter/ip6table_raw.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ipv6/netfilter/ip6table_nat.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ipv6/netfilter/nf_defrag_ipv6.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ipv6/netfilter/nf_reject_ipv6.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/ah6.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/esp6.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ipv6/xfrm6_tunnel.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/tunnel6.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/mip6.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/sit.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ipv6/ip6_udp_tunnel.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ar9331.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_brcm.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_dsa.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_gswip.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/dsa/tag_hellcreek.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ksz.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/dsa/tag_lan9303.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_mtk.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_none.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ocelot.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/dsa/tag_ocelot_8021q.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_qca.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl4_a.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl8_4.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/dsa/tag_rzn1_a5psw.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/dsa/tag_sja1105.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/dsa/tag_trailer.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/dsa/tag_xrs700x.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/8021q/8021q.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xdp/xsk_diag.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/mptcp/mptcp_diag.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/mptcp/mptcp_crypto_test.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/mptcp/mptcp_token_test.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/packet/af_packet.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/packet/af_packet_diag.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/key/af_key.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/bridge/netfilter/nf_conntrack_bridge.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/bridge/netfilter/ebtables.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/bridge/netfilter/ebtable_broute.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/bridge/netfilter/ebtable_filter.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/bridge/netfilter/ebtable_nat.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/bridge.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/sunrpc.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/sunrpc/auth_gss/auth_rpcgss.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/sunrpc/auth_gss/rpcsec_gss_krb5.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/kcm/kcm.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/atm.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/lec.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/mpoa.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/sctp/sctp_diag.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/tipc/diag.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/smc/smc_diag.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/chnl_net.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/caif/caif_socket.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_usb.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/6lowpan/6lowpan.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ieee802154/6lowpan/ieee802154_6lowpan.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/ieee802154/ieee802154_socket.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/nfc/nci/nci_spi.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/nfc/nfc_digital.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>> net/vmw_vsock/vsock_diag.o
>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/hsr/hsr.o
>>>> ERROR: modpost: "ttm_resource_alloc"
>>>> [drivers/gpu/drm/ttm/tests/ttm_resource_test.ko] undefined!
>>>> ERROR: modpost: "ttm_tt_create"
>>>> [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
>>>> ERROR: modpost: "ttm_tt_destroy"
>>>> [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
>>>>>> ERROR: modpost: "ttm_resource_alloc"
>>>>>> [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>>>>> ERROR: modpost: "ttm_tt_create"
>>>>>> [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>>>>> ERROR: modpost: "do_send_sig_info"
>>>>>> [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>>>
>>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo functions
2023-09-01 13:50 ` Christian König
@ 2023-09-11 9:47 ` Karolina Stolarek
0 siblings, 0 replies; 12+ messages in thread
From: Karolina Stolarek @ 2023-09-11 9:47 UTC (permalink / raw)
To: Christian König, dri-devel, kernel test robot
Cc: Thomas Hellström, oe-kbuild-all
On 1.09.2023 15:50, Christian König wrote:
> Am 01.09.23 um 15:30 schrieb Karolina Stolarek:
>> On 1.09.2023 15:19, Christian König wrote:
>>> Am 01.09.23 um 14:37 schrieb Karolina Stolarek:
>>>> On 1.09.2023 14:04, kernel test robot wrote:
>>>>> Hi Karolina,
>>>>>
>>>>> kernel test robot noticed the following build errors:
>>>>
>>>> It's a problem of building TTM KUnit tests as a module, the issue is
>>>> not tied to a specific arch -- the subtests use unexported
>>>> definitions. While it would be possible to add EXPORT_SYMBOL to the
>>>> TTM functions, we don't want to do it with do_send_sig_info.
>>>>
>>>> Christian, two questions here:
>>>>
>>>> 1) Shall we export ttm_resource_alloc, ttm_tt_create and
>>>> ttm_tt_destroy? Or is there a reason why they are "hidden"?
>>>
>>> Yeah, those are not supposed to be touched by drivers directly.
>>
>> Right, makes sense
>
> If you can't find a cleaner way exporting them conditionally on
> CONFIG_DRM_TTM_KUNIT_TEST might be a way to go.
In the end, I hacked TTM's Makefile to switch on
CONFIG_DRM_TTM_KUNIT_TEST=m. I'm not sure if it's a clean approach, but
thanks to that change I don't need to modify core TTM files. The only
ifdef I had to add was the one for ttm_bo_reserve_interrupted subtest,
but I think that's an acceptable compromise. Let's hope the kernel test
bot agrees :)
Will send the series soon. I'm still sorting things out after coming
from a sick leave.
All the best,
Karolina
>
>>
>>>
>>>>
>>>> 2) If we decide to keep ttm_bo_reserve_interrupted subtest as it is,
>>>> should I make CONFIG_DRM_TTM_KUNIT_TEST a boolean, instead of a
>>>> tristate? DRM KUnit tests are tristate, but I think they don't use
>>>> non-exported functions.
>>>
>>> Another option would be to build them together with TTM into one
>>> module, but I'm not sure if the KUNIT tests can do this.
>>
>> While I can imagine doing it with TTM, I'm not so sure about coupling
>> it with signal.o. Still, I'll take a look.
>
> I have a high level understanding what you are trying to to, but that is
> absolutely not my field of expertise :)
>
> Regards,
> Christian.
>
>>
>> All the best,
>> Karolina
>>
>>>
>>> Regards,
>>> Christian.
>>>
>>>>
>>>> Many thanks,
>>>> Karolina
>>>>
>>>>>
>>>>> [auto build test ERROR on drm-misc/drm-misc-next]
>>>>> [also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next
>>>>> drm-intel/for-linux-next drm-tip/drm-tip linus/master next-20230831]
>>>>> [cannot apply to drm-intel/for-linux-next-fixes v6.5]
>>>>> [If your patch is applied to the wrong git tree, kindly drop us a
>>>>> note.
>>>>> And when submitting patch, we suggest to use '--base' as documented in
>>>>> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>>>>>
>>>>> url:
>>>>> https://github.com/intel-lab-lkp/linux/commits/Karolina-Stolarek/drm-ttm-tests-Add-tests-for-ttm_resource-and-ttm_sys_man/20230831-185954
>>>>> base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
>>>>> patch link:
>>>>> https://lore.kernel.org/r/d914169aee773ee20c0b730b38d42a1fd7613bb6.1693479161.git.karolina.stolarek%40intel.com
>>>>> patch subject: [PATCH 3/3] drm/ttm/tests: Add tests for ttm_bo
>>>>> functions
>>>>> config: openrisc-allmodconfig
>>>>> (https://download.01.org/0day-ci/archive/20230901/202309011935.bBpezbUQ-lkp@intel.com/config)
>>>>> compiler: or1k-linux-gcc (GCC) 13.2.0
>>>>> reproduce (this is a W=1 build):
>>>>> (https://download.01.org/0day-ci/archive/20230901/202309011935.bBpezbUQ-lkp@intel.com/reproduce)
>>>>>
>>>>> If you fix the issue in a separate patch/commit (i.e. not just a
>>>>> new version of
>>>>> the same patch/commit), kindly add following tags
>>>>> | Reported-by: kernel test robot <lkp@intel.com>
>>>>> | Closes:
>>>>> https://lore.kernel.org/oe-kbuild-all/202309011935.bBpezbUQ-lkp@intel.com/
>>>>>
>>>>> All errors (new ones prefixed by >>, old ones prefixed by <<):
>>>>>
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/netfilter/ipvs/ip_vs_wlc.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/netfilter/ipvs/ip_vs_fo.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/netfilter/ipvs/ip_vs_ovf.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/netfilter/ipvs/ip_vs_lblc.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/netfilter/ipvs/ip_vs_lblcr.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/netfilter/ipvs/ip_vs_dh.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/netfilter/ipvs/ip_vs_sh.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/netfilter/ipvs/ip_vs_sed.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/netfilter/ipvs/ip_vs_nq.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/netfilter/ipvs/ip_vs_twos.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/netfilter/ipvs/ip_vs_ftp.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/netfilter/ipvs/ip_vs_pe_sip.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ipv4/netfilter/nf_defrag_ipv4.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ipv4/netfilter/nf_reject_ipv4.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ipv4/netfilter/iptable_nat.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ipv4/netfilter/iptable_raw.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_tunnel.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ipip.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_gre.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ipv4/udp_tunnel.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ip_vti.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/ah4.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/esp4.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ipv4/xfrm4_tunnel.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tunnel4.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/inet_diag.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/tcp_diag.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/udp_diag.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv4/raw_diag.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_algo.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xfrm/xfrm_user.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/unix/unix_diag.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ipv6/netfilter/ip6table_raw.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ipv6/netfilter/ip6table_nat.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ipv6/netfilter/nf_defrag_ipv6.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ipv6/netfilter/nf_reject_ipv6.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/ah6.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/esp6.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ipv6/xfrm6_tunnel.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/tunnel6.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/mip6.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/ipv6/sit.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ipv6/ip6_udp_tunnel.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ar9331.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_brcm.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_dsa.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_gswip.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/dsa/tag_hellcreek.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ksz.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/dsa/tag_lan9303.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_mtk.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_none.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_ocelot.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/dsa/tag_ocelot_8021q.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_qca.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl4_a.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/dsa/tag_rtl8_4.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/dsa/tag_rzn1_a5psw.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/dsa/tag_sja1105.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/dsa/tag_trailer.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/dsa/tag_xrs700x.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/8021q/8021q.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/xdp/xsk_diag.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/mptcp/mptcp_diag.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/mptcp/mptcp_crypto_test.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/mptcp/mptcp_token_test.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/packet/af_packet.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/packet/af_packet_diag.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/key/af_key.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/bridge/netfilter/nf_conntrack_bridge.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/bridge/netfilter/ebtables.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/bridge/netfilter/ebtable_broute.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/bridge/netfilter/ebtable_filter.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/bridge/netfilter/ebtable_nat.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/bridge/bridge.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/sunrpc/sunrpc.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/sunrpc/auth_gss/auth_rpcgss.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/sunrpc/auth_gss/rpcsec_gss_krb5.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/kcm/kcm.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/atm.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/lec.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/atm/mpoa.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/sctp/sctp_diag.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/tipc/diag.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/smc/smc_diag.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/chnl_net.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/caif/caif_socket.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/caif/caif_usb.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/6lowpan/6lowpan.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ieee802154/6lowpan/ieee802154_6lowpan.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/ieee802154/ieee802154_socket.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/nfc/nci/nci.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/nfc/nci/nci_spi.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/nfc/nfc_digital.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in
>>>>> net/vmw_vsock/vsock_diag.o
>>>>> WARNING: modpost: missing MODULE_DESCRIPTION() in net/hsr/hsr.o
>>>>> ERROR: modpost: "ttm_resource_alloc"
>>>>> [drivers/gpu/drm/ttm/tests/ttm_resource_test.ko] undefined!
>>>>> ERROR: modpost: "ttm_tt_create"
>>>>> [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
>>>>> ERROR: modpost: "ttm_tt_destroy"
>>>>> [drivers/gpu/drm/ttm/tests/ttm_tt_test.ko] undefined!
>>>>>>> ERROR: modpost: "ttm_resource_alloc"
>>>>>>> [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>>>>>> ERROR: modpost: "ttm_tt_create"
>>>>>>> [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>>>>>> ERROR: modpost: "do_send_sig_info"
>>>>>>> [drivers/gpu/drm/ttm/tests/ttm_bo_test.ko] undefined!
>>>>>
>>>
>
^ permalink raw reply [flat|nested] 12+ messages in thread