When the PF is configured for admin‑only mode, it is restricted to
management functions and should not expose a device node that would
allow users to run workloads.

In this mode, no DRM device entry is created; however, sysfs and debugfs
interfaces for the PF remain available at:

sysfs: /sys/devices/pci0000:00/<B:D:F>
debugfs: /sys/kernel/debug/dri/<B:D:F>

Signed-off-by: Satyanarayana K V P <[email protected]>
Cc: Michal Wajdeczko <[email protected]>
Cc: Rodrigo Vivi <[email protected]>
Cc: Piotr Piórkowski <[email protected]>
Cc: [email protected]

---
V2 -> V3:
- Introduced new helper function xe_debugfs_create_files() to create
debugfs entries based on admin_only_pf mode or normal mode.

V1 -> V2:
- Rebased to latest drm-tip.
- Update update_minor_dev() to debugfs_minor_dev().
---
 drivers/gpu/drm/xe/Makefile                   |  1 +
 drivers/gpu/drm/xe/xe_debugfs.c               | 18 +++--
 drivers/gpu/drm/xe/xe_debugfs_helpers.c       | 78 +++++++++++++++++++
 drivers/gpu/drm/xe/xe_debugfs_helpers.h       | 27 +++++++
 drivers/gpu/drm/xe/xe_device.c                | 20 +++--
 drivers/gpu/drm/xe/xe_gsc_debugfs.c           |  8 +-
 drivers/gpu/drm/xe/xe_gt_debugfs.c            | 20 +++--
 drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c   |  5 +-
 drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c   |  5 +-
 drivers/gpu/drm/xe/xe_guc_debugfs.c           | 20 ++---
 drivers/gpu/drm/xe/xe_huc_debugfs.c           |  8 +-
 drivers/gpu/drm/xe/xe_pxp_debugfs.c           | 23 ++++--
 drivers/gpu/drm/xe/xe_sriov.h                 |  8 ++
 drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c      |  5 +-
 drivers/gpu/drm/xe/xe_sriov_vf.c              |  5 +-
 drivers/gpu/drm/xe/xe_tile_debugfs.c          | 10 +--
 drivers/gpu/drm/xe/xe_tile_sriov_pf_debugfs.c | 14 ++--
 17 files changed, 202 insertions(+), 73 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/xe_debugfs_helpers.c
 create mode 100644 drivers/gpu/drm/xe/xe_debugfs_helpers.h

diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 41ec698b3cc1..31901da1eff2 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -35,6 +35,7 @@ $(obj)/generated/%_device_wa_oob.c 
$(obj)/generated/%_device_wa_oob.h: $(obj)/xe
 xe-y += xe_bb.o \
        xe_bo.o \
        xe_bo_evict.o \
+       xe_debugfs_helpers.o \
        xe_dep_scheduler.o \
        xe_devcoredump.o \
        xe_device.o \
diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index 844cfafe1ec7..b560c170aaf1 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -13,6 +13,7 @@
 
 #include "regs/xe_pmt.h"
 #include "xe_bo.h"
+#include "xe_debugfs_helpers.h"
 #include "xe_device.h"
 #include "xe_force_wake.h"
 #include "xe_gt_debugfs.h"
@@ -512,22 +513,23 @@ static const struct file_operations 
disable_late_binding_fops = {
 void xe_debugfs_register(struct xe_device *xe)
 {
        struct ttm_device *bdev = &xe->ttm;
-       struct drm_minor *minor = xe->drm.primary;
-       struct dentry *root = minor->debugfs_root;
        struct ttm_resource_manager *man;
        struct xe_tile *tile;
+       struct dentry *root;
        struct xe_gt *gt;
        u8 tile_id;
        u8 id;
 
-       drm_debugfs_create_files(debugfs_list,
-                                ARRAY_SIZE(debugfs_list),
-                                root, minor);
+       root = xe_debugfs_root_dir(xe);
+
+       xe_debugfs_create_files(debugfs_list,
+                               ARRAY_SIZE(debugfs_list),
+                               root, xe);
 
        if (xe->info.platform == XE_BATTLEMAGE && !IS_SRIOV_VF(xe)) {
-               drm_debugfs_create_files(debugfs_residencies,
-                                        ARRAY_SIZE(debugfs_residencies),
-                                        root, minor);
+               xe_debugfs_create_files(debugfs_residencies,
+                                       ARRAY_SIZE(debugfs_residencies),
+                                       root, xe);
                fault_create_debugfs_attr("inject_csc_hw_error", root,
                                          &inject_csc_hw_error);
        }
diff --git a/drivers/gpu/drm/xe/xe_debugfs_helpers.c 
b/drivers/gpu/drm/xe/xe_debugfs_helpers.c
new file mode 100644
index 000000000000..c8b4a088cf28
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_debugfs_helpers.c
@@ -0,0 +1,78 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#include <drm/drm_debugfs.h>
+#include <drm/drm_drv.h>
+#include <drm/drm_managed.h>
+
+#include <linux/debugfs.h>
+
+#include "xe_debugfs_helpers.h"
+
+static int xe_debugfs_open(struct inode *inode, struct file *file)
+{
+       struct drm_info_node *node = inode->i_private;
+
+       return single_open(file, node->info_ent->show, node);
+}
+
+static const struct file_operations xe_debugfs_fops = {
+       .owner = THIS_MODULE,
+       .open = xe_debugfs_open,
+       .read = seq_read,
+       .llseek = seq_lseek,
+       .release = single_release,
+};
+
+/**
+ * xe_debugfs_create_files - Initialize a given set of debugfs files.
+ * @files: The array of files to create.
+ * @count: The number of files given.
+ * @root: debugfs dir root entry.
+ * @xe: the &xe_device to register
+ *
+ * Create a given set of debugfs files represented by an array of
+ * &struct drm_info_list in the given root directory. These files will be
+ * removed automatically on drm_debugfs_dev_fini().
+ *
+ * Returns 0 on success, negative error code on failure.
+ */
+int xe_debugfs_create_files(const struct drm_info_list *files, int count,
+                           struct dentry *root, struct xe_device *xe)
+{
+       struct drm_device *dev = &xe->drm;
+       struct drm_info_node *tmp;
+       struct drm_minor *minor;
+       int i;
+
+       if (!xe_device_is_admin_only(xe)) {
+               minor = dev->primary;
+               drm_debugfs_create_files(files, count, root, minor);
+               return 0;
+       }
+
+       for (i = 0; i < count; i++) {
+               u32 features = files[i].driver_features;
+
+               if (features && !drm_core_check_all_features(dev, features))
+                       continue;
+
+               tmp = drmm_kzalloc(dev, sizeof(*tmp), GFP_KERNEL);
+               if (!tmp)
+                       return -ENOMEM;
+
+               tmp->minor = drmm_kzalloc(dev, sizeof(*tmp->minor), GFP_KERNEL);
+               if (!tmp->minor)
+                       return -ENOMEM;
+
+               tmp->minor->dev = dev;
+               tmp->dent = debugfs_create_file(files[i].name,
+                                               0444, root, tmp,
+                                               &xe_debugfs_fops);
+               tmp->info_ent = &files[i];
+       }
+
+       return 0;
+}
diff --git a/drivers/gpu/drm/xe/xe_debugfs_helpers.h 
b/drivers/gpu/drm/xe/xe_debugfs_helpers.h
new file mode 100644
index 000000000000..15f9e51e0d27
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_debugfs_helpers.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2026-2027 Intel Corporation
+ */
+
+#ifndef _XE_DEBUGFS_HELPERS_H_
+#define _XE_DEBUGFS_HELPERS_H_
+
+#include "xe_gt_types.h"
+#include "xe_sriov.h"
+
+struct drm_info_list;
+
+int xe_debugfs_create_files(const struct drm_info_list *files, int count,
+                           struct dentry *root, struct xe_device *xe);
+
+static inline struct dentry *xe_debugfs_root_dir(struct xe_device *xe)
+{
+       struct drm_minor *minor = xe->drm.primary;
+
+       if (xe_device_is_admin_only(xe))
+               return xe->drm.debugfs_root;
+       else
+               return minor->debugfs_root;
+}
+#endif
+
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 3462645ca13c..e6df3091659f 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -971,15 +971,17 @@ int xe_device_probe(struct xe_device *xe)
        if (err)
                return err;
 
-       err = drm_dev_register(&xe->drm, 0);
-       if (err)
-               return err;
+       if (!xe_device_is_admin_only(xe)) {
+               err = drm_dev_register(&xe->drm, 0);
+               if (err)
+                       return err;
 
-       xe_display_register(xe);
+               err = xe_oa_register(xe);
+               if (err)
+                       goto err_drm_dev_unregister;
+       }
 
-       err = xe_oa_register(xe);
-       if (err)
-               goto err_unregister_display;
+       xe_display_register(xe);
 
        err = xe_pmu_register(&xe->pmu);
        if (err)
@@ -1014,6 +1016,7 @@ int xe_device_probe(struct xe_device *xe)
 
 err_unregister_display:
        xe_display_unregister(xe);
+err_drm_dev_unregister:
        drm_dev_unregister(&xe->drm);
 
        return err;
@@ -1023,7 +1026,8 @@ void xe_device_remove(struct xe_device *xe)
 {
        xe_display_unregister(xe);
 
-       drm_dev_unplug(&xe->drm);
+       if (!xe_device_is_admin_only(xe))
+               drm_dev_unplug(&xe->drm);
 
        xe_bo_pci_dev_remove_all(xe);
 }
diff --git a/drivers/gpu/drm/xe/xe_gsc_debugfs.c 
b/drivers/gpu/drm/xe/xe_gsc_debugfs.c
index d4977e666946..cbd057ce8571 100644
--- a/drivers/gpu/drm/xe/xe_gsc_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_gsc_debugfs.c
@@ -9,6 +9,7 @@
 #include <drm/drm_managed.h>
 #include <drm/drm_print.h>
 
+#include "xe_debugfs_helpers.h"
 #include "xe_gt_types.h"
 #include "xe_gsc.h"
 #include "xe_pm.h"
@@ -48,7 +49,6 @@ static const struct drm_info_list debugfs_list[] = {
 
 void xe_gsc_debugfs_register(struct xe_gsc *gsc, struct dentry *parent)
 {
-       struct drm_minor *minor = gsc_to_xe(gsc)->drm.primary;
        struct drm_info_list *local;
        int i;
 
@@ -63,7 +63,7 @@ void xe_gsc_debugfs_register(struct xe_gsc *gsc, struct 
dentry *parent)
        for (i = 0; i < ARRAY_SIZE(debugfs_list); ++i)
                local[i].data = gsc;
 
-       drm_debugfs_create_files(local,
-                                ARRAY_SIZE(debugfs_list),
-                                parent, minor);
+       xe_debugfs_create_files(local,
+                               ARRAY_SIZE(debugfs_list),
+                               parent, gsc_to_xe(gsc));
 }
diff --git a/drivers/gpu/drm/xe/xe_gt_debugfs.c 
b/drivers/gpu/drm/xe/xe_gt_debugfs.c
index f45306308cd6..24db5aef56a2 100644
--- a/drivers/gpu/drm/xe/xe_gt_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_debugfs.c
@@ -10,6 +10,7 @@
 #include <drm/drm_debugfs.h>
 #include <drm/drm_managed.h>
 
+#include "xe_debugfs_helpers.h"
 #include "xe_device.h"
 #include "xe_force_wake.h"
 #include "xe_gt.h"
@@ -339,11 +340,13 @@ void xe_gt_debugfs_register(struct xe_gt *gt)
        struct xe_device *xe = gt_to_xe(gt);
        struct drm_minor *minor = gt_to_xe(gt)->drm.primary;
        struct dentry *parent = gt->tile->debugfs;
+       struct dentry *xe_debugfs_root;
        struct dentry *root;
        char symlink[16];
        char name[8];
 
-       xe_gt_assert(gt, minor->debugfs_root);
+       if (!xe_device_is_admin_only(xe))
+               xe_gt_assert(gt, minor->debugfs_root);
 
        if (IS_ERR(parent))
                return;
@@ -367,14 +370,14 @@ void xe_gt_debugfs_register(struct xe_gt *gt)
        debugfs_create_file("force_reset", 0600, root, gt, &force_reset_fops);
        debugfs_create_file("force_reset_sync", 0600, root, gt, 
&force_reset_sync_fops);
 
-       drm_debugfs_create_files(vf_safe_debugfs_list,
-                                ARRAY_SIZE(vf_safe_debugfs_list),
-                                root, minor);
+       xe_debugfs_create_files(vf_safe_debugfs_list,
+                               ARRAY_SIZE(vf_safe_debugfs_list),
+                               root, xe);
 
        if (!IS_SRIOV_VF(xe))
-               drm_debugfs_create_files(pf_only_debugfs_list,
-                                        ARRAY_SIZE(pf_only_debugfs_list),
-                                        root, minor);
+               xe_debugfs_create_files(pf_only_debugfs_list,
+                                       ARRAY_SIZE(pf_only_debugfs_list),
+                                       root, xe);
 
        xe_uc_debugfs_register(&gt->uc, root);
 
@@ -388,5 +391,6 @@ void xe_gt_debugfs_register(struct xe_gt *gt)
         * who may expect gt/ directory at the root level, not the tile level.
         */
        snprintf(symlink, sizeof(symlink), "tile%u/%s", gt->tile->id, name);
-       debugfs_create_symlink(name, minor->debugfs_root, symlink);
+       xe_debugfs_root = xe_debugfs_root_dir(xe);
+       debugfs_create_symlink(name, xe_debugfs_root, symlink);
 }
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c 
b/drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c
index ffa27f66bba7..a8892fd9cf4c 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c
@@ -8,7 +8,7 @@
 #include <drm/drm_print.h>
 #include <drm/drm_debugfs.h>
 
-#include "xe_debugfs.h"
+#include "xe_debugfs_helpers.h"
 #include "xe_device.h"
 #include "xe_gt.h"
 #include "xe_gt_debugfs.h"
@@ -806,7 +806,6 @@ static void pf_add_compat_attrs(struct xe_gt *gt, struct 
dentry *dent, unsigned
 static void pf_populate_gt(struct xe_gt *gt, struct dentry *dent, unsigned int 
vfid)
 {
        struct xe_device *xe = gt_to_xe(gt);
-       struct drm_minor *minor = xe->drm.primary;
 
        if (vfid) {
                pf_add_config_attrs(gt, dent, vfid);
@@ -826,7 +825,7 @@ static void pf_populate_gt(struct xe_gt *gt, struct dentry 
*dent, unsigned int v
                pf_add_policy_attrs(gt, dent);
                pf_add_sched_groups(gt, dent, PFID);
 
-               drm_debugfs_create_files(pf_info, ARRAY_SIZE(pf_info), dent, 
minor);
+               xe_debugfs_create_files(pf_info, ARRAY_SIZE(pf_info), dent, xe);
        }
 
        /* for backward compatibility only */
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c 
b/drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c
index 507718326e1f..5d6ee9728f68 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c
@@ -7,11 +7,11 @@
 
 #include <drm/drm_debugfs.h>
 
+#include "xe_debugfs_helpers.h"
 #include "xe_gt_debugfs.h"
 #include "xe_gt_sriov_vf.h"
 #include "xe_gt_sriov_vf_debugfs.h"
 #include "xe_gt_types.h"
-#include "xe_sriov.h"
 
 /*
  *      /sys/kernel/debug/dri/0/
@@ -52,7 +52,6 @@ static const struct drm_info_list vf_info[] = {
 void xe_gt_sriov_vf_debugfs_register(struct xe_gt *gt, struct dentry *root)
 {
        struct xe_device *xe = gt_to_xe(gt);
-       struct drm_minor *minor = xe->drm.primary;
        struct dentry *vfdentry;
 
        xe_assert(xe, IS_SRIOV_VF(xe));
@@ -68,7 +67,7 @@ void xe_gt_sriov_vf_debugfs_register(struct xe_gt *gt, struct 
dentry *root)
                return;
        vfdentry->d_inode->i_private = gt;
 
-       drm_debugfs_create_files(vf_info, ARRAY_SIZE(vf_info), vfdentry, minor);
+       xe_debugfs_create_files(vf_info, ARRAY_SIZE(vf_info), vfdentry, xe);
 
        /*
         *      /sys/kernel/debug/dri/BDF/
diff --git a/drivers/gpu/drm/xe/xe_guc_debugfs.c 
b/drivers/gpu/drm/xe/xe_guc_debugfs.c
index 2f23119686d4..ddd3d209328a 100644
--- a/drivers/gpu/drm/xe/xe_guc_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_guc_debugfs.c
@@ -8,6 +8,7 @@
 #include <drm/drm_debugfs.h>
 #include <drm/drm_managed.h>
 
+#include "xe_debugfs_helpers.h"
 #include "xe_device_types.h"
 #include "xe_gt_types.h"
 #include "xe_guc.h"
@@ -129,20 +130,19 @@ static const struct drm_info_list pf_only_debugfs_list[] 
= {
 void xe_guc_debugfs_register(struct xe_guc *guc, struct dentry *parent)
 {
        struct xe_device *xe =  guc_to_xe(guc);
-       struct drm_minor *minor = xe->drm.primary;
 
-       drm_debugfs_create_files(vf_safe_debugfs_list,
-                                ARRAY_SIZE(vf_safe_debugfs_list),
-                                parent, minor);
+       xe_debugfs_create_files(vf_safe_debugfs_list,
+                               ARRAY_SIZE(vf_safe_debugfs_list),
+                               parent, xe);
 
        if (!IS_SRIOV_VF(xe)) {
-               drm_debugfs_create_files(pf_only_debugfs_list,
-                                        ARRAY_SIZE(pf_only_debugfs_list),
-                                        parent, minor);
+               xe_debugfs_create_files(pf_only_debugfs_list,
+                                       ARRAY_SIZE(pf_only_debugfs_list),
+                                       parent, xe);
 
                if (!xe->info.skip_guc_pc)
-                       drm_debugfs_create_files(slpc_debugfs_list,
-                                                ARRAY_SIZE(slpc_debugfs_list),
-                                                parent, minor);
+                       xe_debugfs_create_files(slpc_debugfs_list,
+                                               ARRAY_SIZE(slpc_debugfs_list),
+                                               parent, xe);
        }
 }
diff --git a/drivers/gpu/drm/xe/xe_huc_debugfs.c 
b/drivers/gpu/drm/xe/xe_huc_debugfs.c
index 80829967b3d7..59de78355eee 100644
--- a/drivers/gpu/drm/xe/xe_huc_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_huc_debugfs.c
@@ -9,6 +9,7 @@
 #include <drm/drm_managed.h>
 #include <drm/drm_print.h>
 
+#include "xe_debugfs_helpers.h"
 #include "xe_gt_types.h"
 #include "xe_huc.h"
 #include "xe_pm.h"
@@ -48,7 +49,6 @@ static const struct drm_info_list debugfs_list[] = {
 
 void xe_huc_debugfs_register(struct xe_huc *huc, struct dentry *parent)
 {
-       struct drm_minor *minor = huc_to_xe(huc)->drm.primary;
        struct drm_info_list *local;
        int i;
 
@@ -63,7 +63,7 @@ void xe_huc_debugfs_register(struct xe_huc *huc, struct 
dentry *parent)
        for (i = 0; i < ARRAY_SIZE(debugfs_list); ++i)
                local[i].data = huc;
 
-       drm_debugfs_create_files(local,
-                                ARRAY_SIZE(debugfs_list),
-                                parent, minor);
+       xe_debugfs_create_files(local,
+                               ARRAY_SIZE(debugfs_list),
+                               parent, huc_to_xe(huc));
 }
diff --git a/drivers/gpu/drm/xe/xe_pxp_debugfs.c 
b/drivers/gpu/drm/xe/xe_pxp_debugfs.c
index d6e2e41bc88c..c807f992ed6a 100644
--- a/drivers/gpu/drm/xe/xe_pxp_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_pxp_debugfs.c
@@ -11,6 +11,7 @@
 #include <drm/drm_managed.h>
 #include <drm/drm_print.h>
 
+#include "xe_debugfs_helpers.h"
 #include "xe_device_types.h"
 #include "xe_pxp.h"
 #include "xe_pxp_types.h"
@@ -96,17 +97,22 @@ static const struct drm_info_list debugfs_list[] = {
 
 void xe_pxp_debugfs_register(struct xe_pxp *pxp)
 {
-       struct drm_minor *minor;
        struct drm_info_list *local;
+       struct drm_minor *minor;
+       struct xe_device *xe;
        struct dentry *root;
        int i;
 
        if (!xe_pxp_is_enabled(pxp))
                return;
 
-       minor = pxp->xe->drm.primary;
-       if (!minor->debugfs_root)
-               return;
+       xe = pxp->xe;
+
+       if (!xe_device_is_admin_only(xe)) {
+               minor = xe->drm.primary;
+               if (!minor->debugfs_root)
+                       return;
+       }
 
 #define DEBUGFS_SIZE   (ARRAY_SIZE(debugfs_list) * sizeof(struct 
drm_info_list))
        local = drmm_kmalloc(&pxp->xe->drm, DEBUGFS_SIZE, GFP_KERNEL);
@@ -119,11 +125,12 @@ void xe_pxp_debugfs_register(struct xe_pxp *pxp)
        for (i = 0; i < ARRAY_SIZE(debugfs_list); ++i)
                local[i].data = pxp;
 
-       root = debugfs_create_dir("pxp", minor->debugfs_root);
+       root = xe_debugfs_root_dir(xe);
+       root = debugfs_create_dir("pxp", root);
        if (IS_ERR(root))
                return;
 
-       drm_debugfs_create_files(local,
-                                ARRAY_SIZE(debugfs_list),
-                                root, minor);
+       xe_debugfs_create_files(local,
+                               ARRAY_SIZE(debugfs_list),
+                               root, xe);
 }
diff --git a/drivers/gpu/drm/xe/xe_sriov.h b/drivers/gpu/drm/xe/xe_sriov.h
index 72e55543c30e..be426afa90b1 100644
--- a/drivers/gpu/drm/xe/xe_sriov.h
+++ b/drivers/gpu/drm/xe/xe_sriov.h
@@ -37,6 +37,14 @@ static inline bool xe_device_is_sriov_vf(const struct 
xe_device *xe)
        return xe_device_sriov_mode(xe) == XE_SRIOV_MODE_VF;
 }
 
+static inline bool xe_device_is_admin_only(const struct xe_device *xe)
+{
+       if (xe_device_is_sriov_pf(xe) && xe->sriov.pf.admin_only)
+               return true;
+       else
+               return false;
+}
+
 #define IS_SRIOV_PF(xe) xe_device_is_sriov_pf(xe)
 #define IS_SRIOV_VF(xe) xe_device_is_sriov_vf(xe)
 
diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c 
b/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c
index 81b377830d6d..68afcd5a0dc4 100644
--- a/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_sriov_pf_debugfs.c
@@ -6,6 +6,7 @@
 #include <linux/debugfs.h>
 #include <drm/drm_debugfs.h>
 
+#include "xe_debugfs_helpers.h"
 #include "xe_device.h"
 #include "xe_device_types.h"
 #include "xe_pm.h"
@@ -152,9 +153,7 @@ static const struct drm_info_list debugfs_list[] = {
 
 static void pf_populate_pf(struct xe_device *xe, struct dentry *pfdent)
 {
-       struct drm_minor *minor = xe->drm.primary;
-
-       drm_debugfs_create_files(debugfs_list, ARRAY_SIZE(debugfs_list), 
pfdent, minor);
+       xe_debugfs_create_files(debugfs_list, ARRAY_SIZE(debugfs_list), pfdent, 
xe);
 }
 
 /*
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
index 29894bd081c0..61c8d199f18b 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
@@ -6,6 +6,7 @@
 #include <drm/drm_debugfs.h>
 #include <drm/drm_managed.h>
 
+#include "xe_debugfs_helpers.h"
 #include "xe_gt_sriov_vf.h"
 #include "xe_guc.h"
 #include "xe_sriov_printk.h"
@@ -281,6 +282,6 @@ static const struct drm_info_list debugfs_list[] = {
  */
 void xe_sriov_vf_debugfs_register(struct xe_device *xe, struct dentry *root)
 {
-       drm_debugfs_create_files(debugfs_list, ARRAY_SIZE(debugfs_list),
-                                root, xe->drm.primary);
+       xe_debugfs_create_files(debugfs_list, ARRAY_SIZE(debugfs_list),
+                               root, xe);
 }
diff --git a/drivers/gpu/drm/xe/xe_tile_debugfs.c 
b/drivers/gpu/drm/xe/xe_tile_debugfs.c
index 5df2f461b7b7..79bd87c9fe67 100644
--- a/drivers/gpu/drm/xe/xe_tile_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_tile_debugfs.c
@@ -6,6 +6,7 @@
 #include <linux/debugfs.h>
 #include <drm/drm_debugfs.h>
 
+#include "xe_debugfs_helpers.h"
 #include "xe_ggtt.h"
 #include "xe_pm.h"
 #include "xe_sa.h"
@@ -123,8 +124,7 @@ static void tile_debugfs_create_vram_mm(struct xe_tile 
*tile)
 void xe_tile_debugfs_register(struct xe_tile *tile)
 {
        struct xe_device *xe = tile_to_xe(tile);
-       struct drm_minor *minor = xe->drm.primary;
-       struct dentry *root = minor->debugfs_root;
+       struct dentry *root = xe_debugfs_root_dir(xe);
        char name[8];
 
        snprintf(name, sizeof(name), "tile%u", tile->id);
@@ -139,9 +139,9 @@ void xe_tile_debugfs_register(struct xe_tile *tile)
         */
        tile->debugfs->d_inode->i_private = tile;
 
-       drm_debugfs_create_files(vf_safe_debugfs_list,
-                                ARRAY_SIZE(vf_safe_debugfs_list),
-                                tile->debugfs, minor);
+       xe_debugfs_create_files(vf_safe_debugfs_list,
+                               ARRAY_SIZE(vf_safe_debugfs_list),
+                               tile->debugfs, xe);
 
        tile_debugfs_create_vram_mm(tile);
 }
diff --git a/drivers/gpu/drm/xe/xe_tile_sriov_pf_debugfs.c 
b/drivers/gpu/drm/xe/xe_tile_sriov_pf_debugfs.c
index 7f97db2f89bb..fd352be6840d 100644
--- a/drivers/gpu/drm/xe/xe_tile_sriov_pf_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_tile_sriov_pf_debugfs.c
@@ -8,6 +8,7 @@
 
 #include "xe_device.h"
 #include "xe_device_types.h"
+#include "xe_debugfs_helpers.h"
 #include "xe_gt_sriov_pf_config.h"
 #include "xe_gt_sriov_pf_debugfs.h"
 #include "xe_pm.h"
@@ -183,20 +184,19 @@ static void pf_add_config_attrs(struct xe_tile *tile, 
struct dentry *dent, unsig
 static void pf_populate_tile(struct xe_tile *tile, struct dentry *dent, 
unsigned int vfid)
 {
        struct xe_device *xe = tile->xe;
-       struct drm_minor *minor = xe->drm.primary;
        struct xe_gt *gt;
        unsigned int id;
 
        pf_add_config_attrs(tile, dent, vfid);
 
        if (!vfid) {
-               drm_debugfs_create_files(pf_ggtt_info,
-                                        ARRAY_SIZE(pf_ggtt_info),
-                                        dent, minor);
+               xe_debugfs_create_files(pf_ggtt_info,
+                                       ARRAY_SIZE(pf_ggtt_info),
+                                       dent, xe);
                if (IS_DGFX(xe))
-                       drm_debugfs_create_files(pf_vram_info,
-                                                ARRAY_SIZE(pf_vram_info),
-                                                dent, minor);
+                       xe_debugfs_create_files(pf_vram_info,
+                                               ARRAY_SIZE(pf_vram_info),
+                                               dent, xe);
        }
 
        for_each_gt_on_tile(gt, tile, id)
-- 
2.43.0

Reply via email to