#include <linux/log2.h>
#include "gem/i915_gem_internal.h"
#include "gen6_ppgtt.h"
#include "i915_scatterlist.h"
#include "i915_trace.h"
#include "i915_vgpu.h"
#include "intel_gt_regs.h"
#include "intel_engine_regs.h"
#include "intel_gt.h"
static void gen6_write_pde(const struct gen6_ppgtt *ppgtt,
const unsigned int pde,
const struct i915_page_table *pt)
{ … }
void gen7_ppgtt_enable(struct intel_gt *gt)
{ … }
void gen6_ppgtt_enable(struct intel_gt *gt)
{ … }
static void gen6_ppgtt_clear_range(struct i915_address_space *vm,
u64 start, u64 length)
{ … }
static void gen6_ppgtt_insert_entries(struct i915_address_space *vm,
struct i915_vma_resource *vma_res,
unsigned int pat_index,
u32 flags)
{ … }
static void gen6_flush_pd(struct gen6_ppgtt *ppgtt, u64 start, u64 end)
{ … }
static void gen6_alloc_va_range(struct i915_address_space *vm,
struct i915_vm_pt_stash *stash,
u64 start, u64 length)
{ … }
static int gen6_ppgtt_init_scratch(struct gen6_ppgtt *ppgtt)
{ … }
static void gen6_ppgtt_free_pd(struct gen6_ppgtt *ppgtt)
{ … }
static void gen6_ppgtt_cleanup(struct i915_address_space *vm)
{ … }
static void pd_vma_bind(struct i915_address_space *vm,
struct i915_vm_pt_stash *stash,
struct i915_vma_resource *vma_res,
unsigned int pat_index,
u32 unused)
{ … }
static void pd_vma_unbind(struct i915_address_space *vm,
struct i915_vma_resource *vma_res)
{ … }
static const struct i915_vma_ops pd_vma_ops = …;
int gen6_ppgtt_pin(struct i915_ppgtt *base, struct i915_gem_ww_ctx *ww)
{ … }
static int pd_dummy_obj_get_pages(struct drm_i915_gem_object *obj)
{ … }
static void pd_dummy_obj_put_pages(struct drm_i915_gem_object *obj,
struct sg_table *pages)
{ … }
static const struct drm_i915_gem_object_ops pd_dummy_obj_ops = …;
static struct i915_page_directory *
gen6_alloc_top_pd(struct gen6_ppgtt *ppgtt)
{ … }
void gen6_ppgtt_unpin(struct i915_ppgtt *base)
{ … }
struct i915_ppgtt *gen6_ppgtt_create(struct intel_gt *gt)
{ … }