OSDN Git Service

drm/i915: Refactor userfault_wakeref to re-use
authorAnshuman Gupta <anshuman.gupta@intel.com>
Tue, 13 Sep 2022 15:27:13 +0000 (20:57 +0530)
committerAnshuman Gupta <anshuman.gupta@intel.com>
Wed, 14 Sep 2022 12:48:55 +0000 (18:18 +0530)
Refactor userfault_wakeref to re-use for discrete lmem mmap mapping
as well, as on discrete GTT mmap are not supported. Moving
userfault_wakeref from ggtt to gt structure.

Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220913152714.16541-2-anshuman.gupta@intel.com
drivers/gpu/drm/i915/gem/i915_gem_mman.c
drivers/gpu/drm/i915/gem/i915_gem_pm.c
drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
drivers/gpu/drm/i915/gt/intel_gt.c
drivers/gpu/drm/i915/gt/intel_gt_types.h
drivers/gpu/drm/i915/gt/intel_gtt.h
drivers/gpu/drm/i915/i915_gem.c

index 3218981..b55befd 100644 (file)
@@ -413,7 +413,7 @@ retry:
        vma->mmo = mmo;
 
        if (CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND)
-               intel_wakeref_auto(&to_gt(i915)->ggtt->userfault_wakeref,
+               intel_wakeref_auto(&to_gt(i915)->userfault_wakeref,
                                   msecs_to_jiffies_timeout(CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND));
 
        if (write) {
index 00359ec..3428f73 100644 (file)
@@ -24,7 +24,7 @@ void i915_gem_suspend(struct drm_i915_private *i915)
 {
        GEM_TRACE("%s\n", dev_name(i915->drm.dev));
 
-       intel_wakeref_auto(&to_gt(i915)->ggtt->userfault_wakeref, 0);
+       intel_wakeref_auto(&to_gt(i915)->userfault_wakeref, 0);
        flush_workqueue(i915->wq);
 
        /*
index 6ebda3d..f920d54 100644 (file)
@@ -842,7 +842,6 @@ void intel_ggtt_init_fences(struct i915_ggtt *ggtt)
 
        INIT_LIST_HEAD(&ggtt->fence_list);
        INIT_LIST_HEAD(&ggtt->userfault_list);
-       intel_wakeref_auto_init(&ggtt->userfault_wakeref, uncore->rpm);
 
        detect_bit_6_swizzle(ggtt);
 
index b079af8..f7a918f 100644 (file)
@@ -804,6 +804,7 @@ static int intel_gt_tile_setup(struct intel_gt *gt, phys_addr_t phys_addr)
        }
 
        intel_uncore_init_early(gt->uncore, gt);
+       intel_wakeref_auto_init(&gt->userfault_wakeref, gt->uncore->rpm);
 
        ret = intel_uncore_setup_mmio(gt->uncore, phys_addr);
        if (ret)
index 184ee9b..0757d95 100644 (file)
@@ -156,6 +156,9 @@ struct intel_gt {
         */
        intel_wakeref_t awake;
 
+       /* Manual runtime pm autosuspend delay for user GGTT/lmem mmaps */
+       struct intel_wakeref_auto userfault_wakeref;
+
        u32 clock_frequency;
        u32 clock_period_ns;
 
index e639434..c0ca53c 100644 (file)
@@ -386,9 +386,6 @@ struct i915_ggtt {
         */
        struct list_head userfault_list;
 
-       /* Manual runtime pm autosuspend delay for user GGTT mmaps */
-       struct intel_wakeref_auto userfault_wakeref;
-
        struct mutex error_mutex;
        struct drm_mm_node error_capture;
        struct drm_mm_node uc_fw;
index a337369..cc1117c 100644 (file)
@@ -1173,7 +1173,7 @@ void i915_gem_driver_unregister(struct drm_i915_private *i915)
 
 void i915_gem_driver_remove(struct drm_i915_private *dev_priv)
 {
-       intel_wakeref_auto_fini(&to_gt(dev_priv)->ggtt->userfault_wakeref);
+       intel_wakeref_auto_fini(&to_gt(dev_priv)->userfault_wakeref);
 
        i915_gem_suspend_late(dev_priv);
        intel_gt_driver_remove(to_gt(dev_priv));