]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/xe/guc: Don't expose GuC privileged debugfs files if VF
authorMichal Wajdeczko <michal.wajdeczko@intel.com>
Thu, 3 Apr 2025 14:26:34 +0000 (16:26 +0200)
committerMichal Wajdeczko <michal.wajdeczko@intel.com>
Fri, 11 Apr 2025 10:14:30 +0000 (12:14 +0200)
Some of the GuC debugfs files require access to the data that is
not available on the VFs. Don't expose those files on the VF driver.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://lore.kernel.org/r/20250403142635.1821-3-michal.wajdeczko@intel.com
drivers/gpu/drm/xe/xe_guc_debugfs.c

index 9a1c78b89f457cd6f47e9a04e13e633bbf3baaea..f33013f8a0f38a3091e5e99c405ed84f2c16da0b 100644 (file)
@@ -103,11 +103,20 @@ static int guc_pc(struct xe_guc *guc, struct drm_printer *p)
        return 0;
 }
 
-static const struct drm_info_list debugfs_list[] = {
+/*
+ * only for GuC debugfs files which can be safely used on the VF as well:
+ * - without access to the GuC privileged registers
+ * - without access to the PF specific GuC objects
+ */
+static const struct drm_info_list vf_safe_debugfs_list[] = {
        { "guc_info", .show = guc_debugfs_show, .data = xe_guc_print_info },
+       { "guc_ctb", .show = guc_debugfs_show, .data = guc_ctb },
+};
+
+/* everything else should be added here */
+static const struct drm_info_list pf_only_debugfs_list[] = {
        { "guc_log", .show = guc_debugfs_show, .data = guc_log },
        { "guc_log_dmesg", .show = guc_debugfs_show, .data = guc_log_dmesg },
-       { "guc_ctb", .show = guc_debugfs_show, .data = guc_ctb },
        { "guc_pc", .show = guc_debugfs_show, .data = guc_pc },
 };
 
@@ -115,7 +124,12 @@ void xe_guc_debugfs_register(struct xe_guc *guc, struct dentry *parent)
 {
        struct drm_minor *minor = guc_to_xe(guc)->drm.primary;
 
-       drm_debugfs_create_files(debugfs_list,
-                                ARRAY_SIZE(debugfs_list),
+       drm_debugfs_create_files(vf_safe_debugfs_list,
+                                ARRAY_SIZE(vf_safe_debugfs_list),
                                 parent, minor);
+
+       if (!IS_SRIOV_VF(guc_to_xe(guc)))
+               drm_debugfs_create_files(pf_only_debugfs_list,
+                                        ARRAY_SIZE(pf_only_debugfs_list),
+                                        parent, minor);
 }