Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[cris-mirror.git] / drivers / gpu / drm / nouveau / include / nvif / vmm.h
blobc5db8a2e82df8ce9723d759a100f3134868cac3e
1 #ifndef __NVIF_VMM_H__
2 #define __NVIF_VMM_H__
3 #include <nvif/object.h>
4 struct nvif_mem;
5 struct nvif_mmu;
7 enum nvif_vmm_get {
8 ADDR,
9 PTES,
10 LAZY
13 struct nvif_vma {
14 u64 addr;
15 u64 size;
18 struct nvif_vmm {
19 struct nvif_object object;
20 u64 start;
21 u64 limit;
23 struct {
24 u8 shift;
25 bool sparse:1;
26 bool vram:1;
27 bool host:1;
28 bool comp:1;
29 } *page;
30 int page_nr;
33 int nvif_vmm_init(struct nvif_mmu *, s32 oclass, u64 addr, u64 size,
34 void *argv, u32 argc, struct nvif_vmm *);
35 void nvif_vmm_fini(struct nvif_vmm *);
36 int nvif_vmm_get(struct nvif_vmm *, enum nvif_vmm_get, bool sparse,
37 u8 page, u8 align, u64 size, struct nvif_vma *);
38 void nvif_vmm_put(struct nvif_vmm *, struct nvif_vma *);
39 int nvif_vmm_map(struct nvif_vmm *, u64 addr, u64 size, void *argv, u32 argc,
40 struct nvif_mem *, u64 offset);
41 int nvif_vmm_unmap(struct nvif_vmm *, u64);
42 #endif