Loading drivers/gpu/drm/nouveau/include/nvif/class.h +1 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #define NVIF_CLASS_VMM /* if000c.h */ 0x8000000c #define NVIF_CLASS_VMM_NV04 /* if000d.h */ 0x8000000d #define NVIF_CLASS_VMM_NV50 /* if500d.h */ 0x8000500d #define NVIF_CLASS_VMM_GF100 /* if900d.h */ 0x8000900d /* the below match nvidia-assigned (either in hw, or sw) class numbers */ #define NV_NULL_CLASS 0x00000030 Loading drivers/gpu/drm/nouveau/include/nvif/if900d.h 0 → 100644 +8 −0 Original line number Diff line number Diff line #ifndef __NVIF_IF900D_H__ #define __NVIF_IF900D_H__ #include "if000c.h" struct gf100_vmm_vn { /* nvif_vmm_vX ... */ }; #endif drivers/gpu/drm/nouveau/nvkm/subdev/mmu/Kbuild +1 −0 Original line number Diff line number Diff line Loading @@ -17,3 +17,4 @@ nvkm-y += nvkm/subdev/mmu/vmmnv04.o nvkm-y += nvkm/subdev/mmu/vmmnv41.o nvkm-y += nvkm/subdev/mmu/vmmnv44.o nvkm-y += nvkm/subdev/mmu/vmmnv50.o nvkm-y += nvkm/subdev/mmu/vmmgf100.o drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gf100.c +4 −2 Original line number Diff line number Diff line Loading @@ -21,12 +21,13 @@ * * Authors: Ben Skeggs */ #include "priv.h" #include "vmm.h" #include <core/gpuobj.h> #include <subdev/fb.h> #include <subdev/timer.h> #include <core/gpuobj.h> #include <nvif/class.h> /* Map from compressed to corresponding uncompressed storage type. * The value 0xff represents an invalid storage type. Loading Loading @@ -209,6 +210,7 @@ gf100_mmu = { .map_sg = gf100_vm_map_sg, .unmap = gf100_vm_unmap, .flush = gf100_vm_flush, .vmm = {{ -1, -1, NVIF_CLASS_VMM_GF100}, gf100_vmm_new }, }; int Loading drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h +12 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,9 @@ struct nvkm_vmm_pt { struct nvkm_vmm_desc_func { }; extern const struct nvkm_vmm_desc_func gf100_vmm_pgd; extern const struct nvkm_vmm_desc_func gf100_vmm_pgt; struct nvkm_vmm_desc { enum { PGD, Loading Loading @@ -111,6 +114,13 @@ int nv04_vmm_new_(const struct nvkm_vmm_func *, struct nvkm_mmu *, u32, u64, u64, void *, u32, struct lock_class_key *, const char *, struct nvkm_vmm **); int gf100_vmm_new_(const struct nvkm_vmm_func *, const struct nvkm_vmm_func *, struct nvkm_mmu *, u64, u64, void *, u32, struct lock_class_key *, const char *, struct nvkm_vmm **); int gf100_vmm_join_(struct nvkm_vmm *, struct nvkm_memory *, u64 base); int gf100_vmm_join(struct nvkm_vmm *, struct nvkm_memory *); void gf100_vmm_part(struct nvkm_vmm *, struct nvkm_memory *); int nv04_vmm_new(struct nvkm_mmu *, u64, u64, void *, u32, struct lock_class_key *, const char *, struct nvkm_vmm **); int nv41_vmm_new(struct nvkm_mmu *, u64, u64, void *, u32, Loading @@ -121,4 +131,6 @@ int nv50_vmm_new(struct nvkm_mmu *, u64, u64, void *, u32, struct lock_class_key *, const char *, struct nvkm_vmm **); int g84_vmm_new(struct nvkm_mmu *, u64, u64, void *, u32, struct lock_class_key *, const char *, struct nvkm_vmm **); int gf100_vmm_new(struct nvkm_mmu *, u64, u64, void *, u32, struct lock_class_key *, const char *, struct nvkm_vmm **); #endif Loading
drivers/gpu/drm/nouveau/include/nvif/class.h +1 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #define NVIF_CLASS_VMM /* if000c.h */ 0x8000000c #define NVIF_CLASS_VMM_NV04 /* if000d.h */ 0x8000000d #define NVIF_CLASS_VMM_NV50 /* if500d.h */ 0x8000500d #define NVIF_CLASS_VMM_GF100 /* if900d.h */ 0x8000900d /* the below match nvidia-assigned (either in hw, or sw) class numbers */ #define NV_NULL_CLASS 0x00000030 Loading
drivers/gpu/drm/nouveau/include/nvif/if900d.h 0 → 100644 +8 −0 Original line number Diff line number Diff line #ifndef __NVIF_IF900D_H__ #define __NVIF_IF900D_H__ #include "if000c.h" struct gf100_vmm_vn { /* nvif_vmm_vX ... */ }; #endif
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/Kbuild +1 −0 Original line number Diff line number Diff line Loading @@ -17,3 +17,4 @@ nvkm-y += nvkm/subdev/mmu/vmmnv04.o nvkm-y += nvkm/subdev/mmu/vmmnv41.o nvkm-y += nvkm/subdev/mmu/vmmnv44.o nvkm-y += nvkm/subdev/mmu/vmmnv50.o nvkm-y += nvkm/subdev/mmu/vmmgf100.o
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gf100.c +4 −2 Original line number Diff line number Diff line Loading @@ -21,12 +21,13 @@ * * Authors: Ben Skeggs */ #include "priv.h" #include "vmm.h" #include <core/gpuobj.h> #include <subdev/fb.h> #include <subdev/timer.h> #include <core/gpuobj.h> #include <nvif/class.h> /* Map from compressed to corresponding uncompressed storage type. * The value 0xff represents an invalid storage type. Loading Loading @@ -209,6 +210,7 @@ gf100_mmu = { .map_sg = gf100_vm_map_sg, .unmap = gf100_vm_unmap, .flush = gf100_vm_flush, .vmm = {{ -1, -1, NVIF_CLASS_VMM_GF100}, gf100_vmm_new }, }; int Loading
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h +12 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,9 @@ struct nvkm_vmm_pt { struct nvkm_vmm_desc_func { }; extern const struct nvkm_vmm_desc_func gf100_vmm_pgd; extern const struct nvkm_vmm_desc_func gf100_vmm_pgt; struct nvkm_vmm_desc { enum { PGD, Loading Loading @@ -111,6 +114,13 @@ int nv04_vmm_new_(const struct nvkm_vmm_func *, struct nvkm_mmu *, u32, u64, u64, void *, u32, struct lock_class_key *, const char *, struct nvkm_vmm **); int gf100_vmm_new_(const struct nvkm_vmm_func *, const struct nvkm_vmm_func *, struct nvkm_mmu *, u64, u64, void *, u32, struct lock_class_key *, const char *, struct nvkm_vmm **); int gf100_vmm_join_(struct nvkm_vmm *, struct nvkm_memory *, u64 base); int gf100_vmm_join(struct nvkm_vmm *, struct nvkm_memory *); void gf100_vmm_part(struct nvkm_vmm *, struct nvkm_memory *); int nv04_vmm_new(struct nvkm_mmu *, u64, u64, void *, u32, struct lock_class_key *, const char *, struct nvkm_vmm **); int nv41_vmm_new(struct nvkm_mmu *, u64, u64, void *, u32, Loading @@ -121,4 +131,6 @@ int nv50_vmm_new(struct nvkm_mmu *, u64, u64, void *, u32, struct lock_class_key *, const char *, struct nvkm_vmm **); int g84_vmm_new(struct nvkm_mmu *, u64, u64, void *, u32, struct lock_class_key *, const char *, struct nvkm_vmm **); int gf100_vmm_new(struct nvkm_mmu *, u64, u64, void *, u32, struct lock_class_key *, const char *, struct nvkm_vmm **); #endif