OpenCloudOS-Kernel/drivers/gpu/drm/i915
Changbin Du 590379aef2 drm/i915: make context status notifier head be per engine
GVTg has introduced the context status notifier to schedule the GVTg
workload. At that time, the notifier is bound to GVTg context only,
so GVTg is not aware of host workloads.

Now we are going to improve GVTg's guest workload scheduler policy,
and add Guc emulation support for new Gen graphics. Both these two
features require acknowledgment for all contexts running on hardware.
(But will not alter host workload.) So here try to make some change.

The change is simple:
  1. Move the context status notifier head from i915_gem_context to
     intel_engine_cs. Which means there is a notifier head per engine
     instead of per context. Execlist driver still call notifier for
     each context sched-in/out events of current engine.
  2. At GVTg side, it binds a notifier_block for each physical engine
     at GVTg initialization period. Then GVTg can hear all context
     status events.

In this patch, GVTg do nothing for host context event, but later
will add a function there. But in any case, the notifier callback is
a noop if this is no active vGPU.

Since intel_gvt_init() is called at early initialization stage and
require the status notifier head has been initiated, I initiate it in
intel_engine_setup().

v2: remove a redundant newline. (chris)

Fixes: 3c7ba6359d ("drm/i915: Introduce execlist context status change notification")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100232
Signed-off-by: Changbin Du <changbin.du@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Zhi Wang <zhi.a.wang@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/20170313024711.28591-1-changbin.du@intel.com
Acked-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
(cherry picked from commit 3fc03069bc)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170321144720.17020-1-chris@chris-wilson.co.uk
2017-03-21 16:51:47 +02:00
..
gvt drm/i915: make context status notifier head be per engine 2017-03-21 16:51:47 +02:00
Kconfig drm/i915/gvt/kvmgt: add vfio/mdev support to KVMGT 2016-12-16 16:55:26 +08:00
Kconfig.debug drm/i915: Enable swfence debugobject support for i915.ko 2016-12-05 20:49:17 +00:00
Makefile Less anger inducing pull request for 4.11 2017-02-23 18:58:18 -08:00
dvo.h
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
i915_cmd_parser.c drm/i915: Consolidate checks for memcpy-from-wc support 2017-01-06 16:02:07 +00:00
i915_debugfs.c drm/i915/huc: Add debugfs for HuC loading status check 2017-01-19 11:19:04 +02:00
i915_drv.c drm/i915: Always call i915_gem_reset_finish() following i915_gem_reset_prepare() 2017-03-14 15:07:38 +02:00
i915_drv.h drm/i915: Stop using RP_DOWN_EI on Baytrail 2017-03-14 12:29:43 +02:00
i915_gem.c drm/i915: Drop support for I915_EXEC_CONSTANTS_* execbuf parameters. 2017-03-14 12:28:25 +02:00
i915_gem.h drm/i915: introduce GEM_WARN_ON 2016-12-16 21:16:36 +00:00
i915_gem_batch_pool.c drm/i915: Move GEM activity tracking into a common struct reservation_object 2016-10-28 20:53:50 +01:00
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: make context status notifier head be per engine 2017-03-21 16:51:47 +02:00
i915_gem_context.h drm/i915: make context status notifier head be per engine 2017-03-21 16:51:47 +02:00
i915_gem_dmabuf.c Merge remote-tracking branch 'ovl/for-viro' into for-linus 2017-03-02 06:41:22 -05:00
i915_gem_evict.c drm/i915: use correct node for handling cache domain eviction 2017-03-13 17:30:09 +02:00
i915_gem_execbuffer.c drm/i915: Drop support for I915_EXEC_CONSTANTS_* execbuf parameters. 2017-03-14 12:28:25 +02:00
i915_gem_fence_reg.c drm/i915: Replace 4096 with PAGE_SIZE or I915_GTT_PAGE_SIZE 2017-01-10 20:54:32 +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: A hotfix for making aliasing PPGTT work for GVT-g 2017-02-16 11:59:12 +02:00
i915_gem_gtt.h drm/i915: Eliminate superfluous i915_ggtt_view_normal 2017-01-14 16:18:36 +00:00
i915_gem_internal.c Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
i915_gem_object.h drm/i915: Use pagecache write to prepopulate shmemfs from pwrite-ioctl 2017-03-09 10:46:07 +02: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 drm/i915: Reuse the active golden render state batch 2016-10-28 20:53:44 +01:00
i915_gem_request.c sched/headers: Prepare for the reduction of <linux/sched.h>'s signal API dependency 2017-03-02 08:42:37 +01:00
i915_gem_request.h drm/i915: Fix oopses in the overlay code due to i915_gem_active stuff 2017-01-03 11:41:17 +02:00
i915_gem_shrinker.c drm/i915: Avoid rcu_barrier() from reclaim paths (shrinker) 2017-03-21 16:50:19 +02: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: Reject set-tiling-ioctl with stride==0 and a tiling mode 2017-02-16 11:59:10 +02: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: Rename i915_gem_timeline.next_seqno to .seqno 2016-11-25 07:01:11 +00:00
i915_gem_userptr.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/mm.h> 2017-03-02 08:42:28 +01:00
i915_gpu_error.c drm/i915: Use __printf markup to silence compiler 2017-01-16 12:20:17 +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: Remove i915_vma_create from VMA API 2017-01-19 10:17:39 +00:00
i915_ioc32.c
i915_irq.c drm/i915: Stop using RP_DOWN_EI on Baytrail 2017-03-14 12:29:43 +02:00
i915_memcpy.c drm/i915: Mark the static key for movntqda as static 2016-08-17 12:36:07 +01:00
i915_mm.c drm/i915: Use remap_io_mapping() to prefault all PTE in a single pass 2016-08-19 17:13:36 +01:00
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: Use the precomputed value for whether to enable command parsing 2016-11-24 13:52:34 +00:00
i915_params.h drm/i915: Use the precomputed value for whether to enable command parsing 2016-11-24 13:52:34 +00:00
i915_pci.c drm/i915: actually drive the BDW reserved IDs 2017-01-04 14:40:46 -02:00
i915_perf.c drm/i915: Simplify releasing context reference 2016-12-18 16:18:53 +00:00
i915_pvinfo.h
i915_reg.h Less anger inducing pull request for 4.11 2017-02-23 18:58:18 -08: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 drm/i915: Flush the change in debugobject before reallocation 2017-01-16 12:21:19 +00: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/glk: Convert a few more IS_BROXTON() to IS_GEN9_LP() 2017-01-10 11:03:57 +02:00
i915_trace.h drm/i915: Extract reserving space in the GTT to a helper 2017-01-11 12:28:13 +00:00
i915_trace_points.c
i915_utils.h drm/i915: Move a few more utility macros to i915_utils.h 2017-01-05 21:02:04 +00:00
i915_vgpu.c drm/i915: Fix a typo in vgt_balloon_space() 2017-01-17 15:08:58 +00:00
i915_vgpu.h
i915_vma.c drm/i915: Remove the vma from the drm_mm if binding fails 2017-03-09 10:43:55 +02:00
i915_vma.h drm/i915: Remove i915_gem_object_to_ggtt() 2017-01-19 10:18:21 +00:00
intel_acpi.c
intel_atomic.c drm/i915: Move intel_atomic_get_shared_dpll_state() to intel_dpll_mgr.c 2017-01-02 11:31:53 +02:00
intel_atomic_plane.c drm/i915: Track pinned vma in intel_plane_state 2017-02-01 11:45:21 +02:00
intel_audio.c Less anger inducing pull request for 4.11 2017-02-23 18:58:18 -08:00
intel_bios.c drm/i915: Use range_overflows() 2017-01-06 16:02:11 +00: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 sched/headers: Prepare for new header dependencies before moving code to <uapi/linux/sched/types.h> 2017-03-02 08:42:27 +01:00
intel_color.c drm/i915: Assorted INTEL_INFO(dev) cleanups 2016-11-17 13:56:35 +00:00
intel_crt.c Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
intel_csr.c drm/i915/glk: Remove MODULE_FIRMWARE() tag from Geminilake's DMC 2017-03-15 12:33:57 +02:00
intel_ddi.c drm/i915: Rename intel_shared_dpll_config to intel_shared_dpll_state 2016-12-30 09:26:10 +02:00
intel_device_info.c drm/i915/glk: Convert a few more IS_BROXTON() to IS_GEN9_LP() 2017-01-10 11:03:57 +02:00
intel_display.c drm/i915: Do .init_clock_gating() earlier to avoid it clobbering watermarks 2017-03-16 09:58:22 +02:00
intel_dp.c drm/i915: Avoid spurious WARNs about the wrong pipe in the PPS code 2017-02-16 11:59:13 +02:00
intel_dp_aux_backlight.c
intel_dp_link_training.c drm/i915/skl: drop workarounds for A0 and B0 revisions 2016-09-26 12:08:22 +03:00
intel_dp_mst.c drm/dp: Store drm_device in MST topology manager 2017-01-25 06:01:48 +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: Add dpll entrypoint for dumping hw state 2016-12-30 09:32:34 +02:00
intel_drv.h sched/headers: Prepare for new header dependencies before moving code to <linux/sched/clock.h> 2017-03-02 08:42:27 +01:00
intel_dsi.c Linux 4.10-rc2 2017-01-04 11:35:18 +01:00
intel_dsi.h
intel_dsi_dcs_backlight.c
intel_dsi_panel_vbt.c drm/i915/dsi: Fix chv_exec_gpio disabling the GPIOs it is setting 2016-12-20 16:28:38 +02:00
intel_dsi_pll.c drm/i915: relax uncritical udelay_range() 2016-12-16 11:22:01 +02:00
intel_dvo.c drm/i915: Pass dev_priv to intel_setup_outputs() 2016-11-25 16:43:24 +02:00
intel_engine_cs.c drm/i915: make context status notifier head be per engine 2017-03-21 16:51:47 +02:00
intel_fbc.c drm/i915: Track pinned vma in intel_plane_state 2017-02-01 11:45:21 +02:00
intel_fbdev.c drm/i915/fbdev: Stop repeating tile configuration on stagnation 2017-03-09 10:43:17 +02:00
intel_fifo_underrun.c drm/i915: Always use intel_get_crtc_for_pipe() 2016-11-01 16:40:38 +02:00
intel_frontbuffer.c
intel_frontbuffer.h drm/i915: Move frontbuffer CS write tracking from ggtt vma to object 2016-11-18 11:15:59 +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/huc: Support HuC authentication 2017-01-19 11:19:07 +02: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/gvt: add enable_execlists check before enable gvt 2017-03-17 16:46:45 +08:00
intel_gvt.h drm/i915/gvt: clean up intel_gvt.h as interface for i915 core 2016-10-20 17:18:30 +08:00
intel_hangcheck.c drm/i915: Disable hangcheck when wedged 2016-11-22 17:42:17 +00:00
intel_hdmi.c drm/i915: Reject HDMI 12bpc if the sink doesn't indicate support 2017-03-14 18:02:39 +02:00
intel_hotplug.c drm/i915: Only enable hotplug interrupts if the display interrupts are enabled 2017-03-14 12:27:20 +02:00
intel_huc.c drm/i915/huc: Assert that HuC vma is placed in GuC accessible range 2017-01-20 19:59:57 +00:00
intel_i2c.c drm/i915: add some more "i" in platform names for consistency 2016-12-07 15:19:31 +02: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: make context status notifier head be per engine 2017-03-21 16:51:47 +02:00
intel_lrc.h drm/i915: Replace 4096 with PAGE_SIZE or I915_GTT_PAGE_SIZE 2017-01-10 20:54:32 +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: Intel panel detection cleanup 2016-12-13 17:25:26 +02:00
intel_mocs.c drm/i915/glk: Reuse broxton code for geminilake 2016-12-02 16:38:56 +02:00
intel_mocs.h drm/i915: Make various init functions take dev_priv 2016-12-01 18:01:15 +00:00
intel_modes.c drm: Remove superflous linux/fb.h includes 2016-08-12 10:41:39 +02:00
intel_opregion.c drm/i915: Fix not finding the VBT when it overlaps with OPREGION_ASLE_EXT 2017-02-16 11:59:14 +02:00
intel_overlay.c drm/i915: Eliminate superfluous i915_ggtt_view_normal 2017-01-14 16:18:36 +00:00
intel_panel.c drm/i915: clean up Hz to PWM for i965 2016-12-13 17:28:08 +02:00
intel_pipe_crc.c drm/i915: Avoid drm_atomic_state_put(NULL) on error paths 2017-01-18 13:47:22 +00:00
intel_pm.c drm/i915: Stop using RP_DOWN_EI on Baytrail 2017-03-14 12:29:43 +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.h
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_ringbuffer.c drm/i915: Restore context and pd for ringbuffer submission after reset 2017-02-16 11:59:11 +02:00
intel_ringbuffer.h drm/i915: make context status notifier head be per engine 2017-03-21 16:51:47 +02:00
intel_runtime_pm.c drm/i915/dsi: Do not clear DPOUNIT_CLOCK_GATE_DISABLE from vlv_init_display_clock_gating 2016-12-20 16:27:46 +02:00
intel_sdvo.c drm/i915: distinguish G33 and Pineview from each other 2016-12-07 23:28:33 +02:00
intel_sdvo_regs.h
intel_sideband.c
intel_sprite.c drm/i915: Nuke skl_update_plane debug message from the pipe update critical section 2017-03-13 17:30:26 +02:00
intel_tv.c drm/i915: Pass dev_priv to intel_setup_outputs() 2016-11-25 16:43:24 +02:00
intel_uc.c drm/i915/guc: Move GuC log related functions into dedicated file 2017-01-18 07:29:04 +00:00
intel_uc.h drm/i915/huc: Support HuC authentication 2017-01-19 11:19:07 +02:00
intel_uncore.c drm/i915: Fix forcewake active domain tracking 2017-03-13 17:30:54 +02:00
intel_vbt_defs.h drm/915: Parsing the missed out DTD fields from the VBT 2016-12-23 15:13:39 +02:00