linux-uconsole/drivers/gpu/drm
Linus Torvalds 100d46bd72 Merge Intel Gen8/Gen9 graphics fixes from Jon Bloomfield.
This fixes two different classes of bugs in the Intel graphics hardware:

MMIO register read hang:
 "On Intels Gen8 and Gen9 Graphics hardware, a read of specific graphics
  MMIO registers when the product is in certain low power states causes
  a system hang.

  There are two potential triggers for DoS:
    a) H/W corruption of the RC6 save/restore vector
    b) Hard hang within the MIPI hardware

  This prevents the DoS in two areas of the hardware:
    1) Detect corruption of RC6 address on exit from low-power state,
       and if we find it corrupted, disable RC6 and RPM
    2) Permanently lower the MIPI MMIO timeout"

Blitter command streamer unrestricted memory accesses:
 "On Intels Gen9 Graphics hardware the Blitter Command Streamer (BCS)
  allows writing to Memory Mapped Input Output (MMIO) that should be
  blocked. With modifications of page tables, this can lead to privilege
  escalation. This exposure is limited to the Guest Physical Address
  space and does not allow for access outside of the graphics virtual
  machine.

  This series establishes a software parser into the Blitter command
  stream to scan for, and prevent, reads or writes to MMIO's that should
  not be accessible to non-privileged contexts.

  Much of the command parser infrastructure has existed for some time,
  and is used on Ivybridge/Haswell/Valleyview derived products to allow
  the use of features normally blocked by hardware. In this legacy
  context, the command parser is employed to allow normally unprivileged
  submissions to be run with elevated privileges in order to grant
  access to a limited set of extra capabilities. In this mode the parser
  is optional; In the event that the parser finds any construct that it
  cannot properly validate (e.g. nested command buffers), it simply
  aborts the scan and submits the buffer in non-privileged mode.

  For Gen9 Graphics, this series makes the parser mandatory for all
  Blitter submissions. The incoming user buffer is first copied to a
  kernel owned buffer, and parsed. If all checks are successful the
  kernel owned buffer is mapped READ-ONLY and submitted on behalf of the
  user. If any checks fail, or the parser is unable to complete the scan
  (nested buffers), it is forcibly rejected. The successfully scanned
  buffer is executed with NORMAL user privileges (key difference from
  legacy usage).

  Modern usermode does not use the Blitter on later hardware, having
  switched over to using the 3D engine instead for performance reasons.
  There are however some legacy usermode apps that rely on Blitter,
  notably the SNA X-Server. There are no known usermode applications
  that require nested command buffers on the Blitter, so the forcible
  rejection of such buffers in this patch series is considered an
  acceptable limitation"

* Intel graphics fixes in emailed bundle from Jon Bloomfield <jon.bloomfield@intel.com>:
  drm/i915/cmdparser: Fix jump whitelist clearing
  drm/i915/gen8+: Add RC6 CTX corruption WA
  drm/i915: Lower RM timeout to avoid DSI hard hangs
  drm/i915/cmdparser: Ignore Length operands during command matching
  drm/i915/cmdparser: Add support for backward jumps
  drm/i915/cmdparser: Use explicit goto for error paths
  drm/i915: Add gen9 BCS cmdparsing
  drm/i915: Allow parsing of unsized batches
  drm/i915: Support ro ppgtt mapped cmdparser shadow buffers
  drm/i915: Add support for mandatory cmdparsing
  drm/i915: Remove Master tables from cmdparser
  drm/i915: Disable Secure Batches for gen6+
  drm/i915: Rename gen7 cmdparser tables
2019-11-11 16:27:46 -08:00
..
amd drm/amdgpu/renoir: move gfxoff handling into gfx9 module 2019-11-06 22:06:23 -05:00
arc drm/arc: Drop drm_gem_prime_export/import 2019-06-21 20:02:10 +02:00
arm drm/komeda: Fix typos in komeda_splitter_validate 2019-10-21 14:50:51 +01:00
armada drm/armada: drop use of drmP.h 2019-08-14 18:31:10 +02:00
aspeed drm/aspeed: gfc_crtc: Make structure aspeed_gfx_funcs constant 2019-08-14 19:27:26 +02:00
ast drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
atmel-hlcdc Linus 5.3-rc1 2019-07-22 21:24:10 +02:00
bochs drm/bochs: Use dev_get_drvdata 2019-08-06 09:20:58 +02:00
bridge drm/bridge: tc358767: fix max_tu_symbol value 2019-10-10 11:15:45 +02:00
cirrus drm/prime: Actually remove DRIVER_PRIME everywhere 2019-06-21 17:30:32 +02:00
etnaviv drm/etnaviv: fix dumping of iommuv2 2019-10-29 18:12:24 +01:00
exynos drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
fsl-dcu drm/fsl-dcu: fix opencoded use of drm_panel_* 2019-08-10 15:41:48 +02:00
gma500 Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
hisilicon drm-misc-next for 5.4: 2019-08-27 17:21:04 +10:00
i2c drm/i2c/tda998x: drop use of drmP.h 2019-08-14 18:30:52 +02:00
i810 drm/i810: drop use of drmP.h 2019-07-17 12:52:55 +02:00
i915 Merge Intel Gen8/Gen9 graphics fixes from Jon Bloomfield. 2019-11-11 16:27:46 -08:00
imx drm/imx: IPUv3 image converter fixes and improvements 2019-08-27 16:52:12 +10:00
ingenic drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
lib
lima drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
mcde drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
mediatek drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
meson drm: meson: use match data to detect vpu compatibility 2019-08-22 17:54:05 +02:00
mga drm/mga: drop use of drmP.h 2019-06-30 09:48:05 +02:00
mgag200 drm/mgag200: Provide ddc symlink in connector sysfs directory 2019-07-31 16:33:09 +02:00
msm drm/msm/dsi: Implement reset correctly 2019-10-11 14:04:31 -04:00
mxsfb dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
nouveau drm fixes for 5.4-rc1 2019-09-27 11:13:35 -07:00
omapdrm Merge drm/drm-fixes into drm-misc-fixes 2019-10-03 09:59:29 +02:00
panel drm/panel: tpo-td043mtea1: Fix SPI alias 2019-10-08 08:02:20 +03:00
panfrost drm/panfrost: Don't dereference bogus MMU pointers 2019-10-29 13:18:17 -05:00
pl111 drm/pl111: Support grayscale 2019-08-09 09:15:05 +02:00
qxl drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
r128 drm/r128: drop use of drmP.h 2019-07-17 12:52:55 +02:00
radeon drm/radeon: fix si_enable_smc_cac() failed issue 2019-11-06 22:06:23 -05:00
rcar-du Merge drm/drm-fixes into drm-misc-fixes 2019-10-03 09:59:29 +02:00
rockchip drm fixes for 5.4-rc1 2019-09-27 11:13:35 -07:00
savage drm/savage: drop use of drmP.h 2019-06-05 20:31:04 +02:00
scheduler drm/sched: Set error to s_fence if HW job submission failed. 2019-10-30 11:56:15 -04:00
selftests drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
shmobile drm/shmobile: drop use of drmP.h 2019-07-15 18:11:31 +02:00
sis drm/sis: drop drmP.h use 2019-06-05 20:29:57 +02:00
sti drm/sti: fix opencoded use of drm_panel_* 2019-08-07 13:54:17 +02:00
stm drm/stm: attach gem fence to atomic state 2019-07-25 12:00:09 +02:00
sun4i drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
tdfx drm/tdfx: drop use of drmP.h 2019-07-17 12:52:55 +02:00
tegra drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
tilcdc drm/tilcdc: include linux/pinctrl/consumer.h again 2019-09-30 19:24:47 +03:00
tiny drm/tiny: Kconfig: Remove always-y THERMAL dep. from TINYDRM_REPAPER 2019-10-10 15:15:51 +02:00
ttm drm/ttm: fix handling in ttm_bo_add_mem_to_lru 2019-10-14 13:21:15 +02:00
tve200 drm/tve200: drop use of drmP.h 2019-07-15 18:11:30 +02:00
udl drm/udl: drop use of drmP.h 2019-07-17 12:52:55 +02:00
v3d drm/v3d: Fix memory leak in v3d_submit_cl_ioctl 2019-10-23 20:57:05 +02:00
vboxvideo drm/vboxvideo: Make structure vbox_fb_helper_funcs constant 2019-08-18 12:52:52 +02:00
vc4 Merge drm/drm-fixes into drm-misc-fixes 2019-10-03 09:59:29 +02:00
vgem dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
via drivers/gpu/drm/via: convert put_page() to put_user_page*() 2019-09-24 15:54:08 -07:00
virtio drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
vkms drm/vkms: drop use of drmP.h 2019-07-15 18:11:30 +02:00
vmwgfx drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
xen xen: fixes for 5.4-rc3 2019-10-12 14:11:21 -07:00
zte Linus 5.3-rc1 2019-07-22 21:24:10 +02:00
ati_pcigart.c drm/ati_pcigart: drop dependency on drm_os_linux.h 2019-07-19 23:24:16 +02:00
drm_agpsupport.c gpu/drm: fix a few kernel-doc "/**" mark warnings 2019-07-16 11:25:02 +02:00
drm_atomic.c drm: Free the writeback_job when it with an empty fb 2019-09-23 15:31:53 +08:00
drm_atomic_helper.c drm/atomic: fix self-refresh helpers crtc state dereference 2019-11-06 13:00:21 -05:00
drm_atomic_state_helper.c drm/atomic: Rename crtc_state->pageflip_flags to async_flip 2019-09-18 18:43:36 +02:00
drm_atomic_uapi.c drm/atomic: Reject FLIP_ASYNC unconditionally 2019-09-18 18:42:57 +02:00
drm_auth.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_blend.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_bridge.c drm: Add atomic variants for bridge enable/disable 2019-06-13 13:00:29 -04:00
drm_bufs.c drm main pull request for v5.3-rc1 (sans mm changes) 2019-07-15 19:04:27 -07:00
drm_cache.c
drm_client.c drm/fb-helper: Map DRM client buffer only when required 2019-08-01 15:01:29 +02:00
drm_client_modeset.c drm/modes: Don't apply cmdline's rotation if it wasn't specified 2019-07-16 10:34:38 +02:00
drm_color_mgmt.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_connector.c drm: Fix kerneldoc warns in connector-related docs 2019-08-12 10:16:39 -04:00
drm_context.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_crtc.c drm: no need to check return value of debugfs_create functions 2019-06-13 16:39:16 +02:00
drm_crtc_helper.c drm: Remove bridge support from legacy helpers 2019-08-16 15:50:27 +03:00
drm_crtc_helper_internal.h
drm_crtc_internal.h drm/atomic: Move __drm_atomic_helper_disable_plane/set_config() 2019-06-08 16:46:37 +02:00
drm_damage_helper.c drm/damage-helper: Use NULL instead of 0 2019-05-28 09:03:06 +02:00
drm_debugfs.c drm: debugfs: make drm_debugfs_create_files() never fail 2019-06-14 16:59:51 +02:00
drm_debugfs_crc.c drm/crc-debugfs: Add notes about CRC<->commit interactions 2019-08-06 18:27:53 +01:00
drm_dma.c gpu/drm: fix a few kernel-doc "/**" mark warnings 2019-07-16 11:25:02 +02:00
drm_dp_aux_dev.c drm/dp_mst: Enable registration of AUX devices for MST ports 2019-07-25 16:39:35 -04:00
drm_dp_cec.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c drm: Make the bw/link rate calculations more forgiving 2019-07-17 12:45:30 -04:00
drm_dp_mst_topology.c drm/mst: Fix sphinx warnings in drm_dp_msg_connector register functions 2019-07-26 14:48:03 -04:00
drm_drv.c drm/kms: Duct-tape for mode object lifetime checks 2019-09-18 11:27:18 +02:00
drm_dsc.c
drm_dumb_buffers.c Revert "drm/gem: Rename drm_gem_dumb_map_offset() to drm_gem_map_offset()" 2019-08-07 11:56:48 -04:00
drm_edid.c drm/edid: Add 6 bpc quirk for SDC panel in Lenovo G50 2019-10-10 09:06:54 -05:00
drm_edid_load.c Merge remote-tracking branch 'drm/drm-next' into drm-misc-next 2019-05-28 09:39:08 +02:00
drm_encoder.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_encoder_slave.c
drm_fb_cma_helper.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
drm_fb_helper.c drm/fb-helper: Instanciate shadow FB if configured in device's mode_config 2019-08-01 15:01:35 +02:00
drm_file.c drm/prime: Unconditionally set up the prime file private 2019-06-21 11:48:09 +02:00
drm_flip_work.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_format_helper.c
drm_fourcc.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_framebuffer.c drm: silence variable 'conn' set but not used 2019-07-22 16:04:53 -04:00
drm_gem.c dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
drm_gem_cma_helper.c Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
drm_gem_framebuffer_helper.c dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
drm_gem_shmem_helper.c drm/shmem: Use mutex_trylock in drm_gem_shmem_purge 2019-08-28 10:02:39 -05:00
drm_gem_vram_helper.c drm/ttm: use gem vma_node 2019-08-06 08:21:54 +02:00
drm_hashtab.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_hdcp.c drm/hdcp: reference for srm file format 2019-08-06 13:18:42 +05:30
drm_internal.h drm/gem: Unexport drm_gem_(un)pin/v(un)map 2019-06-17 17:37:01 +02:00
drm_ioc32.c Linus 5.3-rc1 2019-07-22 21:24:10 +02:00
drm_ioctl.c drm/atomic: Take the atomic toys away from X 2019-09-18 18:42:21 +02:00
drm_irq.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_kms_helper_common.c drm: fix module name in edid_firmware log message 2019-08-22 10:41:06 +03:00
drm_lease.c Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
drm_legacy.h drm: make drm_legacy.h self-contained 2019-05-27 18:06:47 +02:00
drm_legacy_misc.c gpu/drm: fix a few kernel-doc "/**" mark warnings 2019-07-16 11:25:02 +02:00
drm_lock.c gpu/drm: fix a few kernel-doc "/**" mark warnings 2019-07-16 11:25:02 +02:00
drm_memory.c gpu/drm: fix a few kernel-doc "/**" mark warnings 2019-07-16 11:25:02 +02:00
drm_mipi_dbi.c drm/tinydrm: Move mipi-dbi 2019-07-25 10:45:07 +02:00
drm_mipi_dsi.c drivers: Introduce device lookup variants by of_node 2019-07-30 13:07:41 +02:00
drm_mm.c drm: Allow range of 0 for drm_mm_insert_node_in_range() 2019-06-26 21:13:12 +01:00
drm_mode_config.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_mode_object.c drm/kms: Duct-tape for mode object lifetime checks 2019-09-18 11:27:18 +02:00
drm_modes.c drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
drm_modeset_helper.c
drm_modeset_lock.c docs conversion for v5.3-rc1 2019-07-16 12:21:41 -07:00
drm_of.c Merge remote-tracking branch 'drm/drm-next' into drm-misc-next 2019-05-28 09:39:08 +02:00
drm_panel.c drm/panel: drop return code from drm_panel_detach() 2019-08-10 15:41:48 +02:00
drm_panel_orientation_quirks.c drm: panel-orientation-quirks: Add extra quirk table entry for GPD MicroPC 2019-07-01 16:58:09 +02:00
drm_pci.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_plane.c
drm_plane_helper.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_prime.c drm/prime: Ditch gem_prime_res_obj hook 2019-07-31 10:19:23 +02:00
drm_print.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_probe_helper.c Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
drm_property.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_rect.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_scatter.c gpu/drm: fix a few kernel-doc "/**" mark warnings 2019-07-16 11:25:02 +02:00
drm_scdc_helper.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_self_refresh_helper.c drm/atomic: fix self-refresh helpers crtc state dereference 2019-11-06 13:00:21 -05:00
drm_simple_kms_helper.c Linux 5.2-rc5 2019-06-19 12:07:29 +02:00
drm_syncobj.c drm/syncobj: Add better overview documentation for syncobj (v2) 2019-08-12 16:58:52 +02:00
drm_sysfs.c drm: uevent for connector status change 2019-08-06 13:16:54 +05:30
drm_trace.h drm: make drm_trace.h self-contained 2019-05-27 18:06:54 +02:00
drm_trace_points.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_vblank.c drm/vblank: drop use of DRM_WAIT_ON() 2019-08-03 16:07:39 +02:00
drm_vm.c gpu/drm: fix a few kernel-doc "/**" mark warnings 2019-07-16 11:25:02 +02:00
drm_vma_manager.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_vram_helper_common.c drm: Replace drm_gem_vram_push_to_system() with kunmap + unpin 2019-05-22 12:43:29 +02:00
drm_vram_mm_helper.c drm: drop use of drmP.h in drm/* 2019-05-27 18:07:03 +02:00
drm_writeback.c drm: Clear the fence pointer when writeback job signaled 2019-09-23 15:32:53 +08:00
Kconfig drm-misc-next for 5.4: 2019-08-09 16:04:31 +10:00
Makefile drm/amd: remove meaningless descending into amd/amdkfd/ 2019-08-27 10:09:12 -05:00