linux-xiaomi-chiron/drivers/gpu/drm/nouveau
Marek Vasut d1d94b0129 drm/nouveau/fifo: Reinstate the correct engine bit programming
Commit 64f7c698be ("drm/nouveau/fifo: add engine_id hook") replaced
fifo/chang84.c g84_fifo_chan_engine() call with an indirect call of
fifo/g84.c g84_fifo_engine_id(). The G84_FIFO_ENGN_* values returned
from the later g84_fifo_engine_id() are incremented by 1 compared to
the previous g84_fifo_chan_engine() return values.

This is fine either way for most of the code, except this one line
where an engine bit programmed into the hardware is derived from the
return value. Decrement the return value accordingly, otherwise the
wrong engine bit is programmed into the hardware and that leads to
the following failure:
nouveau 0000:01:00.0: gr: 00000030 [ILLEGAL_MTHD ILLEGAL_CLASS] ch 1 [003fbce000 DRM] subc 3 class 0000 mthd 085c data 00000420

On the following hardware:
lspci -s 01:00.0
01:00.0 VGA compatible controller: NVIDIA Corporation GT216GLM [Quadro FX 880M] (rev a2)
lspci -ns 01:00.0
01:00.0 0300: 10de:0a3c (rev a2)

Fixes: 64f7c698be ("drm/nouveau/fifo: add engine_id hook")
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: <stable@vger.kernel.org> # 5.12+
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Karol Herbst <kherbst@redhat.com>
Cc: Lyude Paul <lyude@redhat.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211007214117.231472-1-marex@denx.de
Signed-off-by: Dave Airlie <airlied@redhat.com>
2021-10-15 15:04:58 +10:00
..
dispnv04 drm/nouveau: Remove references to struct drm_device.pdev 2021-01-13 09:04:04 +01:00
dispnv50 drm/nouveau/kms/nv50-: fix file release memory leak 2021-10-06 11:12:29 +02:00
include drm/nouveau/ga102-: support ttm buffer moves via copy engine 2021-10-06 11:05:45 +02:00
nvif drm/nouveau: rip out nvkm_client.super 2021-08-18 19:00:15 +10:00
nvkm drm/nouveau/fifo: Reinstate the correct engine bit programming 2021-10-15 15:04:58 +10:00
Kbuild drm/nouveau/bo: split buffer move functions into their own source files 2020-07-24 18:50:56 +10:00
Kconfig drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends 2020-11-09 09:19:24 +01:00
nouveau_abi16.c drm/nouveau: rip out nvkm_client.super 2021-08-18 19:00:15 +10:00
nouveau_abi16.h
nouveau_acpi.c drm/nouveau: Remove references to struct drm_device.pdev 2021-01-13 09:04:04 +01:00
nouveau_acpi.h drm/nouveau/bios: move ACPI _ROM handling 2020-05-22 11:13:49 +10:00
nouveau_backlight.c drm/nouveau/kms/nv50-: Add basic DPCD backlight support for nouveau 2021-06-09 13:35:56 -04:00
nouveau_bios.c drm/nouveau: remove set but not used variable ‘pdev’ in nouveau_bios_init 2021-02-09 17:16:57 +01:00
nouveau_bios.h
nouveau_bo.c drm/nouveau/ga102-: support ttm buffer moves via copy engine 2021-10-06 11:05:45 +02:00
nouveau_bo.h drm/ttm: device naming cleanup 2021-01-21 14:51:45 +01:00
nouveau_bo0039.c Merge drm/drm-next into drm-misc-next 2020-08-12 20:42:08 +02:00
nouveau_bo74c1.c Merge drm/drm-next into drm-misc-next 2020-08-12 20:42:08 +02:00
nouveau_bo85b5.c Merge drm/drm-next into drm-misc-next 2020-08-12 20:42:08 +02:00
nouveau_bo90b5.c Merge drm/drm-next into drm-misc-next 2020-08-12 20:42:08 +02:00
nouveau_bo5039.c Merge drm/drm-next into drm-misc-next 2020-08-12 20:42:08 +02:00
nouveau_bo9039.c Merge drm/drm-next into drm-misc-next 2020-08-12 20:42:08 +02:00
nouveau_boa0b5.c Merge drm/drm-next into drm-misc-next 2020-08-12 20:42:08 +02:00
nouveau_chan.c drm/nouveau/ga102-: support ttm buffer moves via copy engine 2021-10-06 11:05:45 +02:00
nouveau_chan.h drm/nouveau: interop with new push macros 2020-07-24 18:50:56 +10:00
nouveau_connector.c drm pull for 5.14-rc1 2021-07-01 12:53:43 -07:00
nouveau_connector.h drm/nouveau/kms/nv50-: Add basic DPCD backlight support for nouveau 2021-06-09 13:35:56 -04:00
nouveau_crtc.h
nouveau_debugfs.c drm/nouveau/debugfs: fix file release memory leak 2021-10-06 11:12:29 +02:00
nouveau_debugfs.h
nouveau_display.c drm/nouveau: Don't set allow_fb_modifiers explicitly 2021-05-06 11:43:58 +02:00
nouveau_display.h drm/nouveau: Use drm_gem_ttm_dumb_map_offset() 2021-04-11 20:15:13 +02:00
nouveau_dma.c drm/nouveau/fbcon: convert imageblit() to new push macros 2020-07-24 18:50:56 +10:00
nouveau_dma.h drm/nouveau/fence: use NVIDIA's headers for sync() 2020-07-24 18:51:04 +10:00
nouveau_dmem.c drm next for 5.10-rc1 2020-10-15 10:46:16 -07:00
nouveau_dmem.h drm pull for 5.8-rc1 2020-06-02 15:04:15 -07:00
nouveau_dp.c drm/nouveau/kms/nv50-: Fix clock checking algorithm in nv50_dp_mode_valid() 2020-10-30 09:34:13 +10:00
nouveau_drm.c drm/nouveau/ga102-: support ttm buffer moves via copy engine 2021-10-06 11:05:45 +02:00
nouveau_drv.h drm-misc-next for 5.13: 2021-03-16 17:08:46 +10:00
nouveau_encoder.h drm/nouveau/kms/nv50-: Add basic DPCD backlight support for nouveau 2021-06-09 13:35:56 -04:00
nouveau_fbcon.c drm/ttm: rename bo->mem and make it a pointer 2021-06-02 11:07:25 +02:00
nouveau_fbcon.h drm/nouveau/kms: Move struct nouveau_framebuffer.vma to struct nouveau_fbdev 2020-05-22 11:11:14 +10:00
nouveau_fence.c drm/nouveau: always wait for the exclusive fence 2021-07-08 14:59:08 +02:00
nouveau_fence.h
nouveau_gem.c drm/nouveau: avoid a use-after-free when BO init fails 2021-10-06 11:12:29 +02:00
nouveau_gem.h drm/gem: Use struct dma_buf_map in GEM vmap ops and convert GEM backends 2020-11-09 09:19:24 +01:00
nouveau_hwmon.c
nouveau_hwmon.h
nouveau_ioc32.c
nouveau_ioctl.h
nouveau_led.c
nouveau_led.h
nouveau_mem.c drm/nouveau: rip out nvkm_client.super 2021-08-18 19:00:15 +10:00
nouveau_mem.h drm/ttm: flip the switch for driver allocated resources v2 2021-06-04 15:16:46 +02:00
nouveau_nvif.c drm/nouveau: rip out nvkm_client.super 2021-08-18 19:00:15 +10:00
nouveau_platform.c drm/nouveau/gr/gk20a: move MODULE_FIRMWARE firmware definitions 2020-05-22 11:13:49 +10:00
nouveau_platform.h
nouveau_prime.c drm/nouveau: wait for moving fence after pinning v2 2021-06-22 15:29:03 +02:00
nouveau_reg.h
nouveau_sgdma.c drm/ttm: device naming cleanup 2021-01-21 14:51:45 +01:00
nouveau_svm.c drm/nouveau: rip out nvkm_client.super 2021-08-18 19:00:15 +10:00
nouveau_svm.h nouveau/svm: use the new migration invalidation 2020-07-28 16:20:33 -03:00
nouveau_ttm.c swiotlb: Update is_swiotlb_active to add a struct device argument 2021-07-13 20:04:41 -04:00
nouveau_ttm.h drm/nouveau: Implement mmap as GEM object function 2021-05-26 20:56:33 +02:00
nouveau_usif.c drm/nouveau: block a bunch of classes from userspace 2021-08-18 19:00:13 +10:00
nouveau_usif.h
nouveau_vga.c vgaarb: don't pass a cookie to vga_client_register 2021-07-21 10:29:10 +02:00
nouveau_vga.h
nouveau_vmm.c drm/ttm: rename bo->mem and make it a pointer 2021-06-02 11:07:25 +02:00
nouveau_vmm.h
nv04_fbcon.c drm/nouveau/fbcon: convert copyarea() to new push macros 2020-07-24 18:50:56 +10:00
nv04_fence.c drm/nouveau/fence: convert emit() to new push macros 2020-07-24 18:50:58 +10:00
nv10_fence.c drm/nouveau/fence: use NVIDIA's headers for read() 2020-07-24 18:51:04 +10:00
nv10_fence.h
nv17_fence.c drm/ttm: rename bo->mem and make it a pointer 2021-06-02 11:07:25 +02:00
nv50_display.h
nv50_fbcon.c drm/nouveau/fbcon/nv50-: use NVIDIA's headers for fillrect() 2020-07-24 18:51:04 +10:00
nv50_fence.c drm/ttm: rename bo->mem and make it a pointer 2021-06-02 11:07:25 +02:00
nv84_fence.c drm/nouveau/ga102-: support ttm buffer moves via copy engine 2021-10-06 11:05:45 +02:00
nvc0_fbcon.c drm/nouveau/fbcon/nv50-: use NVIDIA's headers for fillrect() 2020-07-24 18:51:04 +10:00
nvc0_fence.c drm/nouveau/fence: use NVIDIA's headers for sync() 2020-07-24 18:51:04 +10:00