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 */ 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