Warning: This file is not a C or C++ file. It does not have highlighting.
1 | #ifndef __NVIF_VMM_H__ |
---|---|
2 | #define __NVIF_VMM_H__ |
3 | #include <nvif/object.h> |
4 | struct nvif_mem; |
5 | struct nvif_mmu; |
6 | |
7 | enum nvif_vmm_type { |
8 | UNMANAGED, |
9 | MANAGED, |
10 | RAW, |
11 | }; |
12 | |
13 | enum nvif_vmm_get { |
14 | ADDR, |
15 | PTES, |
16 | LAZY |
17 | }; |
18 | |
19 | struct nvif_vma { |
20 | u64 addr; |
21 | u64 size; |
22 | }; |
23 | |
24 | struct nvif_vmm { |
25 | struct nvif_object object; |
26 | u64 start; |
27 | u64 limit; |
28 | |
29 | struct { |
30 | u8 shift; |
31 | bool sparse:1; |
32 | bool vram:1; |
33 | bool host:1; |
34 | bool comp:1; |
35 | } *page; |
36 | int page_nr; |
37 | }; |
38 | |
39 | int nvif_vmm_ctor(struct nvif_mmu *, const char *name, s32 oclass, |
40 | enum nvif_vmm_type, u64 addr, u64 size, void *argv, u32 argc, |
41 | struct nvif_vmm *); |
42 | void nvif_vmm_dtor(struct nvif_vmm *); |
43 | int nvif_vmm_get(struct nvif_vmm *, enum nvif_vmm_get, bool sparse, |
44 | u8 page, u8 align, u64 size, struct nvif_vma *); |
45 | void nvif_vmm_put(struct nvif_vmm *, struct nvif_vma *); |
46 | int nvif_vmm_map(struct nvif_vmm *, u64 addr, u64 size, void *argv, u32 argc, |
47 | struct nvif_mem *, u64 offset); |
48 | int nvif_vmm_unmap(struct nvif_vmm *, u64); |
49 | |
50 | int nvif_vmm_raw_get(struct nvif_vmm *vmm, u64 addr, u64 size, u8 shift); |
51 | int nvif_vmm_raw_put(struct nvif_vmm *vmm, u64 addr, u64 size, u8 shift); |
52 | int nvif_vmm_raw_map(struct nvif_vmm *vmm, u64 addr, u64 size, u8 shift, |
53 | void *argv, u32 argc, struct nvif_mem *mem, u64 offset); |
54 | int nvif_vmm_raw_unmap(struct nvif_vmm *vmm, u64 addr, u64 size, |
55 | u8 shift, bool sparse); |
56 | int nvif_vmm_raw_sparse(struct nvif_vmm *vmm, u64 addr, u64 size, bool ref); |
57 | #endif |
58 |
Warning: This file is not a C or C++ file. It does not have highlighting.