| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Copyright © 2023 Intel Corporation |
| */ |
| |
| #include <drm/drm_drv.h> |
| #include <drm/drm_kunit_helpers.h> |
| |
| #include <kunit/test.h> |
| |
| #include "xe_device.h" |
| #include "xe_kunit_helpers.h" |
| #include "xe_pci_test.h" |
| #include "xe_reg_sr.h" |
| #include "xe_tuning.h" |
| #include "xe_wa.h" |
| |
| static int xe_wa_test_init(struct kunit *test) |
| { |
| const struct xe_pci_fake_data *param = test->param_value; |
| struct xe_pci_fake_data data = *param; |
| struct xe_device *xe; |
| struct device *dev; |
| int ret; |
| |
| dev = drm_kunit_helper_alloc_device(test); |
| KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev); |
| |
| xe = xe_kunit_helper_alloc_xe_device(test, dev); |
| KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xe); |
| |
| test->priv = &data; |
| ret = xe_pci_fake_device_init(xe); |
| KUNIT_ASSERT_EQ(test, ret, 0); |
| |
| if (!param->graphics_verx100) |
| xe->info.step = param->step; |
| |
| /* TODO: init hw engines for engine/LRC WAs */ |
| xe->drm.dev = dev; |
| test->priv = xe; |
| |
| return 0; |
| } |
| |
| static void xe_wa_gt(struct kunit *test) |
| { |
| struct xe_device *xe = test->priv; |
| struct xe_gt *gt; |
| int id; |
| |
| for_each_gt(gt, xe, id) { |
| xe_reg_sr_init(>->reg_sr, "GT", xe); |
| |
| xe_wa_process_gt(gt); |
| xe_tuning_process_gt(gt); |
| |
| KUNIT_ASSERT_EQ(test, gt->reg_sr.errors, 0); |
| } |
| } |
| |
| static struct kunit_case xe_wa_tests[] = { |
| KUNIT_CASE_PARAM(xe_wa_gt, xe_pci_fake_data_gen_params), |
| {} |
| }; |
| |
| static struct kunit_suite xe_rtp_test_suite = { |
| .name = "xe_wa", |
| .init = xe_wa_test_init, |
| .test_cases = xe_wa_tests, |
| }; |
| |
| kunit_test_suite(xe_rtp_test_suite); |