linux/drivers/gpu/drm/i915
Chris Wilson 31de73501a drm/i915/scheduler: emulate a scheduler for guc
This emulates execlists on top of the GuC in order to defer submission of
requests to the hardware. This deferral allows time for high priority
requests to gazump their way to the head of the queue, however it nerfs
the GuC by converting it back into a simple execlist (where the CPU has
to wake up after every request to feed new commands into the GuC).

v2: Drop hack status - though iirc there is still a lockdep inversion
between fence and engine->timeline->lock (which is impossible as the
nesting only occurs on different fences - hopefully just requires some
judicious lockdep annotation)
v3: Apply lockdep nesting to enabling signaling on the request, using
the pattern we already have in __i915_gem_request_submit();
v4: Replaying requests after a hang also now needs the timeline
spinlock, to disable the interrupts at least
v5: Hold wq lock for completeness, and emit a tracepoint for enabling signal
v6: Reorder interrupt checking for a happier gcc.
v7: Only signal the tasklet after a user-interrupt if using guc scheduling
v8: Restore lost update of rq through the i915_guc_irq_handler (Tvrtko)
v9: Avoid re-initialising the engine->irq_tasklet from inside a reset
v10: Hook up the execlists-style tracepoints
v11: Clear the execlists irq_posted bit after taking over the interrupt/tasklet

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170316125619.6856-1-chris@chris-wilson.co.uk
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
2017-03-16 14:45:07 +00:00
..
gvt Merge airlied/drm-next into drm-misc-next 2017-02-27 09:30:11 +01:00
selftests drm/i915/selftests: Catch error from mock_file() 2017-03-13 13:21:18 +00:00
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c drm/i915/cmdparser: Limit clflush to active cachelines 2017-03-10 13:02:34 +00:00
i915_debugfs.c drm/i915: Convert debugfs to use generic residency calculator 2017-03-16 12:28:28 +02:00
i915_drv.c drm/i915/guc: Extract param logic form guc_init_fw() 2017-03-15 14:26:30 +02:00
i915_drv.h drm/i915: Use ktime to calculate rc0 residency 2017-03-16 12:28:28 +02:00
i915_gem_batch_pool.c drm/i915: Use reservation_object_lock() 2017-02-21 12:48:51 +00:00
i915_gem_batch_pool.h
i915_gem_clflush.c drm/i915: Remove 'retire' parameter from intel_fb_obj_flush 2017-02-22 12:12:17 +00:00
i915_gem_clflush.h drm/i915: Perform object clflushing asynchronously 2017-02-22 12:12:15 +00:00
i915_gem_context.c drm/i915: Reduce context alignment 2017-02-27 16:01:47 +00:00
i915_gem_context.h drm/i915: Reduce context alignment 2017-02-27 16:01:47 +00:00
i915_gem_dmabuf.c Merge tag 'drm-intel-next-2017-03-06' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-03-08 12:41:47 +10:00
i915_gem_evict.c drm/i915: use correct node for handling cache domain eviction 2017-03-09 08:42:35 +00:00
i915_gem_execbuffer.c drm/i915: Drop spinlocks around adding to the client request list 2017-03-02 22:33:41 +00:00
i915_gem_fence_reg.c drm/i915: Take rpm wakelock for releasing the fence on unbind 2017-03-06 14:38:18 +00:00
i915_gem_fence_reg.h drm/i915: Replace 4096 with PAGE_SIZE or I915_GTT_PAGE_SIZE 2017-01-10 20:54:32 +00:00
i915_gem_gtt.c drm/i915/gtt: Setup vm callbacks late 2017-03-03 16:46:44 +02:00
i915_gem_gtt.h drm/i915: Avoid using word legacy with ppgtt 2017-03-03 16:46:23 +02:00
i915_gem_internal.c Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
i915_gem_object.h drm/i915: Purge i915_gem_object_is_dead() 2017-03-08 20:42:18 +00:00
i915_gem_render_state.c scripts/spelling.txt: add "aligment" pattern and fix typo instances 2017-02-27 18:43:46 -08:00
i915_gem_render_state.h
i915_gem_request.c Merge tag 'drm-intel-next-2017-03-06' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-03-08 12:41:47 +10:00
i915_gem_request.h drm/i915: Check for an invalid seqno before __i915_gem_request_started 2017-03-08 20:47:07 +00:00
i915_gem_shrinker.c drm/i915: Avoid rcu_barrier() from reclaim paths (shrinker) 2017-03-14 14:19:51 +00:00
i915_gem_stolen.c drm/i915/gvt: Disable access to stolen memory as a guest 2017-02-16 11:59:13 +02:00
i915_gem_tiling.c drm/i915: Prevent concurrent tiling/framebuffer modifications 2017-03-01 17:57:17 +00:00
i915_gem_timeline.c drm/i915: Assert all timeline requests are gone before fini 2017-01-05 15:34:40 +00:00
i915_gem_timeline.h drm/i915: Keep a global seqno per-engine 2017-02-23 14:49:26 +00:00
i915_gem_userptr.c drm/i915/userptr: Reinvent GGTT self-faulting protection 2017-03-16 10:21:25 +00:00
i915_gem.c drm/i915/guc: Simplify intel_guc_init_hw() 2017-03-15 14:26:30 +02:00
i915_gem.h drm/i915: Rename conditional GEM execution macros 2017-02-10 21:43:43 +00:00
i915_gpu_error.c drm/i915: Split breadcrumbs spinlock into two 2017-03-03 20:19:13 +00:00
i915_guc_reg.h drm/i915/huc: Add HuC fw loading support 2017-01-19 11:18:55 +02:00
i915_guc_submission.c drm/i915/scheduler: emulate a scheduler for guc 2017-03-16 14:45:07 +00:00
i915_ioc32.c
i915_irq.c drm/i915/scheduler: emulate a scheduler for guc 2017-03-16 14:45:07 +00:00
i915_memcpy.c
i915_mm.c
i915_oa_hsw.c drm/i915: Add more Haswell OA metric sets 2016-11-22 14:40:00 +01:00
i915_oa_hsw.h drm/i915: advertise available metrics via sysfs 2016-11-22 14:38:51 +01:00
i915_params.c drm/i915/uc: Add params for specifying firmware 2017-03-15 14:26:30 +02:00
i915_params.h drm/i915/uc: Add params for specifying firmware 2017-03-15 14:26:30 +02:00
i915_pci.c drm/i915: Provide a hook for selftests 2017-02-13 20:45:21 +00:00
i915_perf.c drm/i915: s/assert_spin_locked/lockdep_assert_held/ 2017-03-02 15:18:55 +00:00
i915_pvinfo.h
i915_reg.h drm/i915: Use ktime to calculate rc0 residency 2017-03-16 12:28:28 +02:00
i915_selftest.h drm/i915: Use fault-injection to force the shrinker to run in live GTT tests 2017-02-13 20:46:32 +00:00
i915_suspend.c drm/i915: Make i915_save/restore_state and intel_i2c_reset take dev_priv 2016-12-01 18:01:23 +00:00
i915_sw_fence.c gpu: drm: drivers: Convert printk(KERN_<LEVEL> to pr_<level> 2017-03-01 09:44:11 +01:00
i915_sw_fence.h drm/i915: Hold a reference on the request for its fence chain 2016-12-05 11:00:32 +02:00
i915_sysfs.c drm/i915: Return residency as microseconds 2017-03-16 12:28:28 +02:00
i915_trace_points.c
i915_trace.h drm/i915: Add FIFO underrun tracepoints 2017-03-03 16:50:11 +02:00
i915_utils.h drm/i915/guc: Use formalized struct definition for ads object 2017-03-15 15:43:43 +00:00
i915_vgpu.c drm/i915: Remove i915_address_space.start 2017-02-15 10:07:32 +00:00
i915_vgpu.h
i915_vma.c drm/i915: Remove the vma from the drm_mm if binding fails 2017-02-27 13:10:12 +00:00
i915_vma.h drm/i915: Exercise i915_vma_pin/i915_vma_insert 2017-02-13 20:46:41 +00:00
intel_acpi.c
intel_atomic_plane.c drm/i915: Add plane update/disable tracepoints 2017-03-03 16:50:10 +02:00
intel_atomic.c drm/i915: Skip useless watermark/FIFO related work on VLV/CHV when not needed 2017-03-03 16:50:10 +02:00
intel_audio.c Merge tag 'drm-intel-next-2017-03-06' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-03-08 12:41:47 +10:00
intel_bios.c drm/i915/vbt: split out defaults that are set when there is no VBT 2017-03-14 10:49:13 +02:00
intel_bios.h drm/i915/dsi: Fix swapping of MIPI_SEQ_DEASSERT_RESET / MIPI_SEQ_ASSERT_RESET 2016-12-20 16:28:25 +02:00
intel_breadcrumbs.c drm/i915/breadcrumbs: Tweak commentary 2017-03-16 08:49:28 +00:00
intel_cdclk.c drm/i915: Use new atomic iterator macros in cdclk 2017-03-13 12:06:40 +01:00
intel_color.c drm/i915/glk: Improve rounding caused by pre-CSC gamma tables 2017-03-14 16:07:00 +02:00
intel_crt.c drm/i915: Store encoder power domain in struct intel_encoder 2017-02-27 09:07:51 +02:00
intel_csr.c drm/i915/: DMC 1.04 for Geminilake 2017-03-07 09:55:46 +02:00
intel_ddi.c drm/i915: Use new atomic iterator macros in ddi 2017-03-13 12:06:40 +01:00
intel_device_info.c drm/i915: use BUILD_BUG_ON to ensure platform name has been set up 2017-03-01 13:11:24 +02:00
intel_display.c drm/i915: Use I915_READ_FW for plane updates 2017-03-13 21:15:06 +02:00
intel_dp_aux_backlight.c
intel_dp_link_training.c Revert "drm/i915: Implement Link Rate fallback on Link training failure" 2017-03-02 09:17:16 +01:00
intel_dp_mst.c drm/i915: Remove duplicate DDI enabling logic from MST path 2017-03-03 12:32:37 +02:00
intel_dp.c Revert "drm/i915: Implement Link Rate fallback on Link training failure" 2017-03-02 09:17:16 +01:00
intel_dpio_phy.c drm/i915: Only poll DW3_A when init DDI PHY for ports B and C. 2016-12-02 12:16:25 -08:00
intel_dpll_mgr.c Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
intel_dpll_mgr.h drm/i915: Remove unused function intel_ddi_get_link_dpll() 2017-02-10 11:40:27 +02:00
intel_drv.h drm/i915: Inline gen6_sanitize_rps_pm_mask() 2017-03-13 14:24:58 +00:00
intel_dsi_dcs_backlight.c
intel_dsi_pll.c drm/i915/glk: Validate only DSI PORT A PLL divider 2017-02-28 11:54:52 +02:00
intel_dsi_vbt.c drm/i915/dsi: rename intel_dsi_panel_vbt.c to intel_dsi_vbt.c 2017-03-07 15:18:24 +02:00
intel_dsi.c drm/i915/dsi: rename intel_dsi_pre_disable to intel_dsi_disable 2017-03-07 15:18:13 +02:00
intel_dsi.h drm/i915/dsi: arrange intel_dsi.h according to relevant files 2017-03-07 15:18:43 +02:00
intel_dvo.c drm/i915: Store encoder power domain in struct intel_encoder 2017-02-27 09:07:51 +02:00
intel_engine_cs.c drm/i915: Replace irq_seqno_barrier on hws write with a clflush 2017-03-16 14:26:28 +00:00
intel_fbc.c drm/i915: Use new atomic iterator macros in fbc 2017-03-13 12:06:40 +01:00
intel_fbdev.c drm/i915: Plumb drm_framebuffer into more places 2017-03-08 16:35:56 +02:00
intel_fifo_underrun.c drm/i915: Add FIFO underrun tracepoints 2017-03-03 16:50:11 +02:00
intel_frontbuffer.c drm/i915: Remove 'retire' parameter from intel_fb_obj_flush 2017-02-22 12:12:17 +00:00
intel_frontbuffer.h drm/i915: Remove 'retire' parameter from intel_fb_obj_flush 2017-02-22 12:12:17 +00:00
intel_guc_fwif.h drm/i915/huc: Support HuC authentication 2017-01-19 11:19:07 +02:00
intel_guc_loader.c drm/i915/uc: Rename intel_uc_fw.fw to .type 2017-03-16 08:54:04 +00:00
intel_guc_log.c drm/i915/guc: Move GuC log related functions into dedicated file 2017-01-18 07:29:04 +00:00
intel_gvt.c drm/i915: make intel_gvt_init() later instead of too early 2017-02-07 17:21:06 +08:00
intel_gvt.h
intel_hangcheck.c drm/i915: Add initial selftests for hang detection and resets 2017-02-13 20:46:53 +00:00
intel_hdmi.c drm/i915: Reject HDMI 12bpc if the sink doesn't indicate support 2017-03-13 18:01:55 +02:00
intel_hotplug.c drm/i915: use drm_connector_list_iter in intel_hotplug.c 2017-03-08 23:42:40 +01:00
intel_huc.c drm/i915/uc: Rename intel_uc_fw.fw to .type 2017-03-16 08:54:04 +00:00
intel_i2c.c drm/i915: Introduce IS_GEN9_BC for Skylake and Kabylake. 2017-01-24 10:29:00 -08:00
intel_lpe_audio.c drm/i915: Enable VLV audio chicken bit for LPE audio 2017-02-03 16:19:08 +01:00
intel_lrc.c drm/i915/scheduler: emulate a scheduler for guc 2017-03-16 14:45:07 +00:00
intel_lrc.h drm/i915: Generalise wait for execlists to be idle 2017-03-03 13:08:15 +00:00
intel_lspcon.c drm/i915/lspcon: Fix resume time initialization due to unasserted HPD 2017-02-16 11:59:10 +02:00
intel_lvds.c drm/i915: Store encoder power domain in struct intel_encoder 2017-02-27 09:07:51 +02:00
intel_mocs.c drm/i915: Emit to ringbuffer directly 2017-02-14 14:30:46 +00:00
intel_mocs.h drm/i915: Make various init functions take dev_priv 2016-12-01 18:01:15 +00:00
intel_modes.c
intel_opregion.c Revert "drm/i915: Ignore panel type from OpRegion on SKL" 2017-03-14 12:21:51 +02:00
intel_overlay.c drm/i915: Emit to ringbuffer directly 2017-02-14 14:30:46 +00:00
intel_panel.c drm/i915: Start moving the cdclk stuff into a distinct state structure 2017-02-08 18:07:10 +02:00
intel_pipe_crc.c Merge tag 'drm-intel-next-2017-03-06' of git://anongit.freedesktop.org/git/drm-intel into drm-next 2017-03-08 12:41:47 +10:00
intel_pm.c drm/i915: Use coarse grained residency counter with byt 2017-03-16 12:28:28 +02:00
intel_psr.c drm/i915/psr: Fix compiler warnings for hsw_psr_disable() 2017-01-18 10:25:01 +00: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: Reduce context alignment 2017-02-27 16:01:47 +00:00
intel_ringbuffer.h drm/i915: Replace irq_seqno_barrier on hws write with a clflush 2017-03-16 14:26:28 +00:00
intel_runtime_pm.c drm/i915: Only enable DDI IO power domains after enabling DPLL 2017-02-27 09:09:14 +02:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: Store encoder power domain in struct intel_encoder 2017-02-27 09:07:51 +02:00
intel_sideband.c drm/i915: Distinguish between timeout and error in sideband transactions 2017-02-27 17:22:19 +00:00
intel_sprite.c drm/i915: Use I915_READ_FW for plane updates 2017-03-13 21:15:06 +02:00
intel_tv.c drm/i915: Store encoder power domain in struct intel_encoder 2017-02-27 09:07:51 +02:00
intel_uc.c drm/i915: Make intel_uc_sanitize_options() more robust 2017-03-16 08:57:46 +00:00
intel_uc.h drm/i915/uc: Rename intel_uc_fw.fw to .type 2017-03-16 08:54:04 +00:00
intel_uncore.c Merge tag 'topic/designware-baytrail-2017-03-02' of git://anongit.freedesktop.org/git/drm-intel into drm-intel-next-queued 2017-03-13 09:26:06 +01:00
intel_vbt_defs.h drm/915: Parsing the missed out DTD fields from the VBT 2016-12-23 15:13:39 +02:00
Kconfig Merge tag 'topic/designware-baytrail-2017-03-02' of git://anongit.freedesktop.org/git/drm-intel into drm-intel-next-queued 2017-03-13 09:26:06 +01:00
Kconfig.debug drm/i915/tracepoints: Add request submit and execute tracepoints 2017-02-21 13:18:14 +00:00
Makefile Merge remote-tracking branch 'airlied/drm-next' into drm-intel-next-queued 2017-03-08 10:54:45 +01:00