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_get { 8 ADDR, 9 PTES, 10 LAZY 11 }; 12 13 struct nvif_vma { 14 u64 addr; 15 u64 size; 16 }; 17 18 struct nvif_vmm { 19 struct nvif_object object; 20 u64 start; 21 u64 limit; 22 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; 31 }; 32 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 43