]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/debugfs: Use scope-based runtime PM
authorMatt Roper <matthew.d.roper@intel.com>
Tue, 18 Nov 2025 16:44:06 +0000 (08:44 -0800)
committerMatt Roper <matthew.d.roper@intel.com>
Wed, 19 Nov 2025 19:58:58 +0000 (11:58 -0800)
Switch the debugfs code to use scope-based runtime PM where possible,
for consistency with other parts of the driver.

v2:
 - Drop unnecessary 'ret' variables.  (Gustavo)

Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
Link: https://patch.msgid.link/20251118164338.3572146-56-matthew.d.roper@intel.com
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
drivers/gpu/drm/xe/xe_debugfs.c
drivers/gpu/drm/xe/xe_gsc_debugfs.c
drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c
drivers/gpu/drm/xe/xe_guc_debugfs.c
drivers/gpu/drm/xe/xe_huc_debugfs.c
drivers/gpu/drm/xe/xe_tile_debugfs.c

index e91da9589c5ff6ad06f230a888b538194a0d01f4..1d5a2a43a9d71ecc5f0a9e6d699cff9cb95d37af 100644 (file)
@@ -68,7 +68,7 @@ static int info(struct seq_file *m, void *data)
        struct xe_gt *gt;
        u8 id;
 
-       xe_pm_runtime_get(xe);
+       guard(xe_pm_runtime)(xe);
 
        drm_printf(&p, "graphics_verx100 %d\n", xe->info.graphics_verx100);
        drm_printf(&p, "media_verx100 %d\n", xe->info.media_verx100);
@@ -95,7 +95,6 @@ static int info(struct seq_file *m, void *data)
                           gt->info.engine_mask);
        }
 
-       xe_pm_runtime_put(xe);
        return 0;
 }
 
@@ -110,9 +109,8 @@ static int sriov_info(struct seq_file *m, void *data)
 
 static int workarounds(struct xe_device *xe, struct drm_printer *p)
 {
-       xe_pm_runtime_get(xe);
+       guard(xe_pm_runtime)(xe);
        xe_wa_device_dump(xe, p);
-       xe_pm_runtime_put(xe);
 
        return 0;
 }
@@ -134,7 +132,7 @@ static int dgfx_pkg_residencies_show(struct seq_file *m, void *data)
 
        xe = node_to_xe(m->private);
        p = drm_seq_file_printer(m);
-       xe_pm_runtime_get(xe);
+       guard(xe_pm_runtime)(xe);
        mmio = xe_root_tile_mmio(xe);
        static const struct {
                u32 offset;
@@ -151,7 +149,6 @@ static int dgfx_pkg_residencies_show(struct seq_file *m, void *data)
        for (int i = 0; i < ARRAY_SIZE(residencies); i++)
                read_residency_counter(xe, mmio, residencies[i].offset, residencies[i].name, &p);
 
-       xe_pm_runtime_put(xe);
        return 0;
 }
 
@@ -163,7 +160,7 @@ static int dgfx_pcie_link_residencies_show(struct seq_file *m, void *data)
 
        xe = node_to_xe(m->private);
        p = drm_seq_file_printer(m);
-       xe_pm_runtime_get(xe);
+       guard(xe_pm_runtime)(xe);
        mmio = xe_root_tile_mmio(xe);
 
        static const struct {
@@ -178,7 +175,6 @@ static int dgfx_pcie_link_residencies_show(struct seq_file *m, void *data)
        for (int i = 0; i < ARRAY_SIZE(residencies); i++)
                read_residency_counter(xe, mmio, residencies[i].offset, residencies[i].name, &p);
 
-       xe_pm_runtime_put(xe);
        return 0;
 }
 
@@ -277,16 +273,14 @@ static ssize_t wedged_mode_set(struct file *f, const char __user *ubuf,
 
        xe->wedged.mode = wedged_mode;
 
-       xe_pm_runtime_get(xe);
+       guard(xe_pm_runtime)(xe);
        for_each_gt(gt, xe, id) {
                ret = xe_guc_ads_scheduler_policy_toggle_reset(&gt->uc.guc.ads);
                if (ret) {
                        xe_gt_err(gt, "Failed to update GuC ADS scheduler policy. GuC may still cause engine reset even with wedged_mode=2\n");
-                       xe_pm_runtime_put(xe);
                        return -EIO;
                }
        }
-       xe_pm_runtime_put(xe);
 
        return size;
 }
index 461d7e99c2b3289740c2485e2006282b928c6a67..b13928b50eb942c24f3021782b10212a07c89b97 100644 (file)
@@ -37,9 +37,8 @@ static int gsc_info(struct seq_file *m, void *data)
        struct xe_device *xe = gsc_to_xe(gsc);
        struct drm_printer p = drm_seq_file_printer(m);
 
-       xe_pm_runtime_get(xe);
+       guard(xe_pm_runtime)(xe);
        xe_gsc_print_info(gsc, &p);
-       xe_pm_runtime_put(xe);
 
        return 0;
 }
index 5278ea4fd6552ceb4bfb4b2732f889fd7c004136..0fd863609848dcf8612733d012d68336269017dc 100644 (file)
@@ -123,11 +123,10 @@ static int POLICY##_set(void *data, u64 val)                                      \
        if (val > (TYPE)~0ull)                                                  \
                return -EOVERFLOW;                                              \
                                                                                \
-       xe_pm_runtime_get(xe);                                                  \
+       guard(xe_pm_runtime)(xe);                                                       \
        err = xe_gt_sriov_pf_policy_set_##POLICY(gt, val);                      \
        if (!err)                                                               \
                xe_sriov_pf_provision_set_custom_mode(xe);                      \
-       xe_pm_runtime_put(xe);                                                  \
                                                                                \
        return err;                                                             \
 }                                                                              \
@@ -189,12 +188,11 @@ static int CONFIG##_set(void *data, u64 val)                                      \
        if (val > (TYPE)~0ull)                                                  \
                return -EOVERFLOW;                                              \
                                                                                \
-       xe_pm_runtime_get(xe);                                                  \
+       guard(xe_pm_runtime)(xe);                                                       \
        err = xe_sriov_pf_wait_ready(xe) ?:                                     \
              xe_gt_sriov_pf_config_set_##CONFIG(gt, vfid, val);                \
        if (!err)                                                               \
                xe_sriov_pf_provision_set_custom_mode(xe);                      \
-       xe_pm_runtime_put(xe);                                                  \
                                                                                \
        return err;                                                             \
 }                                                                              \
@@ -249,11 +247,10 @@ static int set_threshold(void *data, u64 val, enum xe_guc_klv_threshold_index in
        if (val > (u32)~0ull)
                return -EOVERFLOW;
 
-       xe_pm_runtime_get(xe);
+       guard(xe_pm_runtime)(xe);
        err = xe_gt_sriov_pf_config_set_threshold(gt, vfid, index, val);
        if (!err)
                xe_sriov_pf_provision_set_custom_mode(xe);
-       xe_pm_runtime_put(xe);
 
        return err;
 }
@@ -358,9 +355,8 @@ static ssize_t control_write(struct file *file, const char __user *buf, size_t c
                xe_gt_assert(gt, sizeof(cmd) > strlen(control_cmds[n].cmd));
 
                if (sysfs_streq(cmd, control_cmds[n].cmd)) {
-                       xe_pm_runtime_get(xe);
+                       guard(xe_pm_runtime)(xe);
                        ret = control_cmds[n].fn ? (*control_cmds[n].fn)(gt, vfid) : 0;
-                       xe_pm_runtime_put(xe);
                        break;
                }
        }
index 0b102ab46c4df214ac5fb3f38e7bbd74b3b0cb14..efaca259d3e85e9d85153057a1668270b44acf33 100644 (file)
@@ -70,13 +70,9 @@ static int guc_debugfs_show(struct seq_file *m, void *data)
        struct xe_gt *gt = grandparent->d_inode->i_private;
        struct xe_device *xe = gt_to_xe(gt);
        int (*print)(struct xe_guc *, struct drm_printer *) = node->info_ent->data;
-       int ret;
 
-       xe_pm_runtime_get(xe);
-       ret = print(&gt->uc.guc, &p);
-       xe_pm_runtime_put(xe);
-
-       return ret;
+       guard(xe_pm_runtime)(xe);
+       return print(&gt->uc.guc, &p);
 }
 
 static int guc_log(struct xe_guc *guc, struct drm_printer *p)
index 3a888a40188b9c90101452a06875788abedd8128..df9c4d79b7106bf8d4c912748ca262dfe3115005 100644 (file)
@@ -37,9 +37,8 @@ static int huc_info(struct seq_file *m, void *data)
        struct xe_device *xe = huc_to_xe(huc);
        struct drm_printer p = drm_seq_file_printer(m);
 
-       xe_pm_runtime_get(xe);
+       guard(xe_pm_runtime)(xe);
        xe_huc_print_info(huc, &p);
-       xe_pm_runtime_put(xe);
 
        return 0;
 }
index fff242a5ae566c517c08d940dd9a8deaf0785252..39eeca75ddedd0d8ea959d4db1a65f461375c5b7 100644 (file)
@@ -82,13 +82,9 @@ int xe_tile_debugfs_show_with_rpm(struct seq_file *m, void *data)
        struct drm_info_node *node = m->private;
        struct xe_tile *tile = node_to_tile(node);
        struct xe_device *xe = tile_to_xe(tile);
-       int ret;
 
-       xe_pm_runtime_get(xe);
-       ret = xe_tile_debugfs_simple_show(m, data);
-       xe_pm_runtime_put(xe);
-
-       return ret;
+       guard(xe_pm_runtime)(xe);
+       return xe_tile_debugfs_simple_show(m, data);
 }
 
 static int ggtt(struct xe_tile *tile, struct drm_printer *p)