linux-stable/drivers/gpu/drm/i915
David Weinehall dff457d74e drm/i915: Speed up DMC firmware loading
Currently we're doing:

1. acquire lock
2. write word to hardware
3. release lock
4. repeat from 1

to load the DMC firmware. Due to the cost of acquiring/releasing a lock,
and the size of the DMC firmware, this slows down DMC loading a lot.

This patch simply acquires the lock, writes the entire firmware,
then releases the lock.  Testing shows resume speedups
in the order of 10ms on platforms with DMC firmware (GEN9+).

v2: Per feedback from Chris & Ville there's no need to do the whole
    forcewake dance, so lose that bit (Chris, Ville)

v3: Actually send the new version of the patch...

v4: Don't acquire the uncore lock. Disable preempt. (Chris)

Signed-off-by: David Weinehall <david.weinehall@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170905131050.11655-1-david.weinehall@linux.intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2017-09-25 14:48:44 +01:00
..
gvt drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
selftests drm/i915/selftests: Only touch archdata.iommu when it exists 2017-09-19 10:13:50 +01:00
dvo.h
dvo_ch7xxx.c drm/i915/dvo: fix debug logging on unknown DID 2017-06-01 15:53:03 +03:00
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
i915_cmd_parser.c drm/i915: Recreate vmapping even when the object is pinned 2017-08-29 10:39:08 +01:00
i915_debugfs.c drm/i915: Make execlist port count variable 2017-09-25 11:33:53 +03:00
i915_drv.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
i915_drv.h drm/i915: Make execlist port count variable 2017-09-25 11:33:53 +03:00
i915_gem.c drm/i915: Make own struct for execlist items 2017-09-25 11:33:23 +03:00
i915_gem.h
i915_gem_batch_pool.c drm/i915: Reinstate reservation_object zapping for batch_pool objects 2017-06-14 14:06:22 +01:00
i915_gem_batch_pool.h
i915_gem_clflush.c drm/i915: Split obj->cache_coherent to track r/w 2017-08-15 15:46:57 +01:00
i915_gem_clflush.h drm/i915: Force CPU synchronisation even if userspace requests ASYNC 2017-07-27 22:07:24 +02:00
i915_gem_context.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
i915_gem_context.h drm/i915: Replace execbuf vma ht with an idr 2017-08-18 11:59:02 +01:00
i915_gem_dmabuf.c
i915_gem_evict.c drm/i915: Convert execbuf to use struct-of-array packing for critical fields 2017-08-18 11:57:36 +01:00
i915_gem_execbuffer.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
i915_gem_fence_reg.c drm/i915: Add interface to reserve fence registers for vGPU 2017-09-04 16:34:59 +01:00
i915_gem_fence_reg.h
i915_gem_gtt.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
i915_gem_gtt.h drm/i915: Remove the "INDEX" suffix from PPAT marcos 2017-09-14 16:46:36 +03:00
i915_gem_internal.c drm/i915: Split obj->cache_coherent to track r/w 2017-08-15 15:46:57 +01:00
i915_gem_object.c drm/i915: Split obj->cache_coherent to track r/w 2017-08-15 15:46:57 +01:00
i915_gem_object.h drm/i915: Replace execbuf vma ht with an idr 2017-08-18 11:59:02 +01:00
i915_gem_render_state.c drm/i915: Perform an invalidate prior to executing golden renderstate 2017-08-08 14:53:50 +01:00
i915_gem_render_state.h
i915_gem_request.c drm/i915: Make i915_spin_request() static 2017-09-22 22:19:29 +01:00
i915_gem_request.h drm/i915: Make i915_spin_request() static 2017-09-22 22:19:29 +01:00
i915_gem_shrinker.c drm/i915/shrinker: Wrap need_resched() inside preempt-disable 2017-08-07 13:38:56 +03:00
i915_gem_stolen.c drm/i915: Split obj->cache_coherent to track r/w 2017-08-15 15:46:57 +01:00
i915_gem_tiling.c drm/i915: Fix logical inversion for gen4 quirking 2017-06-07 16:31:34 +03:00
i915_gem_timeline.c
i915_gem_timeline.h
i915_gem_userptr.c drm/i915: Mark the userptr invalidate workqueue as WQ_MEM_RECLAIM 2017-09-15 10:17:28 +01:00
i915_gpu_error.c drm/i915: Make execlist port count variable 2017-09-25 11:33:53 +03:00
i915_guc_reg.h
i915_guc_submission.c drm/i915: Make execlist port count variable 2017-09-25 11:33:53 +03:00
i915_ioc32.c
i915_irq.c drm/i915: Make own struct for execlist items 2017-09-25 11:33:23 +03:00
i915_memcpy.c
i915_mm.c
i915_oa_bdw.c drm/i915/perf: leave GDT_CHICKEN_BITS programming in configs 2017-08-03 18:18:44 +01:00
i915_oa_bdw.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_bxt.c drm/i915/perf: leave GDT_CHICKEN_BITS programming in configs 2017-08-03 18:18:44 +01:00
i915_oa_bxt.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_cflgt2.c drm/i915/perf: add support for Coffeelake GT2 2017-09-18 19:46:36 +01:00
i915_oa_cflgt2.h drm/i915/perf: add support for Coffeelake GT2 2017-09-18 19:46:36 +01:00
i915_oa_chv.c drm/i915/perf: leave GDT_CHICKEN_BITS programming in configs 2017-08-03 18:18:44 +01:00
i915_oa_chv.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_glk.c drm/i915/perf: leave GDT_CHICKEN_BITS programming in configs 2017-08-03 18:18:44 +01:00
i915_oa_glk.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_hsw.c drm/i915/perf: leave GDT_CHICKEN_BITS programming in configs 2017-08-03 18:18:44 +01:00
i915_oa_hsw.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_kblgt2.c drm/i915/perf: leave GDT_CHICKEN_BITS programming in configs 2017-08-03 18:18:44 +01:00
i915_oa_kblgt2.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_kblgt3.c drm/i915/perf: leave GDT_CHICKEN_BITS programming in configs 2017-08-03 18:18:44 +01:00
i915_oa_kblgt3.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_sklgt2.c drm/i915/perf: leave GDT_CHICKEN_BITS programming in configs 2017-08-03 18:18:44 +01:00
i915_oa_sklgt2.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_sklgt3.c drm/i915/perf: leave GDT_CHICKEN_BITS programming in configs 2017-08-03 18:18:44 +01:00
i915_oa_sklgt3.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_sklgt4.c drm/i915/perf: leave GDT_CHICKEN_BITS programming in configs 2017-08-03 18:18:44 +01:00
i915_oa_sklgt4.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_params.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
i915_params.h drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
i915_pci.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
i915_perf.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
i915_pvinfo.h drm/i915: Enable guest i915 full ppgtt functionality 2017-08-15 10:12:48 +08:00
i915_reg.h drm/i915/cnp: Display Wa #1179: WaHardHangonHotPlug 2017-09-19 16:04:56 -07:00
i915_selftest.h drm/i915: Don't use MI_STORE_DWORD_IMM on Sandybridge/vcs 2017-08-18 11:55:02 +01:00
i915_suspend.c
i915_sw_fence.c drm/i915/fence: Avoid del_timer_sync() from inside a timer 2017-09-19 13:06:21 +01:00
i915_sw_fence.h main drm pull for v4.13 2017-07-09 18:48:37 -07:00
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c drm/i915: add const to bin_attribute 2017-08-03 12:20:09 +02:00
i915_trace.h drm/i915: Use correct path to trace include 2017-09-04 09:45:44 +02:00
i915_trace_points.c
i915_utils.h drm/i915: Store a direct lookup from object handle to vma 2017-06-16 16:54:04 +01:00
i915_vgpu.c drm/i915: Enable guest i915 full ppgtt functionality 2017-08-15 10:12:48 +08:00
i915_vgpu.h drm/i915: Enable guest i915 full ppgtt functionality 2017-08-15 10:12:48 +08:00
i915_vma.c drm/i915: Replace execbuf vma ht with an idr 2017-08-18 11:59:02 +01:00
i915_vma.h drm/i915: Ignore duplicate VMA stored within the per-object handle LUT 2017-08-24 15:28:05 +01:00
intel_acpi.c ACPI: Switch to use generic guid_t in acpi_evaluate_dsm() 2017-06-07 12:20:49 +02:00
intel_atomic.c drm/i915/cnl: Fix Cannonlake scaler mode programing. 2017-06-12 09:45:55 -07:00
intel_atomic_plane.c drm/i915: Pass proper old/new states to intel_plane_atomic_check_with_state() 2017-09-01 16:48:24 +03:00
intel_audio.c drm/i915: always update ELD connector type after get modes 2017-09-20 10:36:34 +03:00
intel_bios.c drm/i915/bios: ignore HDMI on port A 2017-09-25 10:49:55 +03:00
intel_bios.h
intel_breadcrumbs.c drm/i915: Skip adding the request to the signal tree is complete 2017-06-08 12:33:08 +01:00
intel_cdclk.c drm/i915: Increase poll time for BDW FCLK_DONE 2017-09-12 12:19:57 +03:00
intel_color.c drm/i915: Make i9xx_load_ycbcr_conversion_matrix() static 2017-09-01 19:46:08 +03:00
intel_crt.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_csr.c drm/i915: Speed up DMC firmware loading 2017-09-25 14:48:44 +01:00
intel_ddi.c drm/i915: Shrink cnl_ddi_buf_trans 2017-09-19 19:10:37 +03:00
intel_device_info.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_display.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_dp.c drm/i915/dp: Remove useless debug about TPS3 support 2017-09-25 15:22:07 +03:00
intel_dp_aux_backlight.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_dp_link_training.c drm/i915: Explicit the connector name for DP link training result 2017-07-19 08:32:42 +02:00
intel_dp_mst.c drm/i915/mst: Print active mst links after update 2017-09-25 15:21:22 +03:00
intel_dpio_phy.c
intel_dpll_mgr.c drm/i915/cnl: Dump the right pll registers when dumping pipe config. 2017-08-11 11:41:45 -07:00
intel_dpll_mgr.h drm/i915/cnl: Initialize PLLs 2017-06-12 09:42:18 -07:00
intel_drv.h drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_dsi.c drm/i915/dsi: Replace MIPI command error message with debug message 2017-09-13 11:03:26 +03:00
intel_dsi.h
intel_dsi_dcs_backlight.c drm/i915: Initialize 'data' in intel_dsi_dcs_backlight.c 2017-08-15 10:48:21 +03:00
intel_dsi_pll.c
intel_dsi_vbt.c drm/i915/bxt: use NULL for GPIO connection ID 2017-08-18 15:57:51 +03:00
intel_dvo.c drm/i915: Constify states passed to enable/disable/etc. encoder hooks 2017-08-22 17:59:02 +03:00
intel_engine_cs.c drm/i915: Make execlist port count variable 2017-09-25 11:33:53 +03:00
intel_fbc.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_fbdev.c drm/i915: Wake up the device for the fbdev setup 2017-09-04 19:30:45 +03:00
intel_fifo_underrun.c drm/i915: Fix enum pipe vs. enum transcoder for the PCH transcoder 2017-09-01 19:46:56 +03:00
intel_frontbuffer.c
intel_frontbuffer.h
intel_guc_ct.c drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
intel_guc_ct.h drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
intel_guc_fwif.h drm/i915/guc: Remove WQ_WORKLOAD_SHIFT define 2017-09-13 10:36:48 +01:00
intel_guc_loader.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_guc_log.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_gvt.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_gvt.h drm/i915/gvt: Add gvt options sanitize function 2017-05-30 15:59:47 +03:00
intel_hangcheck.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_hdmi.c drm/i915: Constify states passed to enable/disable/etc. encoder hooks 2017-08-22 17:59:02 +03:00
intel_hotplug.c drm/i915: Introduce intel_hpd_pin function. 2017-08-11 11:53:47 -07:00
intel_huc.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_i2c.c drm/i915: Make i2c lock ops static 2017-09-01 19:46:33 +03:00
intel_lpe_audio.c drm/i915: Stop pretending to mask/unmask LPE audio interrupts 2017-05-26 11:51:18 +03:00
intel_lrc.c drm/i915/lrc: Skip no-op per-bb buffer on gen9 2017-09-25 10:21:45 +01:00
intel_lrc.h drm/i915/lrc: Clarify the format of the context image 2017-09-13 15:02:15 +01:00
intel_lspcon.c drm/i915/cnl: Fix LSPCON support. 2017-08-16 07:42:00 -07:00
intel_lvds.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_mocs.c drm/i915/cnl: Cannonlake has same MOCS table than Skylake. 2017-06-07 07:29:51 -07:00
intel_mocs.h
intel_modes.c drm/i915: always update ELD connector type after get modes 2017-09-20 10:36:34 +03:00
intel_opregion.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_overlay.c drm/i915: More surgically unbreak the modeset vs reset deadlock 2017-08-14 17:03:36 +02:00
intel_panel.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_pipe_crc.c drm/i915: Beef up of Beef up the IPS vs. CRC workaround 2017-08-28 16:12:47 +03:00
intel_pm.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_psr.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_renderstate.h
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c drm/i915/gen9: Send all components in VF state 2017-08-14 12:15:49 +03:00
intel_ringbuffer.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_ringbuffer.h drm/i915: Make execlist port count variable 2017-09-25 11:33:53 +03:00
intel_runtime_pm.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_sdvo.c drm/i915: Make i2c lock ops static 2017-09-01 19:46:33 +03:00
intel_sdvo_regs.h
intel_sideband.c
intel_sprite.c drm/i915: Pass the crtc state explicitly to intel_pipe_update_start/end() 2017-08-31 21:23:28 +03:00
intel_tv.c drm/i915: Use mul_u32_u32() for 32b x 32b -> 64b result 2017-09-13 13:27:20 +01:00
intel_uc.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_uc.h drm/i915/guc: Cleanup adding GuC work items 2017-09-18 11:18:27 +01:00
intel_uncore.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_uncore.h drm/i915: Disable mmio debugging during user access 2017-09-07 17:58:17 +01:00
intel_vbt_defs.h drm/i915/bios: amend edp block based on intel_vbt_decode 2017-08-28 11:04:24 +03:00
Kconfig drm/i915/fence: Avoid del_timer_sync() from inside a timer 2017-09-19 13:06:21 +01:00
Kconfig.debug drm/i915: Add SW_SYNC to our recommend testing Kconfig 2017-08-12 10:30:42 +01:00
Makefile drm/i915/perf: add support for Coffeelake GT2 2017-09-18 19:46:36 +01:00