linux/drivers/gpu/drm/i915
Daniel Vetter 93a25a9e2d drm/i915: Disable full ppgtt by default
There are too many oustanding issues:

- Fence handling in the current code is broken. There's a patch series
  from me, but it's blocked on and extended review (which includes
  writing the testcases).

- IOMMU mapping handling is broken, we need to properly refcount it -
  currently it gets destroyed when the first vma is unbound, so way
  too early.

- There's a pending reset issue on snb. Since Mika's reset work and
  full ppgtt have been pulled in in separate branches and ended up
  intermittingly breaking each another it's unclear who's the exact
  culprit here.

- We still have persistent evidince of crazy recursion bugs through
  vma_unbind and ppgtt_relase, e.g.

  https://bugs.freedesktop.org/show_bug.cgi?id=73383

  This issue (and a few others meanwhile resolved) have blocked our
  performance measuring/tuning group since 3 months.

- Secure batch dispatching is broken. This is blocking Brad Volkin's
  command checker work since 3 months.

All these issues are confirmed to only happen when full ppgtt is
enabled, falling back to aliasing ppgtt resolves them. But even
aliasing ppgtt itself still has a regression:

- We currently unconditionally bind objects into the aliasing ppgtt,
  which means all priviledged objects like ringbuffers are visible to
  unpriviledged access again. On top of that this also breaks the
  command checker for aliasing ppgtt, since it can't hide the
  validated batch any more.

Furthermore topic/full-ppgtt has never been reviewed:

- Lifetime rules around vma unbinding/release are unclear, resulting
  into this awesome hack called ppgtt_release. Which seems to take the
  blame for most of the recursion fallout.

- Context/ring init works different on gpu reset than anywhere else.
  Such differeneces have in the past always lead to really hard to
  track down bugs.

- Aliasing ppgtt is treated in a bunch of places as a real address
  space, but it isn't - the real address space is always the global
  gtt in that case. This results in a bit a mess between contexts and
  ppgtt object, further complication the context/ppgtt/vma lifetime
  rules.

- We don't have any docs describing the overall concepts introduced
  with full ppgtt. A short, concise overview describing vmas and some
  of the strange bits around them (like the unbound vmas used by
  execbuf, or the new binding rules) really is needed.

Note that a lot of the post topic/full-ppgtt merge fallout has already
been addressed, this entire list here of 10 issues really only contains
the still outstanding issues.

Finally the 3.15 merge window is approaching and I think we need to
use the remaining time to ensure that our fallback option of using
aliasing ppgtt is in solid shape. Hence I think it's time to throw the
switch. While at it demote the helper from static inline status
because really.

Cc: Ben Widawsky <ben@bwidawsk.net>
Cc: Dave Airlie <airlied@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-07 22:36:47 +01:00
..
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_debugfs.c drm/i915: Replace a few for_each_pipe(i) by for_each_pipe(pipe) 2014-03-05 21:30:36 +01:00
i915_dma.c drm/i915: Make num_sprites a per-pipe value 2014-03-05 21:30:38 +01:00
i915_drv.c drm/i915: don't flood the logs about bdw semaphores 2014-03-05 21:30:29 +01:00
i915_drv.h drm/i915: Disable full ppgtt by default 2014-03-07 22:36:47 +01:00
i915_gem_context.c drm/i915: Fix i915_switch_context() argument name in kerneldoc 2014-03-05 21:30:41 +01:00
i915_gem_debug.c
i915_gem_dmabuf.c
i915_gem_evict.c drm/i915: Consolidate binding parameters into flags 2014-02-14 14:16:58 +01:00
i915_gem_execbuffer.c drm/i915: Only bind each object rather than for every execbuffer 2014-02-14 14:18:38 +01:00
i915_gem_gtt.c drm/i915: Disable full ppgtt by default 2014-03-07 22:36:47 +01:00
i915_gem_stolen.c drm/i915: Fix the offset issue for the stolen GEM objects 2014-01-28 09:04:42 +01:00
i915_gem_tiling.c drm/i915: Make pin count per VMA 2013-12-18 15:27:49 +01:00
i915_gem.c drm/i915: Make i915_gem_retire_requests_ring() static 2014-03-05 21:30:39 +01:00
i915_gpu_error.c drm/i915: Add suspend count to error state 2014-03-05 21:30:27 +01:00
i915_ioc32.c
i915_irq.c drm/i915: Replace a few for_each_pipe(i) by for_each_pipe(pipe) 2014-03-05 21:30:36 +01:00
i915_params.c drm/i915: Provide a command line option to disable display 2014-02-12 18:53:01 +01:00
i915_reg.h drm/i915: Unify CHICKEN_PIPESL_1 register definitions 2014-03-05 21:30:44 +01:00
i915_suspend.c drm/i915: Kill most of the FBC register save/restore 2014-01-25 21:17:03 +01:00
i915_sysfs.c drm/i915: Update rps interrupt limits 2014-02-07 10:26:17 +01:00
i915_trace_points.c
i915_trace.h drm/i915: Consolidate binding parameters into flags 2014-02-14 14:16:58 +01:00
i915_ums.c drm/i915: Only restore backlight combination mode reg for ums 2014-01-24 17:22:45 +01:00
intel_acpi.c
intel_bios.c drm/i915: Update VBT data structures to have MIPI block enhancements 2014-03-05 21:30:12 +01:00
intel_bios.h drm/i915: Update VBT data structures to have MIPI block enhancements 2014-03-05 21:30:12 +01:00
intel_crt.c drm/i915: Fix DDI port_clock for VGA output 2014-03-05 21:30:31 +01:00
intel_ddi.c drm/i915: Consolidate FUSE_STRAP in one set of defines 2014-02-12 18:52:52 +01:00
intel_display.c drm/i915: move modeset_update_power_wells earlier 2014-03-07 22:36:46 +01:00
intel_dp.c drm/i915: reverse dp link param selection, prefer fast over wide again 2014-03-05 21:30:42 +01:00
intel_drv.h drm/i915: use drm_i915_private everywhere in the power domain api 2014-03-05 21:30:07 +01:00
intel_dsi_cmd.c
intel_dsi_cmd.h
intel_dsi_pll.c
intel_dsi.c drm/i915: add unregister callback to connector 2014-02-14 11:24:47 +01:00
intel_dsi.h drm/i915: Parametrize the dphy and other spec specific parameters 2013-12-11 23:52:20 +01:00
intel_dvo.c drm/i915: add unregister callback to connector 2014-02-14 11:24:47 +01:00
intel_fbdev.c drm/i915: ignore bios output config if not all outputs are on 2014-03-05 21:30:06 +01:00
intel_hdmi.c drm/i915: add unregister callback to connector 2014-02-14 11:24:47 +01:00
intel_i2c.c
intel_lvds.c drm/i915: add unregister callback to connector 2014-02-14 11:24:47 +01:00
intel_modes.c
intel_opregion.c drm/i915: Eliminate lots of WARNs when there's no backlight present 2014-01-22 10:34:38 +01:00
intel_overlay.c drm/i915: tune down user-triggerable dmesg noise in the cursor/overlay code 2014-02-14 19:02:32 +01:00
intel_panel.c drm/i915: Initialize downclock mode in panel init 2014-02-12 18:53:05 +01:00
intel_pm.c drm/i915: fold in __intel_power_well_get/put functions 2014-03-07 22:36:46 +01:00
intel_ringbuffer.c drm/i915: We implement WaDisableAsyncFlipPerfMode:bdw 2014-03-05 21:30:34 +01:00
intel_ringbuffer.h drm/i915: Use hangcheck score to find guilty context 2014-02-04 11:57:24 +01:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: sdvo: add i2c sysfs symlink to the connector's directory 2014-02-14 11:25:14 +01:00
intel_sideband.c
intel_sprite.c drm/i915: Shuffle sprite register writes into a tighter group 2014-01-24 17:22:53 +01:00
intel_tv.c drm/i915: add unregister callback to connector 2014-02-14 11:24:47 +01:00
intel_uncore.c drm/i915: No need to put forcewake after a reset 2014-03-05 21:30:41 +01:00
Kconfig
Makefile drm/i915: move module parameters into a struct, in a new file 2014-01-27 17:16:45 +01:00