xref: /linux/drivers/gpu/drm/xe/tests/xe_wa_test.c (revision 68a052239fc4b351e961f698b824f7654a346091)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright © 2023 Intel Corporation
4  */
5 
6 #include <drm/drm_drv.h>
7 #include <drm/drm_kunit_helpers.h>
8 
9 #include <kunit/test.h>
10 
11 #include "xe_device.h"
12 #include "xe_kunit_helpers.h"
13 #include "xe_pci_test.h"
14 #include "xe_reg_sr.h"
15 #include "xe_tuning.h"
16 #include "xe_wa.h"
17 
18 static int xe_wa_test_init(struct kunit *test)
19 {
20 	const struct xe_pci_fake_data *param = test->param_value;
21 	struct xe_pci_fake_data data = *param;
22 	struct xe_device *xe;
23 	struct device *dev;
24 	int ret;
25 
26 	dev = drm_kunit_helper_alloc_device(test);
27 	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
28 
29 	xe = xe_kunit_helper_alloc_xe_device(test, dev);
30 	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xe);
31 
32 	test->priv = &data;
33 	ret = xe_pci_fake_device_init(xe);
34 	KUNIT_ASSERT_EQ(test, ret, 0);
35 
36 	if (!param->graphics_verx100)
37 		xe->info.step = param->step;
38 
39 	/* TODO: init hw engines for engine/LRC WAs */
40 	xe->drm.dev = dev;
41 	test->priv = xe;
42 
43 	return 0;
44 }
45 
46 static void xe_wa_gt(struct kunit *test)
47 {
48 	struct xe_device *xe = test->priv;
49 	struct xe_gt *gt;
50 	int id;
51 
52 	for_each_gt(gt, xe, id) {
53 		xe_reg_sr_init(&gt->reg_sr, "GT", xe);
54 
55 		xe_wa_process_gt(gt);
56 		xe_tuning_process_gt(gt);
57 
58 		KUNIT_ASSERT_EQ(test, gt->reg_sr.errors, 0);
59 	}
60 }
61 
62 static struct kunit_case xe_wa_tests[] = {
63 	KUNIT_CASE_PARAM(xe_wa_gt, xe_pci_fake_data_gen_params),
64 	{}
65 };
66 
67 static struct kunit_suite xe_rtp_test_suite = {
68 	.name = "xe_wa",
69 	.init = xe_wa_test_init,
70 	.test_cases = xe_wa_tests,
71 };
72 
73 kunit_test_suite(xe_rtp_test_suite);
74