]> git.dujemihanovic.xyz Git - linux.git/commitdiff
drm/xe: Remove mem_access from guc_pc calls
authorRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 22 Feb 2024 16:39:29 +0000 (11:39 -0500)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Mon, 26 Feb 2024 14:06:45 +0000 (09:06 -0500)
We are now protected by init, sysfs, or removal and don't
need these mem_access protections around GuC_PC anymore.

Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240222163937.138342-6-rodrigo.vivi@intel.com
drivers/gpu/drm/xe/xe_guc_pc.c

index 2839d685631bc267b4ec586e3017133b8fae770f..f4b031b8d9deb12a9682b93d6ef5241e16699c74 100644 (file)
@@ -381,8 +381,6 @@ u32 xe_guc_pc_get_act_freq(struct xe_guc_pc *pc)
        struct xe_device *xe = gt_to_xe(gt);
        u32 freq;
 
-       xe_device_mem_access_get(gt_to_xe(gt));
-
        /* When in RC6, actual frequency reported will be 0. */
        if (GRAPHICS_VERx100(xe) >= 1270) {
                freq = xe_mmio_read32(gt, MTL_MIRROR_TARGET_WP1);
@@ -394,8 +392,6 @@ u32 xe_guc_pc_get_act_freq(struct xe_guc_pc *pc)
 
        freq = decode_freq(freq);
 
-       xe_device_mem_access_put(gt_to_xe(gt));
-
        return freq;
 }
 
@@ -412,14 +408,13 @@ int xe_guc_pc_get_cur_freq(struct xe_guc_pc *pc, u32 *freq)
        struct xe_gt *gt = pc_to_gt(pc);
        int ret;
 
-       xe_device_mem_access_get(gt_to_xe(gt));
        /*
         * GuC SLPC plays with cur freq request when GuCRC is enabled
         * Block RC6 for a more reliable read.
         */
        ret = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
        if (ret)
-               goto out;
+               return ret;
 
        *freq = xe_mmio_read32(gt, RPNSWREQ);
 
@@ -427,9 +422,7 @@ int xe_guc_pc_get_cur_freq(struct xe_guc_pc *pc, u32 *freq)
        *freq = decode_freq(*freq);
 
        XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
-out:
-       xe_device_mem_access_put(gt_to_xe(gt));
-       return ret;
+       return 0;
 }
 
 /**
@@ -451,12 +444,7 @@ u32 xe_guc_pc_get_rp0_freq(struct xe_guc_pc *pc)
  */
 u32 xe_guc_pc_get_rpe_freq(struct xe_guc_pc *pc)
 {
-       struct xe_gt *gt = pc_to_gt(pc);
-       struct xe_device *xe = gt_to_xe(gt);
-
-       xe_device_mem_access_get(xe);
        pc_update_rp_values(pc);
-       xe_device_mem_access_put(xe);
 
        return pc->rpe_freq;
 }
@@ -485,7 +473,6 @@ int xe_guc_pc_get_min_freq(struct xe_guc_pc *pc, u32 *freq)
        struct xe_gt *gt = pc_to_gt(pc);
        int ret;
 
-       xe_device_mem_access_get(pc_to_xe(pc));
        mutex_lock(&pc->freq_lock);
        if (!pc->freq_ready) {
                /* Might be in the middle of a gt reset */
@@ -511,7 +498,6 @@ fw:
        XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
 out:
        mutex_unlock(&pc->freq_lock);
-       xe_device_mem_access_put(pc_to_xe(pc));
        return ret;
 }
 
@@ -528,7 +514,6 @@ int xe_guc_pc_set_min_freq(struct xe_guc_pc *pc, u32 freq)
 {
        int ret;
 
-       xe_device_mem_access_get(pc_to_xe(pc));
        mutex_lock(&pc->freq_lock);
        if (!pc->freq_ready) {
                /* Might be in the middle of a gt reset */
@@ -544,8 +529,6 @@ int xe_guc_pc_set_min_freq(struct xe_guc_pc *pc, u32 freq)
 
 out:
        mutex_unlock(&pc->freq_lock);
-       xe_device_mem_access_put(pc_to_xe(pc));
-
        return ret;
 }
 
@@ -561,7 +544,6 @@ int xe_guc_pc_get_max_freq(struct xe_guc_pc *pc, u32 *freq)
 {
        int ret;
 
-       xe_device_mem_access_get(pc_to_xe(pc));
        mutex_lock(&pc->freq_lock);
        if (!pc->freq_ready) {
                /* Might be in the middle of a gt reset */
@@ -577,7 +559,6 @@ int xe_guc_pc_get_max_freq(struct xe_guc_pc *pc, u32 *freq)
 
 out:
        mutex_unlock(&pc->freq_lock);
-       xe_device_mem_access_put(pc_to_xe(pc));
        return ret;
 }
 
@@ -594,7 +575,6 @@ int xe_guc_pc_set_max_freq(struct xe_guc_pc *pc, u32 freq)
 {
        int ret;
 
-       xe_device_mem_access_get(pc_to_xe(pc));
        mutex_lock(&pc->freq_lock);
        if (!pc->freq_ready) {
                /* Might be in the middle of a gt reset */
@@ -610,7 +590,6 @@ int xe_guc_pc_set_max_freq(struct xe_guc_pc *pc, u32 freq)
 
 out:
        mutex_unlock(&pc->freq_lock);
-       xe_device_mem_access_put(pc_to_xe(pc));
        return ret;
 }
 
@@ -623,8 +602,6 @@ enum xe_gt_idle_state xe_guc_pc_c_status(struct xe_guc_pc *pc)
        struct xe_gt *gt = pc_to_gt(pc);
        u32 reg, gt_c_state;
 
-       xe_device_mem_access_get(gt_to_xe(gt));
-
        if (GRAPHICS_VERx100(gt_to_xe(gt)) >= 1270) {
                reg = xe_mmio_read32(gt, MTL_MIRROR_TARGET_WP1);
                gt_c_state = REG_FIELD_GET(MTL_CC_MASK, reg);
@@ -633,8 +610,6 @@ enum xe_gt_idle_state xe_guc_pc_c_status(struct xe_guc_pc *pc)
                gt_c_state = REG_FIELD_GET(RCN_MASK, reg);
        }
 
-       xe_device_mem_access_put(gt_to_xe(gt));
-
        switch (gt_c_state) {
        case GT_C6:
                return GT_IDLE_C6;
@@ -654,9 +629,7 @@ u64 xe_guc_pc_rc6_residency(struct xe_guc_pc *pc)
        struct xe_gt *gt = pc_to_gt(pc);
        u32 reg;
 
-       xe_device_mem_access_get(gt_to_xe(gt));
        reg = xe_mmio_read32(gt, GT_GFX_RC6);
-       xe_device_mem_access_put(gt_to_xe(gt));
 
        return reg;
 }
@@ -670,9 +643,7 @@ u64 xe_guc_pc_mc6_residency(struct xe_guc_pc *pc)
        struct xe_gt *gt = pc_to_gt(pc);
        u64 reg;
 
-       xe_device_mem_access_get(gt_to_xe(gt));
        reg = xe_mmio_read32(gt, MTL_MEDIA_MC6);
-       xe_device_mem_access_put(gt_to_xe(gt));
 
        return reg;
 }
@@ -801,23 +772,19 @@ int xe_guc_pc_gucrc_disable(struct xe_guc_pc *pc)
        if (xe->info.skip_guc_pc)
                return 0;
 
-       xe_device_mem_access_get(pc_to_xe(pc));
-
        ret = pc_action_setup_gucrc(pc, XE_GUCRC_HOST_CONTROL);
        if (ret)
-               goto out;
+               return ret;
 
        ret = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
        if (ret)
-               goto out;
+               return ret;
 
        xe_gt_idle_disable_c6(gt);
 
        XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
 
-out:
-       xe_device_mem_access_put(pc_to_xe(pc));
-       return ret;
+       return 0;
 }
 
 static void pc_init_pcode_freq(struct xe_guc_pc *pc)
@@ -870,11 +837,9 @@ int xe_guc_pc_start(struct xe_guc_pc *pc)
 
        xe_gt_assert(gt, xe_device_uc_enabled(xe));
 
-       xe_device_mem_access_get(pc_to_xe(pc));
-
        ret = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
        if (ret)
-               goto out_fail_force_wake;
+               return ret;
 
        if (xe->info.skip_guc_pc) {
                if (xe->info.platform != XE_PVC)
@@ -914,8 +879,6 @@ int xe_guc_pc_start(struct xe_guc_pc *pc)
 
 out:
        XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
-out_fail_force_wake:
-       xe_device_mem_access_put(pc_to_xe(pc));
        return ret;
 }
 
@@ -928,12 +891,9 @@ int xe_guc_pc_stop(struct xe_guc_pc *pc)
        struct xe_device *xe = pc_to_xe(pc);
        int ret;
 
-       xe_device_mem_access_get(pc_to_xe(pc));
-
        if (xe->info.skip_guc_pc) {
                xe_gt_idle_disable_c6(pc_to_gt(pc));
-               ret = 0;
-               goto out;
+               return 0;
        }
 
        mutex_lock(&pc->freq_lock);
@@ -942,16 +902,14 @@ int xe_guc_pc_stop(struct xe_guc_pc *pc)
 
        ret = pc_action_shutdown(pc);
        if (ret)
-               goto out;
+               return ret;
 
        if (wait_for_pc_state(pc, SLPC_GLOBAL_STATE_NOT_RUNNING)) {
                drm_err(&pc_to_xe(pc)->drm, "GuC PC Shutdown failed\n");
-               ret = -EIO;
+               return -EIO;
        }
 
-out:
-       xe_device_mem_access_put(pc_to_xe(pc));
-       return ret;
+       return 0;
 }
 
 /**
@@ -965,9 +923,7 @@ static void xe_guc_pc_fini(struct drm_device *drm, void *arg)
        struct xe_device *xe = pc_to_xe(pc);
 
        if (xe->info.skip_guc_pc) {
-               xe_device_mem_access_get(xe);
                xe_gt_idle_disable_c6(pc_to_gt(pc));
-               xe_device_mem_access_put(xe);
                return;
        }