1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/gpu/drm/nouveau/include/nvif
Ben Skeggs 49b2dfc081 drm/nouveau/ga102-: support ttm buffer moves via copy engine
We don't currently have any kind of real acceleration on Ampere GPUs,
but the TTM memcpy() fallback paths aren't really designed to handle
copies between different devices, such as on Optimus systems, and
result in a kernel OOPS.

A few options were investigated to try and fix this, but didn't work
out, and likely would have resulted in a very unpleasant experience
for users anyway.

This commit adds just enough support for setting up a single channel
connected to a copy engine, which the kernel can use to accelerate
the buffer copies between devices.  Userspace has no access to this
incomplete channel support, but it's suitable for TTM's needs.

A more complete implementation of host(fifo) for Ampere GPUs is in
the works, but the required changes are far too invasive that they
would be unsuitable to backport to fix this issue on current kernels.

v2: fix GPFIFO length in RAMFC (reported by Karol)

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Cc: Lyude Paul <lyude@redhat.com>
Cc: Karol Herbst <kherbst@redhat.com>
Cc: <stable@vger.kernel.org> # v5.12+
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Tested-by: Karol Herbst <kherbst@redhat.com>
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210916220406.666454-1-skeggsb@gmail.com
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2021-10-06 11:05:45 +02:00
..
cl0002.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl006b.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl0046.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl0080.h drm/nouveau: block a bunch of classes from userspace 2021-08-18 19:00:13 +10:00
cl506e.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl506f.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl507a.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl507b.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl507c.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl507d.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl507e.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl826e.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl826f.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl906f.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cl5070.h drm/nouveau/disp: provide hint to OR allocation about HDA requirements 2020-06-04 14:23:20 +10:00
cl9097.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
cla06f.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
class.h drm/nouveau/ga102-: support ttm buffer moves via copy engine 2021-10-06 11:05:45 +02:00
clb069.h drm/nouveau/fault/gp100: expose MaxwellFaultBufferA 2019-02-20 09:00:00 +10:00
clc36f.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
clc37b.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
clc37e.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
client.h drm/nouveau: rip out nvkm_client.super 2021-08-18 19:00:15 +10:00
device.h drm/nouveau/nvif: give every device object a human-readable identifier 2020-07-24 18:50:50 +10:00
disp.h drm/nouveau/nvif: give every disp object a human-readable identifier 2020-07-24 18:50:51 +10:00
driver.h drm/nouveau: rip out nvkm_client.super 2021-08-18 19:00:15 +10:00
event.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
fifo.h drm/nouveau/fifo/gk104-: remove use of subdev index in runlist topology info 2021-02-11 11:49:58 +10:00
if0000.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
if000a.h drm/nouveau/mmu: define user interfaces to mmu memory allocation 2017-11-02 13:32:31 +10:00
if000b.h drm/nouveau/mmu/nv04-nv4x: type-based vram allocation and bar mapping 2017-11-02 13:32:31 +10:00
if000c.h nouveau/svm: implement atomic SVM access 2021-07-01 11:06:04 -07:00
if000d.h drm/nouveau/mmu/nv04: implement new vmm backend 2017-11-02 13:32:27 +10:00
if0001.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
if0002.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
if0003.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
if0004.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
if0005.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
if0008.h drm/nouveau/mmu: Add correct turing page kinds 2020-01-15 10:49:59 +10:00
if500b.h drm/nouveau/mmu/nv50,g84: type-based vram allocation and bar mapping 2017-11-02 13:32:31 +10:00
if500d.h drm/nouveau/mmu/nv50,g84: implement new vmm backend 2017-11-02 13:32:29 +10:00
if900b.h drm/nouveau/mmu/gf100-: type-based vram allocation and bar mapping 2017-11-02 13:32:31 +10:00
if900d.h drm/nouveau/mmu/gf100: implement new vmm backend 2017-11-02 13:32:29 +10:00
ifb00d.h drm/nouveau/mmu/gm200,gm20b: implement new vmm backend 2017-11-02 13:32:29 +10:00
ifc00d.h drm/nouveau/mmu/gp100-: support vmms with gcc/tex replayable faults enabled 2019-02-20 09:00:00 +10:00
ioctl.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
list.h drm/nouveau: remove symlinks, move core/ to nvkm/ (no code changes) 2015-01-22 12:15:10 +10:00
mem.h drm/nouveau/nvif: give every mem object a human-readable identifier 2020-07-24 18:50:51 +10:00
mmu.h drm/nouveau/nvif: give every mmu object a human-readable identifier 2020-07-24 18:50:50 +10:00
notify.h drm/nouveau/nvif: give every notify object a human-readable name 2020-07-24 18:50:51 +10:00
object.h drm/nouveau/kms/nv50-: implement proper push buffer control logic 2020-07-24 18:50:56 +10:00
os.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
parent.h drm/nouveau/nvif: add support for object-level debug output 2020-07-24 18:50:51 +10:00
printf.h drm/nouveau/nvif: add support for object-level debug output 2020-07-24 18:50:51 +10:00
push.h drm/nouveau/nvif: fix method count when pushing an array 2021-01-19 16:08:41 +10:00
push006c.h drm/nouveau/fbcon: convert accel_init() to new push macros 2020-07-24 18:50:56 +10:00
push206e.h drm/nouveau/fbcon: convert accel_init() to new push macros 2020-07-24 18:50:56 +10:00
push507c.h drm/nouveau/kms/nv50-: add some whitespace before debug message 2020-09-03 15:32:23 +10:00
push906f.h drm/nouveau/fbcon: convert accel_init() to new push macros 2020-07-24 18:50:56 +10:00
pushc37b.h drm/nouveau/kms/nv50-: convert wimm point() to new push macros 2020-07-24 18:50:51 +10:00
timer.h drm/nouveau/nvif: protect waits against GPU falling off the bus 2020-04-07 14:37:50 +10:00
unpack.h drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:50 +10:00
user.h drm/nouveau/nvif: give every usermode object a human-readable identifier 2020-07-24 18:50:51 +10:00
vmm.h drm/nouveau/nvif: give every vmm object a human-readable identifier 2020-07-24 18:50:51 +10:00