mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
coresight: Add a KUnit test for coresight_find_default_sink()
Add a test to confirm that default sink selection skips over an ETF and returns an ETR even if it's further away. This also makes it easier to add new unit tests in the future. Reviewed-by: Leo Yan <leo.yan@arm.com> Signed-off-by: James Clark <james.clark@linaro.org> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Link: https://lore.kernel.org/r/20250312-james-cs-kunit-test-v4-1-ae3dd718a26a@linaro.org
This commit is contained in:
parent
e6e6b69286
commit
b104a941a9
|
|
@ -259,4 +259,13 @@ config CORESIGHT_DUMMY
|
|||
|
||||
To compile this driver as a module, choose M here: the module will be
|
||||
called coresight-dummy.
|
||||
|
||||
config CORESIGHT_KUNIT_TESTS
|
||||
tristate "Enable Coresight unit tests"
|
||||
depends on KUNIT
|
||||
default KUNIT_ALL_TESTS
|
||||
help
|
||||
Enable Coresight unit tests. Only useful for development and not
|
||||
intended for production.
|
||||
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -53,3 +53,4 @@ obj-$(CONFIG_ULTRASOC_SMB) += ultrasoc-smb.o
|
|||
obj-$(CONFIG_CORESIGHT_DUMMY) += coresight-dummy.o
|
||||
obj-$(CONFIG_CORESIGHT_CTCU) += coresight-ctcu.o
|
||||
coresight-ctcu-y := coresight-ctcu-core.o
|
||||
obj-$(CONFIG_CORESIGHT_KUNIT_TESTS) += coresight-kunit-tests.o
|
||||
|
|
|
|||
|
|
@ -989,6 +989,7 @@ coresight_find_default_sink(struct coresight_device *csdev)
|
|||
}
|
||||
return csdev->def_sink;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(coresight_find_default_sink);
|
||||
|
||||
static int coresight_remove_sink_ref(struct device *dev, void *data)
|
||||
{
|
||||
|
|
|
|||
74
drivers/hwtracing/coresight/coresight-kunit-tests.c
Normal file
74
drivers/hwtracing/coresight/coresight-kunit-tests.c
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
#include <kunit/test.h>
|
||||
#include <kunit/device.h>
|
||||
#include <linux/coresight.h>
|
||||
|
||||
#include "coresight-priv.h"
|
||||
|
||||
static struct coresight_device *coresight_test_device(struct device *dev)
|
||||
{
|
||||
struct coresight_device *csdev = devm_kcalloc(dev, 1,
|
||||
sizeof(struct coresight_device),
|
||||
GFP_KERNEL);
|
||||
csdev->pdata = devm_kcalloc(dev, 1,
|
||||
sizeof(struct coresight_platform_data),
|
||||
GFP_KERNEL);
|
||||
return csdev;
|
||||
}
|
||||
|
||||
static void test_default_sink(struct kunit *test)
|
||||
{
|
||||
/*
|
||||
* Source -> ETF -> ETR -> CATU
|
||||
* ^
|
||||
* | default
|
||||
*/
|
||||
struct device *dev = kunit_device_register(test, "coresight_kunit");
|
||||
struct coresight_device *src = coresight_test_device(dev),
|
||||
*etf = coresight_test_device(dev),
|
||||
*etr = coresight_test_device(dev),
|
||||
*catu = coresight_test_device(dev);
|
||||
struct coresight_connection conn = {};
|
||||
|
||||
src->type = CORESIGHT_DEV_TYPE_SOURCE;
|
||||
/*
|
||||
* Don't use CORESIGHT_DEV_SUBTYPE_SOURCE_PROC, that would always return
|
||||
* a TRBE sink if one is registered.
|
||||
*/
|
||||
src->subtype.source_subtype = CORESIGHT_DEV_SUBTYPE_SOURCE_BUS;
|
||||
etf->type = CORESIGHT_DEV_TYPE_LINKSINK;
|
||||
etf->subtype.sink_subtype = CORESIGHT_DEV_SUBTYPE_SINK_BUFFER;
|
||||
etr->type = CORESIGHT_DEV_TYPE_SINK;
|
||||
etr->subtype.sink_subtype = CORESIGHT_DEV_SUBTYPE_SINK_SYSMEM;
|
||||
catu->type = CORESIGHT_DEV_TYPE_HELPER;
|
||||
|
||||
conn.src_dev = src;
|
||||
conn.dest_dev = etf;
|
||||
coresight_add_out_conn(dev, src->pdata, &conn);
|
||||
|
||||
conn.src_dev = etf;
|
||||
conn.dest_dev = etr;
|
||||
coresight_add_out_conn(dev, etf->pdata, &conn);
|
||||
|
||||
conn.src_dev = etr;
|
||||
conn.dest_dev = catu;
|
||||
coresight_add_out_conn(dev, etr->pdata, &conn);
|
||||
|
||||
KUNIT_ASSERT_PTR_EQ(test, coresight_find_default_sink(src), etr);
|
||||
}
|
||||
|
||||
static struct kunit_case coresight_testcases[] = {
|
||||
KUNIT_CASE(test_default_sink),
|
||||
{}
|
||||
};
|
||||
|
||||
static struct kunit_suite coresight_test_suite = {
|
||||
.name = "coresight_test_suite",
|
||||
.test_cases = coresight_testcases,
|
||||
};
|
||||
|
||||
kunit_test_suites(&coresight_test_suite);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("James Clark <james.clark@linaro.org>");
|
||||
MODULE_DESCRIPTION("Arm CoreSight KUnit tests");
|
||||
Loading…
Reference in New Issue
Block a user