mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 05:44:11 +00:00
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: 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
This commit is contained in:
parent
42b2bdc8c4
commit
f5e92d23f5
7 changed files with 7 additions and 7 deletions
|
@ -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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
intel_uncore_init_early(gt->uncore, gt);
|
intel_uncore_init_early(gt->uncore, gt);
|
||||||
|
intel_wakeref_auto_init(>->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 {
|
||||||
*/
|
*/
|
||||||
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 {
|
||||||
*/
|
*/
|
||||||
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)
|
||||||
|
|
||||||
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));
|
||||||
|
|
Loading…
Reference in a new issue