linux/drivers/gpu/drm/nouveau
Karol Herbst fe9748b7b4 drm/nouveau/pmu/fuc: don't use movw directly anymore
Fixes failure to compile with recent envyas as a result of the 'movw'
alias being removed for v5.

A bit of history:

v3 only has a 16-bit sign-extended immediate mov op. In order to set
the high bits, there's a separate 'sethi' op. envyas validates that
the value passed to mov(imm) is between -0x8000 and 0x7fff. In order
to simplify macros that load both the low and high word, a 'movw'
alias was added which takes an unsigned 16-bit immediate. However the
actual hardware op still sign extends.

v5 has a full 32-bit immediate mov op. The v3 16-bit immediate mov op
is gone (loads 0 into the dst reg). However due to a bug in envyas,
the movw alias still existed, and selected the no-longer-present v3
16-bit immediate mov op. As a result usage of movw on v5 is the same
as mov with a 0x0 argument.

The proper fix throughout is to only ever use the 'movw' alias in
combination with 'sethi'. Anything else should get the sign-extended
validation to ensure that the intended value ends up in the
destination register.

Changes in fuc3 binaries is the result of a different encoding being
selected for a mov with an 8-bit value.

v2: added commit message written by Ilia, thanks for that!
v3: messed up rebasing, now it should apply

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2018-02-02 15:24:03 +10:00
..
dispnv04 main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
include main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
nvif drm/nouveau/mmu: define user interfaces to mmu vmm opertaions 2017-11-02 13:32:31 +10:00
nvkm drm/nouveau/pmu/fuc: don't use movw directly anymore 2018-02-02 15:24:03 +10:00
Kbuild
Kconfig drm/nouveau/mmu: implement new vmm backend 2017-11-02 13:32:27 +10:00
nouveau_abi16.c drm/nouveau: remove trivial cases of nvxx_device() usage 2017-11-02 13:32:32 +10:00
nouveau_abi16.h main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
nouveau_acpi.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nouveau_acpi.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nouveau_backlight.c
nouveau_bios.c drm/nouveau/bios: make const arrays hwsq_signature and edid_sig static 2017-11-03 09:12:10 +10:00
nouveau_bios.h
nouveau_bo.c Linux 4.15-rc8 2018-01-18 09:32:15 +10:00
nouveau_bo.h main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
nouveau_chan.c drm/nouveau: switch over to new memory and vmm interfaces 2017-11-02 13:32:33 +10:00
nouveau_chan.h main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
nouveau_connector.c
nouveau_connector.h
nouveau_crtc.h
nouveau_debugfs.c
nouveau_debugfs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nouveau_display.c drm/nouveau: Use drm_fb_helper_output_poll_changed() 2017-12-08 13:07:01 +01:00
nouveau_display.h main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
nouveau_dma.c
nouveau_dma.h
nouveau_dp.c
nouveau_drm.c drm/nouveau: fix race when adding delayed work items 2017-12-23 08:56:59 +10:00
nouveau_drv.h Merge branch 'linux-4.15' of git://github.com/skeggsb/linux into drm-fixes 2017-12-19 13:21:11 +10:00
nouveau_encoder.h
nouveau_fbcon.c Linux 4.15-rc8 2018-01-18 09:32:15 +10:00
nouveau_fbcon.h drm/nouveau: Use drm_fb_helper_output_poll_changed() 2017-12-08 13:07:01 +01:00
nouveau_fence.c drm/nouveau: remove unused nouveau_fence_work() 2017-11-02 13:32:33 +10:00
nouveau_fence.h main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
nouveau_gem.c drm/ttm: remove ttm_bo_unreserve_ticket 2017-12-06 12:47:20 -05:00
nouveau_gem.h main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
nouveau_hwmon.c
nouveau_hwmon.h
nouveau_ioc32.c
nouveau_ioctl.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nouveau_led.c
nouveau_led.h
nouveau_mem.c drm/nouveau: use alternate memory type for system-memory buffers with kind != 0 2017-12-19 10:16:37 +10:00
nouveau_mem.h drm/nouveau: switch over to new memory and vmm interfaces 2017-11-02 13:32:33 +10:00
nouveau_nvif.c
nouveau_platform.c
nouveau_platform.h
nouveau_prime.c
nouveau_reg.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nouveau_sgdma.c main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
nouveau_ttm.c drm/nouveau: use alternate memory type for system-memory buffers with kind != 0 2017-12-19 10:16:37 +10:00
nouveau_ttm.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nouveau_usif.c
nouveau_usif.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nouveau_vga.c drm/nouveau: Use drm_fb_helper_output_poll_changed() 2017-12-08 13:07:01 +01:00
nouveau_vga.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nouveau_vmm.c drm/nouveau: fix obvious memory leak 2017-12-20 08:40:36 +10:00
nouveau_vmm.h drm/nouveau/mmu: remove old vmm frontend 2017-11-02 13:32:33 +10:00
nv04_fbcon.c
nv04_fence.c
nv10_fence.c
nv10_fence.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nv17_fence.c
nv50_display.c drm/nouveau: Use drm_fb_helper_output_poll_changed() 2017-12-08 13:07:01 +01:00
nv50_display.h
nv50_fbcon.c
nv50_fence.c
nv84_fence.c
nvc0_fbcon.c
nvc0_fence.c