Commit f5e92d23 authored by Anshuman Gupta's avatar Anshuman Gupta
Browse files

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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -413,7 +413,7 @@ static vm_fault_t vm_fault_gtt(struct vm_fault *vmf)
	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) {
+1 −1
Original line number Diff line number Diff line
@@ -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);

	/*
+0 −1
Original line number Diff line number Diff line
@@ -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);

+1 −0
Original line number Diff line number Diff line
@@ -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)
+3 −0
Original line number Diff line number Diff line
@@ -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;

Loading