1 // SPDX-License-Identifier: MIT
2 /*
3 * Copyright © 2023-2024 Intel Corporation
4 */
5
6 #include <linux/debugfs.h>
7
8 #include <drm/drm_debugfs.h>
9
10 #include "xe_gt_debugfs.h"
11 #include "xe_gt_sriov_vf.h"
12 #include "xe_gt_sriov_vf_debugfs.h"
13 #include "xe_gt_types.h"
14 #include "xe_sriov.h"
15
16 /*
17 * /sys/kernel/debug/dri/0/
18 * ├── gt0
19 * │ ├── vf
20 * │ │ ├── self_config
21 * │ │ ├── abi_versions
22 * │ │ ├── runtime_regs
23 */
24
25 static const struct drm_info_list vf_info[] = {
26 {
27 "self_config",
28 .show = xe_gt_debugfs_simple_show,
29 .data = xe_gt_sriov_vf_print_config,
30 },
31 {
32 "abi_versions",
33 .show = xe_gt_debugfs_simple_show,
34 .data = xe_gt_sriov_vf_print_version,
35 },
36 #if defined(CONFIG_DRM_XE_DEBUG) || defined(CONFIG_DRM_XE_DEBUG_SRIOV)
37 {
38 "runtime_regs",
39 .show = xe_gt_debugfs_simple_show,
40 .data = xe_gt_sriov_vf_print_runtime,
41 },
42 #endif
43 };
44
45 /**
46 * xe_gt_sriov_vf_debugfs_register - Register SR-IOV VF specific entries in GT debugfs.
47 * @gt: the &xe_gt to register
48 * @root: the &dentry that represents the GT directory
49 *
50 * Register SR-IOV VF entries that are GT related and must be shown under GT debugfs.
51 */
xe_gt_sriov_vf_debugfs_register(struct xe_gt * gt,struct dentry * root)52 void xe_gt_sriov_vf_debugfs_register(struct xe_gt *gt, struct dentry *root)
53 {
54 struct xe_device *xe = gt_to_xe(gt);
55 struct drm_minor *minor = xe->drm.primary;
56 struct dentry *vfdentry;
57
58 xe_assert(xe, IS_SRIOV_VF(xe));
59 xe_assert(xe, root->d_inode->i_private == gt);
60
61 /*
62 * /sys/kernel/debug/dri/0/
63 * ├── gt0
64 * │ ├── vf
65 */
66 vfdentry = debugfs_create_dir("vf", root);
67 if (IS_ERR(vfdentry))
68 return;
69 vfdentry->d_inode->i_private = gt;
70
71 drm_debugfs_create_files(vf_info, ARRAY_SIZE(vf_info), vfdentry, minor);
72 }
73