linux_dsm_epyc7002/drivers/gpu/drm/nouveau
Ben Skeggs eb813999f2 drm/nouveau/mmu: implement new vmm backend
This is the common code to support a rework of the VMM backends.

It adds support for more than 2 levels of page table nesting, which
is required to be able to support GP100's MMU layout.

Sparse mappings (that don't cause MMU faults when accessed) are now
supported, where the backend provides it.

Dual-PT handling had to become more sophisticated to support sparse,
but this also allows us to support an optimisation the MMU provides
on GK104 and newer.

Certain operations can now be combined into a single page tree walk
to avoid some overhead, but also enables optimsations like skipping
PTE unmap writes when the PT will be destroyed anyway.

The old backend has been hacked up to forward requests onto the new
backend, if present, so that it's possible to bisect between issues
in the backend changes vs the upcoming frontend changes.

Until the new frontend has been merged, new backends will leak BAR2
page tables on module unload.  This is expected, and it's not worth
the effort of hacking around this as it doesn't effect runtime.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2017-11-02 13:32:27 +10:00
..
dispnv04 drm/nouveau/core/object: allow arguments to be passed to map function 2017-11-02 13:32:16 +10:00
include drm/nouveau/mmu: implement new vmm backend 2017-11-02 13:32:27 +10:00
nvif drm/nouveau/core/object: allow arguments to be passed to map function 2017-11-02 13:32:16 +10:00
nvkm drm/nouveau/mmu: implement new vmm backend 2017-11-02 13:32:27 +10:00
Kbuild drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
Kconfig drm/nouveau/mmu: implement new vmm backend 2017-11-02 13:32:27 +10:00
nouveau_abi16.c drm/nouveau/core/mm: have users explicitly define heap identifiers 2017-11-02 13:32:22 +10:00
nouveau_abi16.h drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_acpi.c ACPI: Switch to use generic guid_t in acpi_evaluate_dsm() 2017-06-07 12:20:49 +02:00
nouveau_acpi.h
nouveau_backlight.c
nouveau_bios.c drm/nouveau/kms: add 8.1Gbps DP link rate 2017-11-02 13:32:15 +10:00
nouveau_bios.h
nouveau_bo.c drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_bo.h drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_chan.c drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_chan.h drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_connector.c drm: Pass struct drm_file * to __drm_mode_object_find [v2] 2017-10-12 10:03:04 +10:00
nouveau_connector.h
nouveau_crtc.h drm: nouveau: remove dead code and pointless local lut storage 2017-08-04 11:36:11 +02:00
nouveau_debugfs.c
nouveau_debugfs.h
nouveau_display.c drm/nouveau/kms/nv04-nv40: prevent undisplayable framebuffers from creation 2017-08-22 18:04:34 +10:00
nouveau_display.h drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_dma.c drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_dma.h drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_dp.c
nouveau_drm.c drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_drv.h drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_encoder.h drm/nouveau/disp: introduce acquire/release display path methods 2017-06-16 14:04:57 +10:00
nouveau_fbcon.c drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_fbcon.h
nouveau_fence.c drm/nouveau: remove unused sysmem fence code 2017-11-02 13:32:20 +10:00
nouveau_fence.h drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_gem.c drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_gem.h drm/nouveau: split various bo flags out into their own members 2017-11-02 13:32:20 +10:00
nouveau_hwmon.c drm/nouveau/hwmon: Change permissions to numeric 2017-06-16 14:05:03 +10:00
nouveau_hwmon.h
nouveau_ioc32.c
nouveau_ioctl.h
nouveau_led.c
nouveau_led.h
nouveau_mem.c drm/nouveau: allocate vram with nvkm_ram_get() 2017-11-02 13:32:23 +10:00
nouveau_mem.h drm/nouveau: directly handle comptag allocation 2017-11-02 13:32:23 +10:00
nouveau_nvif.c
nouveau_platform.c
nouveau_platform.h
nouveau_prime.c
nouveau_reg.h
nouveau_sgdma.c drm/nouveau: separate buffer object backing memory from nvkm structures 2017-11-02 13:32:21 +10:00
nouveau_ttm.c drm/nouveau: allocate vram with nvkm_ram_get() 2017-11-02 13:32:23 +10:00
nouveau_ttm.h
nouveau_usif.c
nouveau_usif.h
nouveau_vga.c drm/nouveau: Skip vga_fini on non-PCI device 2017-06-16 14:05:04 +10:00
nouveau_vga.h
nouveau_vmm.c drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nouveau_vmm.h drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nv04_fbcon.c
nv04_fence.c
nv10_fence.c
nv10_fence.h
nv17_fence.c
nv50_display.c drm/nouveau: split various bo flags out into their own members 2017-11-02 13:32:20 +10:00
nv50_display.h
nv50_fbcon.c drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nv50_fence.c
nv84_fence.c drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nvc0_fbcon.c drm/nouveau: separate constant-va tracking from nvkm vma structure 2017-11-02 13:32:21 +10:00
nvc0_fence.c