Commit f899f786 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Move GGTT fence registers under gt/

Since the fence registers control HW detiling through the GGTT
aperture, make them a part of the intel_ggtt under gt/
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200316113846.4974-1-chris@chris-wilson.co.uk
parent a6277478
...@@ -92,6 +92,7 @@ gt-y += \ ...@@ -92,6 +92,7 @@ gt-y += \
gt/intel_engine_pool.o \ gt/intel_engine_pool.o \
gt/intel_engine_user.o \ gt/intel_engine_user.o \
gt/intel_ggtt.o \ gt/intel_ggtt.o \
gt/intel_ggtt_fencing.o \
gt/intel_gt.o \ gt/intel_gt.o \
gt/intel_gt_irq.o \ gt/intel_gt_irq.o \
gt/intel_gt_pm.o \ gt/intel_gt_pm.o \
...@@ -153,7 +154,6 @@ i915-y += \ ...@@ -153,7 +154,6 @@ i915-y += \
i915_buddy.o \ i915_buddy.o \
i915_cmd_parser.o \ i915_cmd_parser.o \
i915_gem_evict.o \ i915_gem_evict.o \
i915_gem_fence_reg.o \
i915_gem_gtt.o \ i915_gem_gtt.o \
i915_gem.o \ i915_gem.o \
i915_globals.o \ i915_globals.o \
......
...@@ -65,7 +65,7 @@ static int ggtt_init_hw(struct i915_ggtt *ggtt) ...@@ -65,7 +65,7 @@ static int ggtt_init_hw(struct i915_ggtt *ggtt)
ggtt->mappable_end); ggtt->mappable_end);
} }
i915_ggtt_init_fences(ggtt); intel_ggtt_init_fences(ggtt);
return 0; return 0;
} }
......
...@@ -233,16 +233,9 @@ static int fence_update(struct i915_fence_reg *fence, ...@@ -233,16 +233,9 @@ static int fence_update(struct i915_fence_reg *fence,
int ret; int ret;
if (vma) { if (vma) {
if (!i915_vma_is_map_and_fenceable(vma)) GEM_BUG_ON(!i915_vma_is_map_and_fenceable(vma));
return -EINVAL; GEM_BUG_ON(!i915_gem_object_get_stride(vma->obj) ||
!i915_gem_object_get_tiling(vma->obj));
if (drm_WARN(&uncore->i915->drm,
!i915_gem_object_get_stride(vma->obj) ||
!i915_gem_object_get_tiling(vma->obj),
"bogus fence setup with stride: 0x%x, tiling mode: %i\n",
i915_gem_object_get_stride(vma->obj),
i915_gem_object_get_tiling(vma->obj)))
return -EINVAL;
ret = i915_vma_sync(vma); ret = i915_vma_sync(vma);
if (ret) if (ret)
...@@ -276,7 +269,7 @@ static int fence_update(struct i915_fence_reg *fence, ...@@ -276,7 +269,7 @@ static int fence_update(struct i915_fence_reg *fence,
/* /*
* We only need to update the register itself if the device is awake. * We only need to update the register itself if the device is awake.
* If the device is currently powered down, we will defer the write * If the device is currently powered down, we will defer the write
* to the runtime resume, see i915_gem_restore_fences(). * to the runtime resume, see intel_ggtt_restore_fences().
* *
* This only works for removing the fence register, on acquisition * This only works for removing the fence register, on acquisition
* the caller must hold the rpm wakeref. The fence register must * the caller must hold the rpm wakeref. The fence register must
...@@ -487,14 +480,14 @@ void i915_unreserve_fence(struct i915_fence_reg *fence) ...@@ -487,14 +480,14 @@ void i915_unreserve_fence(struct i915_fence_reg *fence)
} }
/** /**
* i915_gem_restore_fences - restore fence state * intel_ggtt_restore_fences - restore fence state
* @ggtt: Global GTT * @ggtt: Global GTT
* *
* Restore the hw fence state to match the software tracking again, to be called * Restore the hw fence state to match the software tracking again, to be called
* after a gpu reset and on resume. Note that on runtime suspend we only cancel * after a gpu reset and on resume. Note that on runtime suspend we only cancel
* the fences, to be reacquired by the user later. * the fences, to be reacquired by the user later.
*/ */
void i915_gem_restore_fences(struct i915_ggtt *ggtt) void intel_ggtt_restore_fences(struct i915_ggtt *ggtt)
{ {
int i; int i;
...@@ -746,7 +739,7 @@ static void detect_bit_6_swizzle(struct i915_ggtt *ggtt) ...@@ -746,7 +739,7 @@ static void detect_bit_6_swizzle(struct i915_ggtt *ggtt)
* bit 17 of its physical address and therefore being interpreted differently * bit 17 of its physical address and therefore being interpreted differently
* by the GPU. * by the GPU.
*/ */
static void i915_gem_swizzle_page(struct page *page) static void swizzle_page(struct page *page)
{ {
char temp[64]; char temp[64];
char *vaddr; char *vaddr;
...@@ -791,7 +784,7 @@ i915_gem_object_do_bit_17_swizzle(struct drm_i915_gem_object *obj, ...@@ -791,7 +784,7 @@ i915_gem_object_do_bit_17_swizzle(struct drm_i915_gem_object *obj,
for_each_sgt_page(page, sgt_iter, pages) { for_each_sgt_page(page, sgt_iter, pages) {
char new_bit_17 = page_to_phys(page) >> 17; char new_bit_17 = page_to_phys(page) >> 17;
if ((new_bit_17 & 0x1) != (test_bit(i, obj->bit_17) != 0)) { if ((new_bit_17 & 0x1) != (test_bit(i, obj->bit_17) != 0)) {
i915_gem_swizzle_page(page); swizzle_page(page);
set_page_dirty(page); set_page_dirty(page);
} }
i++; i++;
...@@ -836,7 +829,7 @@ i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj, ...@@ -836,7 +829,7 @@ i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj,
} }
} }
void i915_ggtt_init_fences(struct i915_ggtt *ggtt) void intel_ggtt_init_fences(struct i915_ggtt *ggtt)
{ {
struct drm_i915_private *i915 = ggtt->vm.i915; struct drm_i915_private *i915 = ggtt->vm.i915;
struct intel_uncore *uncore = ggtt->vm.gt->uncore; struct intel_uncore *uncore = ggtt->vm.gt->uncore;
...@@ -875,7 +868,7 @@ void i915_ggtt_init_fences(struct i915_ggtt *ggtt) ...@@ -875,7 +868,7 @@ void i915_ggtt_init_fences(struct i915_ggtt *ggtt)
} }
ggtt->num_fences = num_fences; ggtt->num_fences = num_fences;
i915_gem_restore_fences(ggtt); intel_ggtt_restore_fences(ggtt);
} }
void intel_gt_init_swizzling(struct intel_gt *gt) void intel_gt_init_swizzling(struct intel_gt *gt)
......
...@@ -22,8 +22,8 @@ ...@@ -22,8 +22,8 @@
* *
*/ */
#ifndef __I915_FENCE_REG_H__ #ifndef __INTEL_GGTT_FENCING_H__
#define __I915_FENCE_REG_H__ #define __INTEL_GGTT_FENCING_H__
#include <linux/list.h> #include <linux/list.h>
#include <linux/types.h> #include <linux/types.h>
...@@ -53,18 +53,17 @@ struct i915_fence_reg { ...@@ -53,18 +53,17 @@ struct i915_fence_reg {
bool dirty; bool dirty;
}; };
/* i915_gem_fence_reg.c */
struct i915_fence_reg *i915_reserve_fence(struct i915_ggtt *ggtt); struct i915_fence_reg *i915_reserve_fence(struct i915_ggtt *ggtt);
void i915_unreserve_fence(struct i915_fence_reg *fence); void i915_unreserve_fence(struct i915_fence_reg *fence);
void i915_gem_restore_fences(struct i915_ggtt *ggtt); void intel_ggtt_restore_fences(struct i915_ggtt *ggtt);
void i915_gem_object_do_bit_17_swizzle(struct drm_i915_gem_object *obj, void i915_gem_object_do_bit_17_swizzle(struct drm_i915_gem_object *obj,
struct sg_table *pages); struct sg_table *pages);
void i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj, void i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj,
struct sg_table *pages); struct sg_table *pages);
void i915_ggtt_init_fences(struct i915_ggtt *ggtt); void intel_ggtt_init_fences(struct i915_ggtt *ggtt);
void intel_gt_init_swizzling(struct intel_gt *gt); void intel_gt_init_swizzling(struct intel_gt *gt);
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#include <drm/drm_mm.h> #include <drm/drm_mm.h>
#include "gt/intel_reset.h" #include "gt/intel_reset.h"
#include "i915_gem_fence_reg.h" #include "gt/intel_ggtt_fencing.h"
#include "i915_selftest.h" #include "i915_selftest.h"
#include "i915_vma_types.h" #include "i915_vma_types.h"
......
...@@ -750,7 +750,7 @@ static int gt_reset(struct intel_gt *gt, intel_engine_mask_t stalled_mask) ...@@ -750,7 +750,7 @@ static int gt_reset(struct intel_gt *gt, intel_engine_mask_t stalled_mask)
for_each_engine(engine, gt, id) for_each_engine(engine, gt, id)
__intel_engine_reset(engine, stalled_mask & engine->mask); __intel_engine_reset(engine, stalled_mask & engine->mask);
i915_gem_restore_fences(gt->ggtt); intel_ggtt_restore_fences(gt->ggtt);
return err; return err;
} }
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
*/ */
#include "i915_drv.h" #include "i915_drv.h"
#include "i915_gem_fence_reg.h" #include "gt/intel_ggtt_fencing.h"
#include "gvt.h" #include "gvt.h"
static int alloc_gm(struct intel_vgpu *vgpu, bool high_gm) static int alloc_gm(struct intel_vgpu *vgpu, bool high_gm)
......
...@@ -1288,7 +1288,7 @@ static int i915_drm_resume(struct drm_device *dev) ...@@ -1288,7 +1288,7 @@ static int i915_drm_resume(struct drm_device *dev)
drm_err(&dev_priv->drm, "failed to re-enable GGTT\n"); drm_err(&dev_priv->drm, "failed to re-enable GGTT\n");
i915_ggtt_resume(&dev_priv->ggtt); i915_ggtt_resume(&dev_priv->ggtt);
i915_gem_restore_fences(&dev_priv->ggtt); intel_ggtt_restore_fences(&dev_priv->ggtt);
intel_csr_ucode_resume(dev_priv); intel_csr_ucode_resume(dev_priv);
...@@ -1606,7 +1606,7 @@ static int intel_runtime_suspend(struct device *kdev) ...@@ -1606,7 +1606,7 @@ static int intel_runtime_suspend(struct device *kdev)
intel_gt_runtime_resume(&dev_priv->gt); intel_gt_runtime_resume(&dev_priv->gt);
i915_gem_restore_fences(&dev_priv->ggtt); intel_ggtt_restore_fences(&dev_priv->ggtt);
enable_rpm_wakeref_asserts(rpm); enable_rpm_wakeref_asserts(rpm);
...@@ -1687,7 +1687,7 @@ static int intel_runtime_resume(struct device *kdev) ...@@ -1687,7 +1687,7 @@ static int intel_runtime_resume(struct device *kdev)
* we can do is to hope that things will still work (and disable RPM). * we can do is to hope that things will still work (and disable RPM).
*/ */
intel_gt_runtime_resume(&dev_priv->gt); intel_gt_runtime_resume(&dev_priv->gt);
i915_gem_restore_fences(&dev_priv->ggtt); intel_ggtt_restore_fences(&dev_priv->ggtt);
/* /*
* On VLV/CHV display interrupts are part of the display * On VLV/CHV display interrupts are part of the display
......
...@@ -92,7 +92,6 @@ ...@@ -92,7 +92,6 @@
#include "intel_wopcm.h" #include "intel_wopcm.h"
#include "i915_gem.h" #include "i915_gem.h"
#include "i915_gem_fence_reg.h"
#include "i915_gem_gtt.h" #include "i915_gem_gtt.h"
#include "i915_gpu_error.h" #include "i915_gpu_error.h"
#include "i915_perf_types.h" #include "i915_perf_types.h"
......
...@@ -1156,7 +1156,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv) ...@@ -1156,7 +1156,7 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
/* Minimal basic recovery for KMS */ /* Minimal basic recovery for KMS */
ret = i915_ggtt_enable_hw(dev_priv); ret = i915_ggtt_enable_hw(dev_priv);
i915_ggtt_resume(&dev_priv->ggtt); i915_ggtt_resume(&dev_priv->ggtt);
i915_gem_restore_fences(&dev_priv->ggtt); intel_ggtt_restore_fences(&dev_priv->ggtt);
intel_init_clock_gating(dev_priv); intel_init_clock_gating(dev_priv);
} }
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include "gem/i915_gem_object.h" #include "gem/i915_gem_object.h"
#include "i915_gem_gtt.h" #include "i915_gem_gtt.h"
#include "i915_gem_fence_reg.h"
#include "i915_active.h" #include "i915_active.h"
#include "i915_request.h" #include "i915_request.h"
......
...@@ -125,7 +125,7 @@ static void pm_resume(struct drm_i915_private *i915) ...@@ -125,7 +125,7 @@ static void pm_resume(struct drm_i915_private *i915)
*/ */
with_intel_runtime_pm(&i915->runtime_pm, wakeref) { with_intel_runtime_pm(&i915->runtime_pm, wakeref) {
i915_ggtt_resume(&i915->ggtt); i915_ggtt_resume(&i915->ggtt);
i915_gem_restore_fences(&i915->ggtt); intel_ggtt_restore_fences(&i915->ggtt);
i915_gem_resume(i915); i915_gem_resume(i915);
} }
......
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