summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2017-11-01 03:56:19 +1000
committerBen Skeggs <bskeggs@redhat.com>2017-11-02 13:32:25 +1000
commit806a7335653743a33f476a3705d55bada95b7dfe (patch)
tree21ac49a98d3917c0ffd127e126833c45ff1056cb /drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h
parentf1280394109a3a3a7ef1c37950d4356b12e75cb9 (diff)
downloadblackbird-obmc-linux-806a7335653743a33f476a3705d55bada95b7dfe.tar.gz
blackbird-obmc-linux-806a7335653743a33f476a3705d55bada95b7dfe.zip
drm/nouveau/mmu: implement base for new vm management
This is the first chunk of the new VMM code that provides the structures needed to describe a GPU virtual address-space layout, as well as common interfaces to handle VMM creation, and connecting instances to a VMM. The constructor now allocates the PD itself, rather than having the user handle that manually. This won't/can't be used until after all backends have been ported to these interfaces, so a little bit of memory will be wasted on Fermi and newer for a couple of commits in the series. Compatibility has been hacked into the old code to allow each GPU backend to be ported individually. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h
index 0f3bb316022a..ee0a8416df19 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h
@@ -32,6 +32,14 @@ struct nvkm_mmu_func {
void (*unmap)(struct nvkm_vma *, struct nvkm_memory *pgt,
u32 pte, u32 cnt);
void (*flush)(struct nvkm_vm *);
+
+ struct {
+ struct nvkm_sclass base;
+ int (*ctor)(struct nvkm_mmu *, u64 addr, u64 size,
+ void *argv, u32 argc, struct lock_class_key *,
+ const char *name, struct nvkm_vmm **);
+ bool global;
+ } vmm;
};
int nvkm_vm_create(struct nvkm_mmu *, u64, u64, u64, u32,
OpenPOWER on IntegriCloud