linux/drivers/gpu/drm/i915
Peter Antoine 3bbaba0cea drm/i915: Added Programming of the MOCS
This change adds the programming of the MOCS registers to the gen 9+
platforms. The set of MOCS configuration entries introduced by this
patch is intended to be minimal but sufficient to cover the needs of
current userspace - i.e. a good set of defaults. It is expected to be
extended in the future to provide further default values or to allow
userspace to redefine its private MOCS tables based on its demand for
additional caching configurations. In this setup, userspace should
only utilize the first N entries, higher entries are reserved for
future use.

It creates a fixed register set that is programmed across the different
engines so that all engines have the same table. This is done as the
main RCS context only holds the registers for itself and the shared
L3 values. By trying to keep the registers consistent across the
different engines it should make the programming for the registers
consistent.

v2:
-'static const' for private data structures and style changes.(Matt Turner)
v3:
- Make the tables "slightly" more readable. (Damien Lespiau)
- Updated tables fix performance regression.
v4:
- Code formatting. (Chris Wilson)
- re-privatised mocs code. (Daniel Vetter)
v5:
- Changed the name of a function. (Chris Wilson)
v6:
- re-based
- Added Mesa table entry (skylake & broxton) (Francisco Jerez)
- Tidied up the readability defines (Francisco Jerez)
- NUMBER of entries defines wrong. (Jim Bish)
- Added comments to clear up the meaning of the tables (Jim Bish)

Signed-off-by: Peter Antoine <peter.antoine@intel.com>

v7 (Francisco Jerez):
- Don't write L3-specific MOCS_ESC/SCC values into the e/LLC control
  tables.  Prefix L3-specific defines consistently with L3_ and
  e/LLC-specific defines with LE_ to avoid this kind of confusion in
  the future.
- Change L3CC WT define back to RESERVED (matches my hardware
  documentation and the original patch, probably a misunderstanding
  of my own previous comment).
- Drop Android tables, define new minimal tables more suitable for the
  open source stack.
- Add comment that the MOCS tables are part of the kernel ABI.
- Move intel_logical_ring_begin() and _advance() calls one level down
  (Chris Wilson).
- Minor formatting and style fixes.
v8 (Francisco Jerez):
- Add table size sanity check to emit_mocs_control/l3cc_table() (Chris
  Wilson).
- Add comment about undefined entries being implicitly set to uncached
  for forwards compatibility.
v9 (Francisco Jerez):
- Minor style fixes.

Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Acked-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-07-14 17:13:14 +02:00
..
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c Fix resume from suspend on IBM X30 2015-06-15 12:21:01 +02:00
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c drm/i915: Update WaFlushCoherentL3CacheLinesAtContextSwitch 2015-07-06 14:37:39 +02:00
i915_debugfs.c drm/i915/skl: Updated the i915_ring_freq_table debugfs function 2015-07-13 10:37:49 +02:00
i915_dma.c drm/i915: use dev_priv for the FBC functions 2015-07-08 11:39:45 +02:00
i915_drv.c drm/i915: Report an error when i915.reset prevents a reset 2015-06-23 14:01:38 +02:00
i915_drv.h drm/i915: add FBC_IN_DBG_MASTER no_fbc_reason 2015-07-08 11:40:17 +02:00
i915_gem_batch_pool.c
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: Enable Resource Streamer state save/restore on MI_SET_CONTEXT 2015-07-06 10:26:05 +02:00
i915_gem_debug.c drm/i915: Implement inter-engine read-read optimisations 2015-05-21 15:11:42 +02:00
i915_gem_dmabuf.c
i915_gem_evict.c
i915_gem_execbuffer.c drm/i915: Expose I915_EXEC_RESOURCE_STREAMER flag and getparam 2015-07-06 10:36:46 +02:00
i915_gem_gtt.c drm/i915/gtt: Per ppgtt scratch page 2015-07-03 07:39:02 +02:00
i915_gem_gtt.h drm/i915/gtt: Move scratch_pd and scratch_pt into vm struct 2015-06-26 11:06:30 +02:00
i915_gem_render_state.c drm/i915: Update ring->dispatch_execbuffer() to take a request structure 2015-06-23 14:02:25 +02:00
i915_gem_render_state.h drm/i915: Update render_state_init() to take a request structure 2015-06-23 14:02:12 +02:00
i915_gem_shrinker.c
i915_gem_stolen.c drm/i915: add dev_priv->mm.stolen_lock 2015-07-06 14:33:39 +02:00
i915_gem_tiling.c
i915_gem_userptr.c drm/i915: Use uninterruptible mutex_lock for userptr bo creation 2015-05-20 11:26:03 +02:00
i915_gem.c drm/i915: Add origin to frontbuffer tracking flush 2015-07-08 17:29:08 +02:00
i915_gpu_error.c drm/i915: Implement inter-engine read-read optimisations 2015-05-21 15:11:42 +02:00
i915_ioc32.c drm/i915: Remove unused compat32 code 2015-07-14 15:28:00 +02:00
i915_irq.c drm/i915: Handle HPD when it has actually occurred 2015-07-08 17:18:18 +02:00
i915_params.c drm/i915: Nuke lvds downclock support 2015-06-24 10:27:26 +02:00
i915_reg.h drm/i915: Added Programming of the MOCS 2015-07-14 17:13:14 +02:00
i915_suspend.c drm/i915: use dev_priv for the FBC functions 2015-07-08 11:39:45 +02:00
i915_sysfs.c drm/i915/vlv: fix RC6 residency time calculation 2015-06-15 11:56:37 +02:00
i915_trace_points.c
i915_trace.h drm/i915: Update ring->sync_to() to take a request structure 2015-06-23 14:02:27 +02:00
i915_vgpu.c
i915_vgpu.h
intel_acpi.c
intel_atomic_plane.c drm/i915: Remove transitional references from intel_plane_atomic_check. 2015-06-22 14:28:29 +02:00
intel_atomic.c drm/i915: Do not update pfit state when toggling crtc enabled. 2015-07-14 14:00:40 +02:00
intel_audio.c drm/i915/audio: clarify HD audio documentation wrt modeset 2015-07-06 11:35:03 +02:00
intel_bios.c drm/i915: Nuke lvds downclock support 2015-06-24 10:27:26 +02:00
intel_bios.h
intel_crt.c drm/i915: Disable CRT port after pipe on PCH platforms 2015-05-21 23:23:16 +02:00
intel_csr.c Merge remote-tracking branch 'airlied/drm-next' into HEAD 2015-06-23 14:01:53 +02:00
intel_ddi.c drm/i915: set FDI translations to NULL on SKL 2015-07-06 11:33:30 +02:00
intel_display.c drm/i915: Remove plane_config from struct intel_crtc, v2. 2015-07-14 14:01:31 +02:00
intel_dp_mst.c
intel_dp.c drm/i915: Do not update pfit state when toggling crtc enabled. 2015-07-14 14:00:40 +02:00
intel_drv.h drm/i915: Remove plane_config from struct intel_crtc, v2. 2015-07-14 14:01:31 +02:00
intel_dsi_panel_vbt.c drm/i915: s/dpio_lock/sb_lock/ 2015-05-28 11:13:51 +02:00
intel_dsi_pll.c drm/i915: Changes required to enable DSI Video Mode on CHT 2015-07-03 07:39:02 +02:00
intel_dsi.c drm/i915: Apply OCD to VLV/CHV DPLL defines 2015-07-13 10:41:33 +02:00
intel_dsi.h
intel_dvo.c
intel_fbc.c drm/i915: move set_no_fbc_reason() call out of intel_fbc_find_crtc() 2015-07-08 11:40:33 +02:00
intel_fbdev.c drm/i915: Do not use plane_config in intel_fbdev.c 2015-07-14 14:00:47 +02:00
intel_fifo_underrun.c
intel_frontbuffer.c drm/i915: fix intel_frontbuffer_flip documentation 2015-07-09 19:17:53 +02:00
intel_hdmi.c drm/i915: Adjust BXT HDMI port clock limits 2015-07-13 11:10:05 +02:00
intel_hotplug.c drm/i915: storm detection documentation update 2015-07-13 11:22:35 +02:00
intel_i2c.c
intel_lrc.c drm/i915: Added Programming of the MOCS 2015-07-14 17:13:14 +02:00
intel_lrc.h drm/i915: Added Programming of the MOCS 2015-07-14 17:13:14 +02:00
intel_lvds.c drm/i915: Disable LVDS port after the pipe on PCH 2015-07-06 21:28:20 +02:00
intel_mocs.c drm/i915: Added Programming of the MOCS 2015-07-14 17:13:14 +02:00
intel_mocs.h drm/i915: Added Programming of the MOCS 2015-07-14 17:13:14 +02:00
intel_modes.c
intel_opregion.c drm/i915/opregion: start using extended didl 2015-07-06 11:37:41 +02:00
intel_overlay.c drm/i915: Update intel_ring_begin() to take a request structure 2015-06-23 14:02:29 +02:00
intel_panel.c
intel_pm.c drm/i915/skl: Restrict the ring frequency table programming to SKL 2015-07-14 11:35:47 +02:00
intel_psr.c drm/i915: PSR: Increase idle_frames 2015-07-09 21:52:35 +02:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_renderstate.h
intel_ringbuffer.c drm/i915: Enable resource streamer bits on MI_BATCH_BUFFER_START 2015-07-06 10:25:57 +02:00
intel_ringbuffer.h drm/i915: Enable resource streamer bits on MI_BATCH_BUFFER_START 2015-07-06 10:25:57 +02:00
intel_runtime_pm.c drm/i915: Refactor VLV display power well init/deinit 2015-07-13 10:42:51 +02:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: Disable SDVO port after the pipe on PCH platforms 2015-05-21 23:22:01 +02:00
intel_sideband.c drm/i915: s/dpio_lock/sb_lock/ 2015-05-28 11:13:51 +02:00
intel_sprite.c drm/i915: Use the memory latency based WM computation on VLV too 2015-06-29 10:56:03 +02:00
intel_tv.c
intel_uncore.c drm/i915: Report an error when i915.reset prevents a reset 2015-06-23 14:01:38 +02:00
Kconfig drm/i915: Remove KMS Kconfig option 2015-06-22 16:16:35 +02:00
Makefile drm/i915: Added Programming of the MOCS 2015-07-14 17:13:14 +02:00