Lines Matching refs:test

7 #include <kunit/test.h>
8 #include <kunit/test-bug.h>
25 static int relay_test_init(struct kunit *test)
35 test->priv = &fake;
36 xe_kunit_helper_xe_device_test_init(test);
38 xe = test->priv;
39 KUNIT_ASSERT_EQ(test, xe_sriov_init(xe), 0);
42 kunit_activate_static_stub(test, relay_get_totalvfs,
45 KUNIT_ASSERT_EQ(test, xe_guc_relay_init(relay), 0);
46 KUNIT_EXPECT_TRUE(test, relay_is_ready(relay));
49 test->priv = relay;
65 struct kunit *test = kunit_get_current_test();
67 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ct);
68 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, msg);
69 KUNIT_ASSERT_GE(test, len, GUC_HXG_MSG_MIN_LEN);
78 struct kunit *test = kunit_get_current_test();
80 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ct);
81 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, msg);
82 KUNIT_ASSERT_GE(test, len, PF2GUC_RELAY_TO_VF_REQUEST_MSG_MIN_LEN);
83 KUNIT_ASSERT_EQ(test, len, PF2GUC_RELAY_TO_VF_REQUEST_MSG_MIN_LEN + TEST_LEN);
84 KUNIT_EXPECT_EQ(test, GUC_HXG_ORIGIN_HOST, FIELD_GET(GUC_HXG_MSG_0_ORIGIN, msg[0]));
85 KUNIT_EXPECT_EQ(test, GUC_HXG_TYPE_REQUEST, FIELD_GET(GUC_HXG_MSG_0_TYPE, msg[0]));
86 KUNIT_EXPECT_EQ(test, XE_GUC_ACTION_PF2GUC_RELAY_TO_VF,
88 KUNIT_EXPECT_EQ(test, TEST_VFID,
90 KUNIT_EXPECT_EQ(test, TEST_RID,
92 KUNIT_EXPECT_MEMEQ(test, TEST_MSG, msg + PF2GUC_RELAY_TO_VF_REQUEST_MSG_MIN_LEN,
120 static void pf_rejects_guc2pf_too_short(struct kunit *test)
123 struct xe_guc_relay *relay = test->priv;
126 KUNIT_ASSERT_EQ(test, -EPROTO, xe_guc_relay_process_guc2pf(relay, msg, len));
129 static void pf_rejects_guc2pf_too_long(struct kunit *test)
132 struct xe_guc_relay *relay = test->priv;
135 KUNIT_ASSERT_EQ(test, -EMSGSIZE, xe_guc_relay_process_guc2pf(relay, msg, len));
138 static void pf_rejects_guc2pf_no_payload(struct kunit *test)
141 struct xe_guc_relay *relay = test->priv;
144 KUNIT_ASSERT_EQ(test, -EPROTO, xe_guc_relay_process_guc2pf(relay, msg, len));
147 static void pf_fails_no_payload(struct kunit *test)
149 struct xe_guc_relay *relay = test->priv;
152 KUNIT_ASSERT_EQ(test, -EPROTO, relay_process_msg(relay, TEST_VFID, TEST_RID, &msg, 0));
155 static void pf_fails_bad_origin(struct kunit *test)
157 struct xe_guc_relay *relay = test->priv;
164 KUNIT_ASSERT_EQ(test, -EPROTO, relay_process_msg(relay, TEST_VFID, TEST_RID, msg, len));
167 static void pf_fails_bad_type(struct kunit *test)
169 struct xe_guc_relay *relay = test->priv;
176 KUNIT_ASSERT_EQ(test, -EBADRQC, relay_process_msg(relay, TEST_VFID, TEST_RID, msg, len));
179 static void pf_txn_reports_error(struct kunit *test)
181 struct xe_guc_relay *relay = test->priv;
186 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, txn);
188 kunit_activate_static_stub(test, xe_guc_ct_send_recv,
190 KUNIT_EXPECT_EQ(test, -ECOMM, relay_send_transaction(relay, txn));
195 static void pf_txn_sends_pf2guc(struct kunit *test)
197 struct xe_guc_relay *relay = test->priv;
202 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, txn);
204 kunit_activate_static_stub(test, xe_guc_ct_send_recv,
206 KUNIT_ASSERT_EQ(test, 0, relay_send_transaction(relay, txn));
211 static void pf_sends_pf2guc(struct kunit *test)
213 struct xe_guc_relay *relay = test->priv;
215 kunit_activate_static_stub(test, xe_guc_ct_send_recv,
217 KUNIT_ASSERT_EQ(test, 0,
226 struct kunit *test = kunit_get_current_test();
227 struct xe_guc_relay *relay = test->priv;
228 u32 *reply = kunit_kzalloc(test, len * sizeof(u32), GFP_KERNEL);
233 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ct);
234 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, msg);
235 KUNIT_ASSERT_GE(test, len, GUC_HXG_MSG_MIN_LEN);
236 KUNIT_ASSERT_EQ(test, GUC_HXG_TYPE_REQUEST,
238 KUNIT_ASSERT_GE(test, len, GUC_HXG_REQUEST_MSG_MIN_LEN);
239 KUNIT_ASSERT_NOT_NULL(test, reply);
243 KUNIT_ASSERT_GE(test, len, PF2GUC_RELAY_TO_VF_REQUEST_MSG_MIN_LEN);
248 KUNIT_ASSERT_GE(test, len, VF2GUC_RELAY_TO_PF_REQUEST_MSG_MIN_LEN);
253 KUNIT_FAIL(test, "bad RELAY action %#x", msg[0]);
263 KUNIT_EXPECT_EQ(test, err, 0);
268 static void test_requires_relay_testloop(struct kunit *test)
276 kunit_skip(test, "requires %s\n", __stringify(CONFIG_DRM_XE_DEBUG_SRIOV));
279 static void pf_loopback_nop(struct kunit *test)
281 struct xe_guc_relay *relay = test->priv;
291 test_requires_relay_testloop(test);
293 kunit_activate_static_stub(test, relay_kick_worker, relay_process_incoming_action);
294 kunit_activate_static_stub(test, xe_guc_ct_send_recv,
299 KUNIT_ASSERT_EQ(test, ret, GUC_HXG_RESPONSE_MSG_MIN_LEN);
300 KUNIT_EXPECT_EQ(test, FIELD_GET(GUC_HXG_MSG_0_ORIGIN, response[0]),
302 KUNIT_EXPECT_EQ(test, FIELD_GET(GUC_HXG_MSG_0_TYPE, response[0]),
304 KUNIT_EXPECT_EQ(test, FIELD_GET(GUC_HXG_RESPONSE_MSG_0_DATA0, response[0]), 0);
307 static void pf_loopback_echo(struct kunit *test)
309 struct xe_guc_relay *relay = test->priv;
321 test_requires_relay_testloop(test);
323 kunit_activate_static_stub(test, relay_kick_worker, relay_process_incoming_action);
324 kunit_activate_static_stub(test, xe_guc_ct_send_recv,
329 KUNIT_ASSERT_EQ(test, ret, ARRAY_SIZE(response));
330 KUNIT_EXPECT_EQ(test, FIELD_GET(GUC_HXG_MSG_0_ORIGIN, response[0]),
332 KUNIT_EXPECT_EQ(test, FIELD_GET(GUC_HXG_MSG_0_TYPE, response[0]),
334 KUNIT_EXPECT_EQ(test, FIELD_GET(GUC_HXG_RESPONSE_MSG_0_DATA0, response[0]),
337 KUNIT_EXPECT_EQ(test, request[n], response[n]);
340 static void pf_loopback_fail(struct kunit *test)
342 struct xe_guc_relay *relay = test->priv;
352 test_requires_relay_testloop(test);
354 kunit_activate_static_stub(test, relay_kick_worker, relay_process_incoming_action);
355 kunit_activate_static_stub(test, xe_guc_ct_send_recv,
360 KUNIT_ASSERT_EQ(test, ret, -EREMOTEIO);
363 static void pf_loopback_busy(struct kunit *test)
365 struct xe_guc_relay *relay = test->priv;
376 test_requires_relay_testloop(test);
378 kunit_activate_static_stub(test, relay_testonly_nop, relay_process_incoming_action);
379 kunit_activate_static_stub(test, relay_kick_worker, relay_process_incoming_action);
380 kunit_activate_static_stub(test, xe_guc_ct_send_recv,
385 KUNIT_ASSERT_EQ(test, ret, GUC_HXG_RESPONSE_MSG_MIN_LEN);
388 static void pf_loopback_retry(struct kunit *test)
390 struct xe_guc_relay *relay = test->priv;
401 test_requires_relay_testloop(test);
403 kunit_activate_static_stub(test, relay_kick_worker, relay_process_incoming_action);
404 kunit_activate_static_stub(test, xe_guc_ct_send_recv,
409 KUNIT_ASSERT_EQ(test, ret, GUC_HXG_RESPONSE_MSG_MIN_LEN);
436 static void vf_rejects_guc2vf_too_short(struct kunit *test)
439 struct xe_guc_relay *relay = test->priv;
442 KUNIT_ASSERT_EQ(test, -EPROTO, xe_guc_relay_process_guc2vf(relay, msg, len));
445 static void vf_rejects_guc2vf_too_long(struct kunit *test)
448 struct xe_guc_relay *relay = test->priv;
451 KUNIT_ASSERT_EQ(test, -EMSGSIZE, xe_guc_relay_process_guc2vf(relay, msg, len));
454 static void vf_rejects_guc2vf_no_payload(struct kunit *test)
457 struct xe_guc_relay *relay = test->priv;
460 KUNIT_ASSERT_EQ(test, -EPROTO, xe_guc_relay_process_guc2vf(relay, msg, len));
476 static void xe_drops_guc2pf_if_not_ready(struct kunit *test)
478 struct xe_device *xe = test->priv;
483 KUNIT_ASSERT_EQ(test, -ENODEV, xe_guc_relay_process_guc2pf(relay, msg, len));
486 static void xe_drops_guc2vf_if_not_ready(struct kunit *test)
488 struct xe_device *xe = test->priv;
493 KUNIT_ASSERT_EQ(test, -ENODEV, xe_guc_relay_process_guc2vf(relay, msg, len));
496 static void xe_rejects_send_if_not_ready(struct kunit *test)
498 struct xe_device *xe = test->priv;
503 KUNIT_ASSERT_EQ(test, -ENODEV, xe_guc_relay_send_to_pf(relay, msg, len, NULL, 0));
504 KUNIT_ASSERT_EQ(test, -ENODEV, relay_send_to(relay, TEST_VFID, msg, len, NULL, 0));