xref: /linux/drivers/resctrl/test_mpam_devices.c (revision e3565d1fd4dcf2c7ee6912094066e47c7500eaf2)
1 // SPDX-License-Identifier: GPL-2.0
2 // Copyright (C) 2025 Arm Ltd.
3 /* This file is intended to be included into mpam_devices.c */
4 
5 #include <kunit/test.h>
6 
7 static void test_mpam_reset_msc_bitmap(struct kunit *test)
8 {
9 	char __iomem *buf = kunit_kzalloc(test, SZ_16K, GFP_KERNEL);
10 	struct mpam_msc fake_msc = {};
11 	u32 *test_result;
12 
13 	if (!buf)
14 		return;
15 
16 	fake_msc.mapped_hwpage = buf;
17 	fake_msc.mapped_hwpage_sz = SZ_16K;
18 	cpumask_copy(&fake_msc.accessibility, cpu_possible_mask);
19 
20 	/* Satisfy lockdep checks */
21 	mutex_init(&fake_msc.part_sel_lock);
22 	mutex_lock(&fake_msc.part_sel_lock);
23 
24 	test_result = (u32 *)(buf + MPAMCFG_CPBM);
25 
26 	mpam_reset_msc_bitmap(&fake_msc, MPAMCFG_CPBM, 0);
27 	KUNIT_EXPECT_EQ(test, test_result[0], 0);
28 	KUNIT_EXPECT_EQ(test, test_result[1], 0);
29 	test_result[0] = 0;
30 	test_result[1] = 0;
31 
32 	mpam_reset_msc_bitmap(&fake_msc, MPAMCFG_CPBM, 1);
33 	KUNIT_EXPECT_EQ(test, test_result[0], 1);
34 	KUNIT_EXPECT_EQ(test, test_result[1], 0);
35 	test_result[0] = 0;
36 	test_result[1] = 0;
37 
38 	mpam_reset_msc_bitmap(&fake_msc, MPAMCFG_CPBM, 16);
39 	KUNIT_EXPECT_EQ(test, test_result[0], 0xffff);
40 	KUNIT_EXPECT_EQ(test, test_result[1], 0);
41 	test_result[0] = 0;
42 	test_result[1] = 0;
43 
44 	mpam_reset_msc_bitmap(&fake_msc, MPAMCFG_CPBM, 32);
45 	KUNIT_EXPECT_EQ(test, test_result[0], 0xffffffff);
46 	KUNIT_EXPECT_EQ(test, test_result[1], 0);
47 	test_result[0] = 0;
48 	test_result[1] = 0;
49 
50 	mpam_reset_msc_bitmap(&fake_msc, MPAMCFG_CPBM, 33);
51 	KUNIT_EXPECT_EQ(test, test_result[0], 0xffffffff);
52 	KUNIT_EXPECT_EQ(test, test_result[1], 1);
53 	test_result[0] = 0;
54 	test_result[1] = 0;
55 
56 	mutex_unlock(&fake_msc.part_sel_lock);
57 }
58 
59 static struct kunit_case mpam_devices_test_cases[] = {
60 	KUNIT_CASE(test_mpam_reset_msc_bitmap),
61 	{}
62 };
63 
64 static struct kunit_suite mpam_devices_test_suite = {
65 	.name = "mpam_devices_test_suite",
66 	.test_cases = mpam_devices_test_cases,
67 };
68 
69 kunit_test_suites(&mpam_devices_test_suite);
70