drivers/gpu/drm/xe/tests/xe_wa_test.c

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/xe/tests/xe_wa_test.c

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/xe/tests/xe_wa_test.c
Extension
.c
Size
1688 bytes
Lines
84
Domain
Driver Families
Bucket
drivers/gpu
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

// 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_gt.h"
#include "xe_gt_mcr.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 device *dev;
	struct xe_device *xe;
	struct xe_gt *gt;
	int id;
	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);

	/* Needed for sanitize_mcr(). */
	for_each_gt(gt, xe, id) {
		xe_gt_mcr_init_early(gt);
		xe_gt_mmio_init(gt);
	}

	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(&gt->reg_sr, "GT", xe);

		xe_wa_process_gt(gt);
		xe_tuning_process_gt(gt);

		KUNIT_EXPECT_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);

Annotation

Implementation Notes