drm/nouveau/mmu: support initialisation of client-managed address-spaces
authorBen Skeggs <bskeggs@redhat.com>
Wed, 13 Jun 2018 06:25:53 +0000 (16:25 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 19 Feb 2019 23:00:00 +0000 (09:00 +1000)
commit2606f291621eb319726243e0f3893644114277f8
tree3b96ebdf4ec12bfebe9459882241f48535dabb67
parentae5ea7f6a8117c8615de4203a105ab3de7766def
drm/nouveau/mmu: support initialisation of client-managed address-spaces

NVKM is currently responsible for managing the allocation of a client's
GPU address-space, but there's various use-cases (ie. HMM address-space
mirroring) where giving a client more direct control is desirable.

This commit allows for a VMM to be created where the area allocated for
NVKM is limited to a client-specified window, the remainder of address-
space is controlled directly by the client.

Leaving a window is necessary to support various internal requirements,
but also to support existing allocation interfaces as not all of the HW
is capable of working with a HMM allocation.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
22 files changed:
drivers/gpu/drm/nouveau/include/nvif/if000c.h
drivers/gpu/drm/nouveau/include/nvif/vmm.h
drivers/gpu/drm/nouveau/nouveau_vmm.c
drivers/gpu/drm/nouveau/nvif/vmm.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/uvmm.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgf100.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgk104.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgk20a.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgm200.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgm20b.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp10b.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgv100.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmmcp77.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv04.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv41.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv44.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv50.c
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmtu102.c