]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h
drm/nouveau/mmu: implement page table sub-allocation
[mirror_ubuntu-bionic-kernel.git] / drivers / gpu / drm / nouveau / nvkm / subdev / mmu / priv.h
index 27cedc60b507ba6c5191bae81983831129fb7193..0f3bb316022a46a0434e3961e4bf2b64d7455d70 100644 (file)
@@ -36,4 +36,41 @@ struct nvkm_mmu_func {
 
 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