#include "xe_ggtt.h"
#include <linux/io-64-nonatomic-lo-hi.h>
#include <linux/sizes.h>
#include <drm/drm_drv.h>
#include <drm/drm_managed.h>
#include <drm/intel/i915_drm.h>
#include <generated/xe_wa_oob.h>
#include "regs/xe_gt_regs.h"
#include "regs/xe_gtt_defs.h"
#include "regs/xe_regs.h"
#include "xe_assert.h"
#include "xe_bo.h"
#include "xe_device.h"
#include "xe_gt.h"
#include "xe_gt_printk.h"
#include "xe_gt_sriov_vf.h"
#include "xe_gt_tlb_invalidation.h"
#include "xe_map.h"
#include "xe_mmio.h"
#include "xe_pm.h"
#include "xe_sriov.h"
#include "xe_wa.h"
#include "xe_wopcm.h"
static u64 xelp_ggtt_pte_encode_bo(struct xe_bo *bo, u64 bo_offset,
u16 pat_index)
{ … }
static u64 xelpg_ggtt_pte_encode_bo(struct xe_bo *bo, u64 bo_offset,
u16 pat_index)
{ … }
static unsigned int probe_gsm_size(struct pci_dev *pdev)
{ … }
static void ggtt_update_access_counter(struct xe_ggtt *ggtt)
{ … }
static void xe_ggtt_set_pte(struct xe_ggtt *ggtt, u64 addr, u64 pte)
{ … }
static void xe_ggtt_set_pte_and_flush(struct xe_ggtt *ggtt, u64 addr, u64 pte)
{ … }
static void xe_ggtt_clear(struct xe_ggtt *ggtt, u64 start, u64 size)
{ … }
static void ggtt_fini_early(struct drm_device *drm, void *arg)
{ … }
static void ggtt_fini(struct drm_device *drm, void *arg)
{ … }
static void primelockdep(struct xe_ggtt *ggtt)
{ … }
static const struct xe_ggtt_pt_ops xelp_pt_ops = …;
static const struct xe_ggtt_pt_ops xelpg_pt_ops = …;
static const struct xe_ggtt_pt_ops xelpg_pt_wa_ops = …;
int xe_ggtt_init_early(struct xe_ggtt *ggtt)
{ … }
static void xe_ggtt_invalidate(struct xe_ggtt *ggtt);
static void xe_ggtt_initial_clear(struct xe_ggtt *ggtt)
{ … }
int xe_ggtt_init(struct xe_ggtt *ggtt)
{ … }
static void ggtt_invalidate_gt_tlb(struct xe_gt *gt)
{ … }
static void xe_ggtt_invalidate(struct xe_ggtt *ggtt)
{ … }
void xe_ggtt_printk(struct xe_ggtt *ggtt, const char *prefix)
{ … }
static void xe_ggtt_dump_node(struct xe_ggtt *ggtt,
const struct drm_mm_node *node, const char *description)
{ … }
int xe_ggtt_balloon(struct xe_ggtt *ggtt, u64 start, u64 end, struct drm_mm_node *node)
{ … }
void xe_ggtt_deballoon(struct xe_ggtt *ggtt, struct drm_mm_node *node)
{ … }
int xe_ggtt_insert_special_node_locked(struct xe_ggtt *ggtt, struct drm_mm_node *node,
u32 size, u32 align, u32 mm_flags)
{ … }
int xe_ggtt_insert_special_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
u32 size, u32 align)
{ … }
void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
{ … }
static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
u64 start, u64 end)
{ … }
int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
u64 start, u64 end)
{ … }
int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
{ … }
void xe_ggtt_remove_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
bool invalidate)
{ … }
void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
{ … }
#ifdef CONFIG_PCI_IOV
static u64 xe_encode_vfid_pte(u16 vfid)
{ … }
static void xe_ggtt_assign_locked(struct xe_ggtt *ggtt, const struct drm_mm_node *node, u16 vfid)
{ … }
void xe_ggtt_assign(struct xe_ggtt *ggtt, const struct drm_mm_node *node, u16 vfid)
{ … }
#endif
int xe_ggtt_dump(struct xe_ggtt *ggtt, struct drm_printer *p)
{ … }