1/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright �� 2020 Intel Corporation
4 */
5
6#ifndef __INTEL_MIGRATE__
7#define __INTEL_MIGRATE__
8
9#include <linux/types.h>
10
11#include "intel_migrate_types.h"
12
13struct dma_fence;
14struct i915_deps;
15struct i915_request;
16struct i915_gem_ww_ctx;
17struct intel_gt;
18struct scatterlist;
19
20int intel_migrate_init(struct intel_migrate *m, struct intel_gt *gt);
21
22struct intel_context *intel_migrate_create_context(struct intel_migrate *m);
23
24int intel_migrate_copy(struct intel_migrate *m,
25		       struct i915_gem_ww_ctx *ww,
26		       const struct i915_deps *deps,
27		       struct scatterlist *src,
28		       unsigned int src_pat_index,
29		       bool src_is_lmem,
30		       struct scatterlist *dst,
31		       unsigned int dst_pat_index,
32		       bool dst_is_lmem,
33		       struct i915_request **out);
34
35int intel_context_migrate_copy(struct intel_context *ce,
36			       const struct i915_deps *deps,
37			       struct scatterlist *src,
38			       unsigned int src_pat_index,
39			       bool src_is_lmem,
40			       struct scatterlist *dst,
41			       unsigned int dst_pat_index,
42			       bool dst_is_lmem,
43			       struct i915_request **out);
44
45int
46intel_migrate_clear(struct intel_migrate *m,
47		    struct i915_gem_ww_ctx *ww,
48		    const struct i915_deps *deps,
49		    struct scatterlist *sg,
50		    unsigned int pat_index,
51		    bool is_lmem,
52		    u32 value,
53		    struct i915_request **out);
54int
55intel_context_migrate_clear(struct intel_context *ce,
56			    const struct i915_deps *deps,
57			    struct scatterlist *sg,
58			    unsigned int pat_index,
59			    bool is_lmem,
60			    u32 value,
61			    struct i915_request **out);
62
63void intel_migrate_fini(struct intel_migrate *m);
64
65#endif /* __INTEL_MIGRATE__ */
66