Commit f5e92d23 authored by Anshuman Gupta's avatar Anshuman Gupta

drm/i915: Refactor userfault_wakeref to re-use

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: default avatarAnshuman Gupta <anshuman.gupta@intel.com>
Reviewed-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220913152714.16541-2-anshuman.gupta@intel.com
parent 42b2bdc8
...@@ -413,7 +413,7 @@ static vm_fault_t vm_fault_gtt(struct vm_fault *vmf) ...@@ -413,7 +413,7 @@ static vm_fault_t vm_fault_gtt(struct vm_fault *vmf)
vma->mmo = mmo; vma->mmo = mmo;
if (CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND) 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)); msecs_to_jiffies_timeout(CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND));
if (write) { if (write) {
......
...@@ -24,7 +24,7 @@ void i915_gem_suspend(struct drm_i915_private *i915) ...@@ -24,7 +24,7 @@ void i915_gem_suspend(struct drm_i915_private *i915)
{ {
GEM_TRACE("%s\n", dev_name(i915->drm.dev)); 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); flush_workqueue(i915->wq);
/* /*
......
...@@ -842,7 +842,6 @@ void intel_ggtt_init_fences(struct i915_ggtt *ggtt) ...@@ -842,7 +842,6 @@ void intel_ggtt_init_fences(struct i915_ggtt *ggtt)
INIT_LIST_HEAD(&ggtt->fence_list); INIT_LIST_HEAD(&ggtt->fence_list);
INIT_LIST_HEAD(&ggtt->userfault_list); INIT_LIST_HEAD(&ggtt->userfault_list);
intel_wakeref_auto_init(&ggtt->userfault_wakeref, uncore->rpm);
detect_bit_6_swizzle(ggtt); detect_bit_6_swizzle(ggtt);
......
...@@ -804,6 +804,7 @@ static int intel_gt_tile_setup(struct intel_gt *gt, phys_addr_t phys_addr) ...@@ -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_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); ret = intel_uncore_setup_mmio(gt->uncore, phys_addr);
if (ret) if (ret)
......
...@@ -156,6 +156,9 @@ struct intel_gt { ...@@ -156,6 +156,9 @@ struct intel_gt {
*/ */
intel_wakeref_t awake; 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_frequency;
u32 clock_period_ns; u32 clock_period_ns;
......
...@@ -386,9 +386,6 @@ struct i915_ggtt { ...@@ -386,9 +386,6 @@ struct i915_ggtt {
*/ */
struct list_head userfault_list; 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 mutex error_mutex;
struct drm_mm_node error_capture; struct drm_mm_node error_capture;
struct drm_mm_node uc_fw; struct drm_mm_node uc_fw;
......
...@@ -1173,7 +1173,7 @@ void i915_gem_driver_unregister(struct drm_i915_private *i915) ...@@ -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) 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); i915_gem_suspend_late(dev_priv);
intel_gt_driver_remove(to_gt(dev_priv)); intel_gt_driver_remove(to_gt(dev_priv));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment