linux_dsm_epyc7002/drivers/gpu/drm
Chris Wilson b3ee09a4de drm/i915/ringbuffer: Fix context restore upon reset
The discovery with trying to enable full-ppgtt was that we were
completely failing to the load both the mm and context following the
reset. Although we were performing mmio to set the PP_DIR (per-process
GTT) and CCID (context), these were taking no effect (the assumption was
that this would trigger reload of the context and restore the page
tables). It was not until we performed the LRI + MI_SET_CONTEXT in a
following context switch would anything occur.

Since we are then required to reset the context image and PP_DIR using
CS commands, we place those commands into every batch. The hardware
should recognise the no-ops and eliminate the expensive context loads,
but we still have to pay the cost of using cross-powerwell register
writes. In practice, this has no effect on actual context switch times,
and only adds a few hundred nanoseconds to no-op switches. We can improve
the latter by eliminating the w/a around known no-op switches, but there
is an ulterior motive to keeping them.

Always emitting the context switch at the beginning of the request (and
relying on HW to skip unneeded switches) does have one key advantage.
Should we implement request reordering on Haswell, we will not know in
advance what the previous executing context was on the GPU and so we
would not be able to elide the MI_SET_CONTEXT commands ourselves and
always have to emit them. Having our hand forced now actually prepares
us for later.

Now since that context and mm follow the request, we no longer (and not
for a long time since requests took over!) require a trace point to tell
when we write the switch into the ring, since it is always. (This is
even more important when you remember that simply writing into the ring
bears no relation to the current mm.)

v2: Sandybridge has to agree to use LRI as well.

Testcase: igt/drv_selftests/live_hangcheck
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Matthew Auld <matthew.william.auld@gmail.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180611110845.31890-1-chris@chris-wilson.co.uk
2018-06-11 14:03:47 +01:00
..
amd Merge branch 'drm-fixes-4.17' of git://people.freedesktop.org/~agd5f/linux into drm-fixes 2018-04-26 11:08:26 +10:00
arc
arm
armada
ast drm/ast: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
atmel-hlcdc drm/atmel-hclcdc: Convert to the new generic alpha property 2018-04-16 21:20:40 +02:00
bochs drm/bochs: fix mode_valid's return type 2018-04-25 09:34:00 +02:00
bridge drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
cirrus
etnaviv
exynos drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
fsl-dcu
gma500 drm/gma500: fix psb_intel_lvds_mode_valid()'s return type 2018-04-25 09:38:37 +02:00
hisilicon drm/hisilicon: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
i2c drm/i2c: tda998x: fix mode_valid's return type 2018-04-25 09:38:57 +02:00
i810
i915 drm/i915/ringbuffer: Fix context restore upon reset 2018-06-11 14:03:47 +01:00
imx
lib
mediatek
meson
mga
mgag200 drm/mgag200: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
msm Merge tag 'drm-msm-fixes-2018-04-25' of git://people.freedesktop.org/~robclark/linux into drm-fixes 2018-04-26 11:09:04 +10:00
mxsfb drm/mxsfb: Use simple_display_pipe prepare_fb helper 2018-04-24 13:58:43 +02:00
nouveau Merge airlied/drm-next into drm-misc-next 2018-03-30 12:35:45 -04:00
omapdrm drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
panel
pl111 drm/pl111: Use simple_display_pipe prepare_fb helper 2018-04-24 13:58:24 +02:00
qxl drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
r128
radeon drm/radeon: add PX quirk for Asus K73TK 2018-04-11 13:11:50 -05:00
rcar-du drm/rcar-du: Convert to the new generic alpha property 2018-04-16 21:20:59 +02:00
rockchip drm/rockchip: psr: Remove flush by CRTC 2018-04-24 08:34:54 +02:00
savage
scheduler
selftests
shmobile
sis
sti drm/sti: Depend on OF rather than selecting it 2018-04-05 14:04:17 +02:00
stm drm/stm: ltdc: fix warning in ltdc_crtc_update_clut() 2018-04-19 12:24:45 +02:00
sun4i drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
tdfx
tegra drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
tilcdc
tinydrm drm: Move simple_display_pipe prepare_fb helper into gem fb helpers 2018-04-24 13:57:22 +02:00
ttm
tve200 drm/tve200: Use simple_display_pipe prepare_fb helper 2018-04-24 13:58:06 +02:00
udl drm/udl: fix mode_valid's return type 2018-04-25 09:09:22 +02:00
vc4 drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
vgem
via
virtio drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
vmwgfx drm/vmwgfx: Remove no-op prepare/cleanup_fb callbacks 2018-04-24 13:57:11 +02:00
xen drm/xen-front: use simple display pipe prepare_fb helper 2018-04-24 14:02:53 +02:00
zte drm/zte: Stop consulting plane->crtc 2018-03-29 19:14:21 +03:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic_helper.c drm/atomic: Add sanity checks to drm_atomic_helper_async_commit() 2018-04-18 09:06:16 +02:00
drm_atomic.c Merge drm/drm-next into drm-intel-next-queued 2018-05-02 12:20:32 +03:00
drm_auth.c
drm_blend.c drm/blend: Add a generic alpha property 2018-04-16 21:17:29 +02:00
drm_bridge.c
drm_bufs.c
drm_cache.c
drm_color_mgmt.c kernel.h: Retain constant expression output for max()/min() 2018-04-05 14:17:16 -07:00
drm_connector.c
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c
drm_crtc_internal.h drm: Don't EXPORT drm_add/reset_display_info 2018-04-24 21:34:53 +02:00
drm_crtc.c drm: Use plane->state->fb over plane->fb 2018-03-29 19:14:21 +03:00
drm_debugfs_crc.c
drm_debugfs.c
drm_dma.c
drm_dp_aux_dev.c
drm_dp_dual_mode_helper.c drm/i915: Fix LSPCON TMDS output buffer enabling from low-power state 2018-04-18 16:33:14 +03:00
drm_dp_helper.c
drm_dp_mst_topology.c
drm_drv.c drm: Use srcu to protect drm_device.unplugged 2018-03-29 13:19:20 +03:00
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c drm-misc-next for v4.18: 2018-04-30 09:32:43 +10:00
drm_encoder_slave.c
drm_encoder.c
drm_fb_cma_helper.c
drm_fb_helper.c
drm_file.c
drm_flip_work.c
drm_fourcc.c
drm_framebuffer.c drm: Reshuffle getfb error returns 2018-03-30 17:54:27 +01:00
drm_gem_cma_helper.c
drm_gem_framebuffer_helper.c drm: Move simple_display_pipe prepare_fb helper into gem fb helpers 2018-04-24 13:57:22 +02:00
drm_gem.c
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c
drm_irq.c
drm_kms_helper_common.c
drm_lease.c
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c
drm_mode_config.c
drm_mode_object.c
drm_modes.c
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c
drm_panel_orientation_quirks.c drm: panel-orientation-quirks: Add quirk for Lenovo Ideapad Mixx 320 2018-04-24 13:43:45 +02:00
drm_panel.c
drm_pci.c
drm_plane_helper.c
drm_plane.c drm: Use plane->state->fb over plane->fb 2018-03-29 19:14:21 +03:00
drm_prime.c drm: add parameter explanation for some gem dmabuf_ops 2018-03-28 15:10:28 -05:00
drm_print.c
drm_probe_helper.c
drm_property.c
drm_rect.c
drm_scatter.c
drm_scdc_helper.c
drm_simple_kms_helper.c
drm_syncobj.c
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vblank.c
drm_vm.c
drm_vma_manager.c
Kconfig drm/xen-front: Add support for Xen PV display frontend 2018-04-03 14:41:48 +03:00
Makefile drm/xen-front: Add support for Xen PV display frontend 2018-04-03 14:41:48 +03:00