Lines Matching +full:test +full:- +full:cpu

1 // SPDX-License-Identifier: LGPL-2.1+
4 #include <linux/cpu.h>
11 #include <kunit/test.h>
44 static int irq_test_setup_fake_irq(struct kunit *test, struct irq_affinity_desc *affd) in irq_test_setup_fake_irq() argument
49 virq = irq_domain_alloc_descs(-1, 1, 0, NUMA_NO_NODE, affd); in irq_test_setup_fake_irq()
50 KUNIT_ASSERT_GE(test, virq, 0); in irq_test_setup_fake_irq()
55 KUNIT_ASSERT_PTR_NE(test, desc, NULL); in irq_test_setup_fake_irq()
63 static void irq_disable_depth_test(struct kunit *test) in irq_disable_depth_test() argument
68 virq = irq_test_setup_fake_irq(test, NULL); in irq_disable_depth_test()
71 KUNIT_ASSERT_PTR_NE(test, desc, NULL); in irq_disable_depth_test()
74 KUNIT_ASSERT_EQ(test, ret, 0); in irq_disable_depth_test()
76 KUNIT_EXPECT_EQ(test, desc->depth, 0); in irq_disable_depth_test()
79 KUNIT_EXPECT_EQ(test, desc->depth, 1); in irq_disable_depth_test()
82 KUNIT_EXPECT_EQ(test, desc->depth, 0); in irq_disable_depth_test()
87 static void irq_free_disabled_test(struct kunit *test) in irq_free_disabled_test() argument
92 virq = irq_test_setup_fake_irq(test, NULL); in irq_free_disabled_test()
95 KUNIT_ASSERT_PTR_NE(test, desc, NULL); in irq_free_disabled_test()
98 KUNIT_ASSERT_EQ(test, ret, 0); in irq_free_disabled_test()
100 KUNIT_EXPECT_EQ(test, desc->depth, 0); in irq_free_disabled_test()
103 KUNIT_EXPECT_EQ(test, desc->depth, 1); in irq_free_disabled_test()
106 KUNIT_EXPECT_GE(test, desc->depth, 1); in irq_free_disabled_test()
109 KUNIT_ASSERT_EQ(test, ret, 0); in irq_free_disabled_test()
110 KUNIT_EXPECT_EQ(test, desc->depth, 0); in irq_free_disabled_test()
115 static void irq_shutdown_depth_test(struct kunit *test) in irq_shutdown_depth_test() argument
126 kunit_skip(test, "requires CONFIG_SMP for managed shutdown"); in irq_shutdown_depth_test()
128 virq = irq_test_setup_fake_irq(test, &affinity); in irq_shutdown_depth_test()
131 KUNIT_ASSERT_PTR_NE(test, desc, NULL); in irq_shutdown_depth_test()
134 KUNIT_ASSERT_PTR_NE(test, data, NULL); in irq_shutdown_depth_test()
137 KUNIT_ASSERT_EQ(test, ret, 0); in irq_shutdown_depth_test()
139 KUNIT_EXPECT_TRUE(test, irqd_is_activated(data)); in irq_shutdown_depth_test()
140 KUNIT_EXPECT_TRUE(test, irqd_is_started(data)); in irq_shutdown_depth_test()
141 KUNIT_EXPECT_TRUE(test, irqd_affinity_is_managed(data)); in irq_shutdown_depth_test()
143 KUNIT_EXPECT_EQ(test, desc->depth, 0); in irq_shutdown_depth_test()
146 KUNIT_EXPECT_EQ(test, desc->depth, 1); in irq_shutdown_depth_test()
148 scoped_guard(raw_spinlock_irqsave, &desc->lock) in irq_shutdown_depth_test()
151 KUNIT_EXPECT_FALSE(test, irqd_is_activated(data)); in irq_shutdown_depth_test()
152 KUNIT_EXPECT_FALSE(test, irqd_is_started(data)); in irq_shutdown_depth_test()
154 KUNIT_EXPECT_EQ(test, irq_activate(desc), 0); in irq_shutdown_depth_test()
159 KUNIT_EXPECT_EQ(test, desc->depth, 1); in irq_shutdown_depth_test()
162 KUNIT_EXPECT_EQ(test, desc->depth, 0); in irq_shutdown_depth_test()
167 static void irq_cpuhotplug_test(struct kunit *test) in irq_cpuhotplug_test() argument
177 kunit_skip(test, "requires CONFIG_SMP for CPU hotplug"); in irq_cpuhotplug_test()
179 kunit_skip(test, "requires more than 1 CPU for CPU hotplug"); in irq_cpuhotplug_test()
181 kunit_skip(test, "CPU 1 must be hotpluggable"); in irq_cpuhotplug_test()
183 kunit_skip(test, "CPU 1 must be online"); in irq_cpuhotplug_test()
187 virq = irq_test_setup_fake_irq(test, &affinity); in irq_cpuhotplug_test()
190 KUNIT_ASSERT_PTR_NE(test, desc, NULL); in irq_cpuhotplug_test()
193 KUNIT_ASSERT_PTR_NE(test, data, NULL); in irq_cpuhotplug_test()
196 KUNIT_ASSERT_EQ(test, ret, 0); in irq_cpuhotplug_test()
198 KUNIT_EXPECT_TRUE(test, irqd_is_activated(data)); in irq_cpuhotplug_test()
199 KUNIT_EXPECT_TRUE(test, irqd_is_started(data)); in irq_cpuhotplug_test()
200 KUNIT_EXPECT_TRUE(test, irqd_affinity_is_managed(data)); in irq_cpuhotplug_test()
202 KUNIT_EXPECT_EQ(test, desc->depth, 0); in irq_cpuhotplug_test()
205 KUNIT_EXPECT_EQ(test, desc->depth, 1); in irq_cpuhotplug_test()
207 KUNIT_EXPECT_EQ(test, remove_cpu(1), 0); in irq_cpuhotplug_test()
208 KUNIT_EXPECT_GE(test, desc->depth, 1); in irq_cpuhotplug_test()
209 KUNIT_EXPECT_EQ(test, add_cpu(1), 0); in irq_cpuhotplug_test()
211 KUNIT_EXPECT_EQ(test, desc->depth, 1); in irq_cpuhotplug_test()
214 KUNIT_EXPECT_TRUE(test, irqd_is_activated(data)); in irq_cpuhotplug_test()
215 KUNIT_EXPECT_TRUE(test, irqd_is_started(data)); in irq_cpuhotplug_test()
216 KUNIT_EXPECT_EQ(test, desc->depth, 0); in irq_cpuhotplug_test()
235 MODULE_DESCRIPTION("IRQ unit test suite");