mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
drm/xe/pf: Don't show GGTT/LMEM debugfs files under media GT
Most of the PF's debugfs files (and their implementations) are based on the GT hierarchy even if files are related to GGTT or LMEM data, that are related to the tile. While we could reach the tile data from any GT, to avoid potential misuse, some functions allow to be used on the primary GT only, and may use asserts to enforce that. In our case, the following assert could be seen when reading the /sys/kernel/debug/dri/0000:00:02.0/gt1/pf/ggtt_available [ ] xe 0000:00:02.0: [drm] Assertion `!xe_gt_is_media_type(gt)` failed! [ ] WARNING: CPU: 4 PID: 10609 at drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c:379 pf_get_spare_ggtt+0x256/0x4e0 [xe] [ ] RIP: 0010:pf_get_spare_ggtt+0x256/0x4e0 [xe] [ ] Call Trace: [ ] <TASK> [ ] xe_gt_sriov_pf_config_print_available_ggtt+0xb7/0x480 [xe] [ ] ? __memcg_slab_post_alloc_hook+0x12f/0x3f0 [ ] xe_gt_debugfs_simple_show+0x7b/0xb0 [xe] [ ] ? __pfx___drm_printfn_seq_file+0x10/0x10 [ ] ? __pfx___drm_puts_seq_file+0x10/0x10 [ ] seq_read_iter+0x139/0x4e0 [ ] seq_read+0x11d/0x160 [ ] full_proxy_read+0x6b/0xb0 [ ] vfs_read+0xfa/0x390 Fix that by moving GGTT/LMEM debugfs attributes to separate lists and register them only when applicable (on primary GT, on DGFX). Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Tested-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com> Reviewed-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com> Link: https://lore.kernel.org/r/20250411193030.1865-1-michal.wajdeczko@intel.com
This commit is contained in:
parent
d11c5a928a
commit
84d3763598
|
|
@ -51,26 +51,17 @@ static unsigned int extract_vfid(struct dentry *d)
|
|||
* /sys/kernel/debug/dri/0/
|
||||
* ├── gt0
|
||||
* │ ├── pf
|
||||
* │ │ ├── ggtt_available
|
||||
* │ │ ├── ggtt_provisioned
|
||||
* │ │ ├── contexts_provisioned
|
||||
* │ │ ├── doorbells_provisioned
|
||||
* │ │ ├── runtime_registers
|
||||
* │ │ ├── negotiated_versions
|
||||
* │ │ ├── adverse_events
|
||||
* ├── gt1
|
||||
* │ ├── pf
|
||||
* │ │ ├── ...
|
||||
*/
|
||||
|
||||
static const struct drm_info_list pf_info[] = {
|
||||
{
|
||||
"ggtt_available",
|
||||
.show = xe_gt_debugfs_simple_show,
|
||||
.data = xe_gt_sriov_pf_config_print_available_ggtt,
|
||||
},
|
||||
{
|
||||
"ggtt_provisioned",
|
||||
.show = xe_gt_debugfs_simple_show,
|
||||
.data = xe_gt_sriov_pf_config_print_ggtt,
|
||||
},
|
||||
{
|
||||
"contexts_provisioned",
|
||||
.show = xe_gt_debugfs_simple_show,
|
||||
|
|
@ -81,11 +72,6 @@ static const struct drm_info_list pf_info[] = {
|
|||
.show = xe_gt_debugfs_simple_show,
|
||||
.data = xe_gt_sriov_pf_config_print_dbs,
|
||||
},
|
||||
{
|
||||
"lmem_provisioned",
|
||||
.show = xe_gt_debugfs_simple_show,
|
||||
.data = xe_gt_sriov_pf_config_print_lmem,
|
||||
},
|
||||
{
|
||||
"runtime_registers",
|
||||
.show = xe_gt_debugfs_simple_show,
|
||||
|
|
@ -103,6 +89,42 @@ static const struct drm_info_list pf_info[] = {
|
|||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* /sys/kernel/debug/dri/0/
|
||||
* ├── gt0
|
||||
* │ ├── pf
|
||||
* │ │ ├── ggtt_available
|
||||
* │ │ ├── ggtt_provisioned
|
||||
*/
|
||||
|
||||
static const struct drm_info_list pf_ggtt_info[] = {
|
||||
{
|
||||
"ggtt_available",
|
||||
.show = xe_gt_debugfs_simple_show,
|
||||
.data = xe_gt_sriov_pf_config_print_available_ggtt,
|
||||
},
|
||||
{
|
||||
"ggtt_provisioned",
|
||||
.show = xe_gt_debugfs_simple_show,
|
||||
.data = xe_gt_sriov_pf_config_print_ggtt,
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* /sys/kernel/debug/dri/0/
|
||||
* ├── gt0
|
||||
* │ ├── pf
|
||||
* │ │ ├── lmem_provisioned
|
||||
*/
|
||||
|
||||
static const struct drm_info_list pf_lmem_info[] = {
|
||||
{
|
||||
"lmem_provisioned",
|
||||
.show = xe_gt_debugfs_simple_show,
|
||||
.data = xe_gt_sriov_pf_config_print_lmem,
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* /sys/kernel/debug/dri/0/
|
||||
* ├── gt0
|
||||
|
|
@ -532,6 +554,16 @@ void xe_gt_sriov_pf_debugfs_register(struct xe_gt *gt, struct dentry *root)
|
|||
pfdentry->d_inode->i_private = gt;
|
||||
|
||||
drm_debugfs_create_files(pf_info, ARRAY_SIZE(pf_info), pfdentry, minor);
|
||||
if (!xe_gt_is_media_type(gt)) {
|
||||
drm_debugfs_create_files(pf_ggtt_info,
|
||||
ARRAY_SIZE(pf_ggtt_info),
|
||||
pfdentry, minor);
|
||||
if (IS_DGFX(gt_to_xe(gt)))
|
||||
drm_debugfs_create_files(pf_lmem_info,
|
||||
ARRAY_SIZE(pf_lmem_info),
|
||||
pfdentry, minor);
|
||||
}
|
||||
|
||||
pf_add_policy_attrs(gt, pfdentry);
|
||||
pf_add_config_attrs(gt, pfdentry, PFID);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user