124e8375bSBen Skeggs #ifndef __NOUVEAU_VMA_H__ 224e8375bSBen Skeggs #define __NOUVEAU_VMA_H__ 396da0bcdSBen Skeggs #include <nvif/vmm.h> 424e8375bSBen Skeggs struct nouveau_bo; 524e8375bSBen Skeggs struct nouveau_mem; 624e8375bSBen Skeggs 724e8375bSBen Skeggs struct nouveau_vma { 824e8375bSBen Skeggs struct nouveau_vmm *vmm; 924e8375bSBen Skeggs int refs; 1024e8375bSBen Skeggs struct list_head head; 1124e8375bSBen Skeggs u64 addr; 1224e8375bSBen Skeggs 1324e8375bSBen Skeggs struct nouveau_mem *mem; 140db912afSBen Skeggs 150db912afSBen Skeggs struct nouveau_fence *fence; 1624e8375bSBen Skeggs }; 1724e8375bSBen Skeggs 1824e8375bSBen Skeggs struct nouveau_vma *nouveau_vma_find(struct nouveau_bo *, struct nouveau_vmm *); 1924e8375bSBen Skeggs int nouveau_vma_new(struct nouveau_bo *, struct nouveau_vmm *, 2024e8375bSBen Skeggs struct nouveau_vma **); 2124e8375bSBen Skeggs void nouveau_vma_del(struct nouveau_vma **); 2224e8375bSBen Skeggs int nouveau_vma_map(struct nouveau_vma *, struct nouveau_mem *); 2324e8375bSBen Skeggs void nouveau_vma_unmap(struct nouveau_vma *); 2424e8375bSBen Skeggs 2524e8375bSBen Skeggs struct nouveau_vmm { 2624e8375bSBen Skeggs struct nouveau_cli *cli; 2796da0bcdSBen Skeggs struct nvif_vmm vmm; 28*eeaf06acSBen Skeggs struct nouveau_svmm *svmm; 2924e8375bSBen Skeggs }; 3024e8375bSBen Skeggs 3124e8375bSBen Skeggs int nouveau_vmm_init(struct nouveau_cli *, s32 oclass, struct nouveau_vmm *); 3224e8375bSBen Skeggs void nouveau_vmm_fini(struct nouveau_vmm *); 3324e8375bSBen Skeggs #endif 34