int nvkm_vm_create(struct nvkm_mmu *, u64, u64, u64, u32,
struct lock_class_key *, struct nvkm_vm **);
+
+int nv50_vm_create(struct nvkm_mmu *, u64, u64, u64, struct lock_class_key *,
+ struct nvkm_vm **);
+void nv50_vm_map_pgt(struct nvkm_gpuobj *, u32, struct nvkm_memory **);
+void nv50_vm_map(struct nvkm_vma *, struct nvkm_memory *, struct nvkm_mem *,
+ u32, u32, u64, u64);
+void nv50_vm_map_sg(struct nvkm_vma *, struct nvkm_memory *, struct nvkm_mem *,
+ u32, u32, dma_addr_t *);
+void nv50_vm_unmap(struct nvkm_vma *, struct nvkm_memory *, u32, u32);
+void nv50_vm_flush(struct nvkm_vm *);
+
+int gf100_vm_create(struct nvkm_mmu *, u64, u64, u64, struct lock_class_key *,
+ struct nvkm_vm **);
+void gf100_vm_map_pgt(struct nvkm_gpuobj *, u32, struct nvkm_memory **);
+void gf100_vm_map(struct nvkm_vma *, struct nvkm_memory *, struct nvkm_mem *,
+ u32, u32, u64, u64);
+void gf100_vm_map_sg(struct nvkm_vma *, struct nvkm_memory *, struct nvkm_mem *,
+ u32, u32, dma_addr_t *);
+void gf100_vm_unmap(struct nvkm_vma *, struct nvkm_memory *, u32, u32);
+void gf100_vm_flush(struct nvkm_vm *);
+
+struct nvkm_mmu_pt {
+ union {
+ struct nvkm_mmu_ptc *ptc;
+ struct nvkm_mmu_ptp *ptp;
+ };
+ struct nvkm_memory *memory;
+ bool sub;
+ u16 base;
+ u64 addr;
+ struct list_head head;
+};
+
+void nvkm_mmu_ptc_dump(struct nvkm_mmu *);
+struct nvkm_mmu_pt *
+nvkm_mmu_ptc_get(struct nvkm_mmu *, u32 size, u32 align, bool zero);
+void nvkm_mmu_ptc_put(struct nvkm_mmu *, bool force, struct nvkm_mmu_pt **);
#endif