linux_dsm_epyc7002/drivers/gpu/drm/i915
Tvrtko Ursulin 009367791f drm/i915: Record GT workarounds in a list
To enable later verification of GT workaround state at various stages of
driver lifetime, we record the list of applicable ones per platforms to a
list, from which they are also applied.

The added data structure is a simple array of register, mask and value
items, which is allocated on demand as workarounds are added to the list.

This is a temporary implementation which later in the series gets fused
with the existing per context workaround list handling. It is separated at
this stage since the following patch fixes a bug which needs to be as easy
to backport as possible.

Also, since in the following patch we will be adding a new class of
workarounds (per engine) which can be applied from interrupt context, we
straight away make the provision for safe read-modify-write cycle.

v2:
 * Change dev_priv to i915 along the init path. (Chris Wilson)
 * API rename. (Chris Wilson)

v3:
 * Remove explicit list size tracking in favour of growing the allocation
   in power of two chunks. (Chris Wilson)

v4:
 Chris Wilson:
 * Change wa_list_finish to early return.
 * Copy workarounds using the compiler for static checking.
 * Do not bother zeroing unused entries.
 * Re-order struct i915_wa_list.

v5:
 * kmalloc_array.
 * Whitespace cleanup.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20181203133319.10174-1-tvrtko.ursulin@linux.intel.com
(cherry picked from commit 25d140faaa)
Fixes: 59b449d5c8 ("drm/i915: Split out functions for different kinds of workarounds")
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
2018-12-05 13:50:11 +02:00
..
gvt Merge tag 'gvt-fixes-2018-11-26' of https://github.com/intel/gvt-linux into drm-intel-fixes 2018-11-26 11:19:48 +02:00
selftests
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c
i915_debugfs.c
i915_drv.c drm/i915: Record GT workarounds in a list 2018-12-05 13:50:11 +02:00
i915_drv.h drm/i915: Record GT workarounds in a list 2018-12-05 13:50:11 +02:00
i915_gem_batch_pool.c
i915_gem_batch_pool.h
i915_gem_clflush.c
i915_gem_clflush.h
i915_gem_context.c
i915_gem_context.h
i915_gem_dmabuf.c
i915_gem_evict.c
i915_gem_execbuffer.c drm/i915: Write GPU relocs harder with gen3 2018-11-21 09:32:08 +02:00
i915_gem_fence_reg.c
i915_gem_fence_reg.h
i915_gem_gtt.c
i915_gem_gtt.h
i915_gem_internal.c
i915_gem_object.c
i915_gem_object.h
i915_gem_render_state.c
i915_gem_render_state.h
i915_gem_shrinker.c
i915_gem_stolen.c
i915_gem_tiling.c
i915_gem_userptr.c
i915_gem.c drm/i915: Record GT workarounds in a list 2018-12-05 13:50:11 +02:00
i915_gem.h
i915_gemfs.c
i915_gemfs.h
i915_gpu_error.c
i915_gpu_error.h
i915_ioc32.c
i915_irq.c
i915_memcpy.c
i915_mm.c
i915_oa_bdw.c
i915_oa_bdw.h
i915_oa_bxt.c
i915_oa_bxt.h
i915_oa_cflgt2.c
i915_oa_cflgt2.h
i915_oa_cflgt3.c
i915_oa_cflgt3.h
i915_oa_chv.c
i915_oa_chv.h
i915_oa_cnl.c
i915_oa_cnl.h
i915_oa_glk.c
i915_oa_glk.h
i915_oa_hsw.c
i915_oa_hsw.h
i915_oa_icl.c
i915_oa_icl.h
i915_oa_kblgt2.c
i915_oa_kblgt2.h
i915_oa_kblgt3.c
i915_oa_kblgt3.h
i915_oa_sklgt2.c
i915_oa_sklgt2.h
i915_oa_sklgt3.c
i915_oa_sklgt3.h
i915_oa_sklgt4.c
i915_oa_sklgt4.h
i915_params.c
i915_params.h
i915_pci.c
i915_perf.c
i915_pmu.c
i915_pmu.h
i915_pvinfo.h
i915_query.c
i915_query.h
i915_reg.h
i915_request.c
i915_request.h
i915_scheduler.h
i915_selftest.h
i915_suspend.c
i915_sw_fence.c
i915_sw_fence.h
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c
i915_timeline.c
i915_timeline.h
i915_trace_points.c
i915_trace.h
i915_utils.h
i915_vgpu.c
i915_vgpu.h
i915_vma.c
i915_vma.h
icl_dsi.c
intel_acpi.c
intel_atomic_plane.c
intel_atomic.c
intel_audio.c
intel_bios.c
intel_bios.h
intel_breadcrumbs.c
intel_cdclk.c
intel_color.c
intel_crt.c
intel_csr.c
intel_ddi.c
intel_device_info.c
intel_device_info.h
intel_display.c drm/i915: Add rotation readout for plane initial config 2018-11-21 14:30:58 +02:00
intel_display.h
intel_dp_aux_backlight.c
intel_dp_link_training.c
intel_dp_mst.c
intel_dp.c
intel_dpio_phy.c
intel_dpll_mgr.c
intel_dpll_mgr.h
intel_drv.h drm/i915: Add rotation readout for plane initial config 2018-11-21 14:30:58 +02:00
intel_dsi_dcs_backlight.c
intel_dsi_vbt.c
intel_dsi.h
intel_dvo.c
intel_engine_cs.c
intel_fbc.c
intel_fbdev.c
intel_fifo_underrun.c
intel_frontbuffer.c
intel_frontbuffer.h
intel_gpu_commands.h
intel_guc_ads.c
intel_guc_ads.h
intel_guc_ct.c
intel_guc_ct.h
intel_guc_fw.c
intel_guc_fw.h
intel_guc_fwif.h
intel_guc_log.c
intel_guc_log.h
intel_guc_reg.h
intel_guc_submission.c
intel_guc_submission.h
intel_guc.c
intel_guc.h
intel_gvt.c
intel_gvt.h
intel_hangcheck.c
intel_hdcp.c
intel_hdmi.c
intel_hotplug.c
intel_huc_fw.c
intel_huc_fw.h
intel_huc.c
intel_huc.h
intel_i2c.c
intel_lpe_audio.c
intel_lrc_reg.h
intel_lrc.c
intel_lrc.h
intel_lspcon.c
intel_lvds.c
intel_mocs.c
intel_mocs.h
intel_modes.c
intel_opregion.c
intel_opregion.h
intel_overlay.c
intel_panel.c
intel_pipe_crc.c
intel_pm.c
intel_psr.c
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_renderstate.h
intel_ringbuffer.c
intel_ringbuffer.h
intel_runtime_pm.c
intel_sdvo_regs.h
intel_sdvo.c
intel_sideband.c
intel_sprite.c
intel_tv.c
intel_uc_fw.c
intel_uc_fw.h
intel_uc.c
intel_uc.h
intel_uncore.c
intel_uncore.h
intel_vbt_defs.h
intel_wopcm.c
intel_wopcm.h
intel_workarounds.c drm/i915: Record GT workarounds in a list 2018-12-05 13:50:11 +02:00
intel_workarounds.h drm/i915: Record GT workarounds in a list 2018-12-05 13:50:11 +02:00
Kconfig
Kconfig.debug
Makefile
vlv_dsi_pll.c
vlv_dsi.c