xref: /openbmc/linux/drivers/gpu/drm/i915/gt/intel_migrate.h (revision 0791faebfe750292a8a842b64795a390ca4a3b51)
1cf586021SChris Wilson /* SPDX-License-Identifier: MIT */
2cf586021SChris Wilson /*
3cf586021SChris Wilson  * Copyright © 2020 Intel Corporation
4cf586021SChris Wilson  */
5cf586021SChris Wilson 
6cf586021SChris Wilson #ifndef __INTEL_MIGRATE__
7cf586021SChris Wilson #define __INTEL_MIGRATE__
8cf586021SChris Wilson 
9563baae1SChris Wilson #include <linux/types.h>
10563baae1SChris Wilson 
11cf586021SChris Wilson #include "intel_migrate_types.h"
12cf586021SChris Wilson 
13cf586021SChris Wilson struct dma_fence;
1411930817SThomas Hellström struct i915_deps;
15cf586021SChris Wilson struct i915_request;
16cf586021SChris Wilson struct i915_gem_ww_ctx;
17cf586021SChris Wilson struct intel_gt;
18cf586021SChris Wilson struct scatterlist;
19cf586021SChris Wilson 
20cf586021SChris Wilson int intel_migrate_init(struct intel_migrate *m, struct intel_gt *gt);
21cf586021SChris Wilson 
22cf586021SChris Wilson struct intel_context *intel_migrate_create_context(struct intel_migrate *m);
23cf586021SChris Wilson 
24cf586021SChris Wilson int intel_migrate_copy(struct intel_migrate *m,
25cf586021SChris Wilson 		       struct i915_gem_ww_ctx *ww,
2611930817SThomas Hellström 		       const struct i915_deps *deps,
27cf586021SChris Wilson 		       struct scatterlist *src,
28*9275277dSFei Yang 		       unsigned int src_pat_index,
29cf586021SChris Wilson 		       bool src_is_lmem,
30cf586021SChris Wilson 		       struct scatterlist *dst,
31*9275277dSFei Yang 		       unsigned int dst_pat_index,
32cf586021SChris Wilson 		       bool dst_is_lmem,
33cf586021SChris Wilson 		       struct i915_request **out);
34cf586021SChris Wilson 
35cf586021SChris Wilson int intel_context_migrate_copy(struct intel_context *ce,
3611930817SThomas Hellström 			       const struct i915_deps *deps,
37cf586021SChris Wilson 			       struct scatterlist *src,
38*9275277dSFei Yang 			       unsigned int src_pat_index,
39cf586021SChris Wilson 			       bool src_is_lmem,
40cf586021SChris Wilson 			       struct scatterlist *dst,
41*9275277dSFei Yang 			       unsigned int dst_pat_index,
42cf586021SChris Wilson 			       bool dst_is_lmem,
43cf586021SChris Wilson 			       struct i915_request **out);
44cf586021SChris Wilson 
45563baae1SChris Wilson int
46563baae1SChris Wilson intel_migrate_clear(struct intel_migrate *m,
47563baae1SChris Wilson 		    struct i915_gem_ww_ctx *ww,
4811930817SThomas Hellström 		    const struct i915_deps *deps,
49563baae1SChris Wilson 		    struct scatterlist *sg,
50*9275277dSFei Yang 		    unsigned int pat_index,
51563baae1SChris Wilson 		    bool is_lmem,
52563baae1SChris Wilson 		    u32 value,
53563baae1SChris Wilson 		    struct i915_request **out);
54563baae1SChris Wilson int
55563baae1SChris Wilson intel_context_migrate_clear(struct intel_context *ce,
5611930817SThomas Hellström 			    const struct i915_deps *deps,
57563baae1SChris Wilson 			    struct scatterlist *sg,
58*9275277dSFei Yang 			    unsigned int pat_index,
59563baae1SChris Wilson 			    bool is_lmem,
60563baae1SChris Wilson 			    u32 value,
61563baae1SChris Wilson 			    struct i915_request **out);
62563baae1SChris Wilson 
63cf586021SChris Wilson void intel_migrate_fini(struct intel_migrate *m);
64cf586021SChris Wilson 
65cf586021SChris Wilson #endif /* __INTEL_MIGRATE__ */
66