OpenCloudOS-Kernel/drivers/gpu/drm/i915
Changbin Du e502a2af4c drm/i915/gvt: Provide generic page_track infrastructure for write-protected page
This patch provide generic page_track infrastructure for write-protected
guest page. The old page_track logic gets rewrote and now stays in a new
standalone page_track.c. This page track infrastructure can be both used
by vGUC and GTT shadowing.

The important change is that it uses radix tree instead of hash table.
We don't have a predictable number of pages that will be tracked.

Here is some performance data (duration in us) of looking up a element:
Before: (aka. intel_vgpu_find_tracked_page)
 0.091 0.089 0.090 ... 0.093 0.091 0.087 ... 0.292 0.285 0.292 0.291
After: (aka. intel_vgpu_find_page_track)
 0.104 0.105 0.100 0.102 0.102 0.100 ... 0.101 0.101 0.105 0.105

The hash table has good performance at beginning, but turns bad with
more pages being tracked even no 3D applications are running. As
expected, radix tree has stable duration and very quick.

The overall benchmark (tested with Heaven Benchmark) marginally improved
since this is not the bottleneck. What we benefit more from this change
is scalability.

Signed-off-by: Changbin Du <changbin.du@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2018-03-06 13:19:20 +08:00
..
gvt drm/i915/gvt: Provide generic page_track infrastructure for write-protected page 2018-03-06 13:19:20 +08:00
selftests drm/i915: Update missing parts after the rename to i915_request 2018-02-23 16:34:32 +00: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: Avoid context dereference inside execlists_submission_tasklet 2017-12-19 23:04:45 +00:00
Makefile drm/i915/uc: Make GuC/HuC fw fetch and loading functions/file structure symmetric 2018-03-02 09:04:45 +00: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 drm/i915/lvds: Remove magic from PLL programming 2017-05-10 13:47:55 +03:00
dvo_ivch.c drm/i915/dvo: Remove incorrect kerneldoc markups 2018-02-14 12:04:31 +00:00
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
i915_cmd_parser.c drm/i915/cmdparser: Do not check past the cmd length. 2018-02-06 11:41:40 -08:00
i915_debugfs.c drm/i915: Wedged engine mask makes more sense in hex 2018-03-02 11:56:47 +00:00
i915_drv.c drm/i915/uc: Introduce intel_uc_suspend|resume 2018-03-02 23:11:12 +00:00
i915_drv.h drm/i915: Update DRIVER_DATE to 20180305 2018-03-05 11:56:15 +02:00
i915_gem.c drm/i915/uc: Introduce intel_uc_suspend|resume 2018-03-02 23:11:12 +00:00
i915_gem.h drm/i915/icl: Prepare for more rings 2018-03-01 14:13:47 +02:00
i915_gem_batch_pool.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_batch_pool.h
i915_gem_clflush.c drm: move read_domains and write_domain into i915 2018-02-16 14:12:48 +00: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 drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_context.h drm/i915: Update missing parts after the rename to i915_request 2018-02-23 16:34:32 +00:00
i915_gem_dmabuf.c drm: move read_domains and write_domain into i915 2018-02-16 14:12:48 +00:00
i915_gem_evict.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_execbuffer.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_fence_reg.c drm/i915: Use INTEL_GEN everywhere 2018-02-09 22:29:02 +00:00
i915_gem_fence_reg.h
i915_gem_gtt.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_gtt.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_internal.c drm: move read_domains and write_domain into i915 2018-02-16 14:12:48 +00: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: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_render_state.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_render_state.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_shrinker.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_stolen.c drm: move read_domains and write_domain into i915 2018-02-16 14:12:48 +00:00
i915_gem_tiling.c drm/i915: Refactor common list iteration over GGTT vma 2017-12-07 23:26:55 +00:00
i915_gem_timeline.c drm/i915: properly init lockdep class 2017-12-14 20:10:01 +02:00
i915_gem_timeline.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_gem_userptr.c drm: move read_domains and write_domain into i915 2018-02-16 14:12:48 +00:00
i915_gemfs.c drm/i915: Disable THP until we have a GPU read BW W/A 2017-11-30 10:11:49 +02:00
i915_gemfs.h drm/i915: introduce simple gemfs 2017-10-07 10:11:41 +01:00
i915_gpu_error.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_ioc32.c drm/i915: Clean up ancient doc comments for i915_ioc32.c 2018-02-15 16:22:21 +00:00
i915_irq.c drm/i915/icl: Interrupt handling 2018-03-01 14:13:54 +02:00
i915_memcpy.c drm/i915: Do not enable movntdqa optimization in hypervisor guest 2017-12-22 11:12:15 +00:00
i915_mm.c
i915_oa_bdw.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00: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: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00: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: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_cflgt2.h drm/i915/perf: add support for Coffeelake GT2 2017-09-18 19:46:36 +01:00
i915_oa_cflgt3.c drm/i915/perf: Fix compiler warning for string truncation 2018-02-08 11:16:48 +00:00
i915_oa_cflgt3.h drm/i915/perf: add support for Coffeelake GT3 2017-11-13 15:59:03 +00:00
i915_oa_chv.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_chv.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_cnl.c drm/i915/perf: Fix compiler warning for string truncation 2018-02-08 11:16:49 +00:00
i915_oa_cnl.h drm/i915/perf: enable perf support on CNL 2017-11-13 15:59:24 +00:00
i915_oa_glk.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00: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: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00: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: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00: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: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00: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: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00: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: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00: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: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_sklgt4.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_params.c drm/i915: Enable inject_load_failure only in DEBUG config 2018-02-02 14:19:05 +00:00
i915_params.h drm/i915/guc: Keep GuC log disabled by default 2018-01-19 20:35:32 +00:00
i915_pci.c drm/i915/icl: Add the ICL PCI IDs 2018-02-22 11:33:20 +02:00
i915_perf.c drm/i915/perf: fix perf stream opening lock 2018-03-01 14:32:37 +00:00
i915_pmu.c drm/i915/pmu: Fix building without CONFIG_PM 2018-02-07 17:07:45 +00:00
i915_pmu.h drm/i915/pmu: Fix sleep under atomic in RC6 readout 2018-02-07 13:37:34 +00:00
i915_pvinfo.h drm/i915: enable to read CSB and CSB write pointer from HWSP in GVT-g VM 2017-10-16 13:56:29 +03:00
i915_reg.h drm/i915/icl: Prepare for more rings 2018-03-01 14:13:47 +02:00
i915_request.c drm/i915: Update missing parts after the rename to i915_request 2018-02-23 16:34:32 +00:00
i915_request.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_selftest.h drm/i915/selftests: Reduce the volume of the timeout message 2017-11-10 11:31:58 +00:00
i915_suspend.c drm/i915: Move i915_gem_restore_fences to i915_gem_resume 2017-09-29 12:30:17 +01:00
i915_sw_fence.c drm/i915/fence: Separate timeout mechanism for awaiting on dma-fences 2018-01-15 10:29:18 +00:00
i915_sw_fence.h main drm pull for v4.13 2017-07-09 18:48:37 -07:00
i915_syncmap.c drm/i915: Fix kerneldoc parameter markup 2018-02-08 15:08:51 +00:00
i915_syncmap.h drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_sysfs.c drm/graphics pull request for v4.16-rc1 2018-02-01 17:48:47 -08:00
i915_trace.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_trace_points.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
i915_utils.h drm/i915: Move some utility functions to i915_util.h 2017-12-22 09:13:47 +00: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 to read CSB and CSB write pointer from HWSP in GVT-g VM 2017-10-16 13:56:29 +03:00
i915_vma.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
i915_vma.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
intel_acpi.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
intel_atomic.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_atomic_plane.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_audio.c drm/i915/audio: fix check for av_enc_map overflow 2018-02-15 16:29:13 +02:00
intel_bios.c drm/i915: Fix DSI panels with v1 MIPI sequences without a DEASSERT sequence v3 2018-02-14 11:38:12 +01:00
intel_bios.h
intel_breadcrumbs.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
intel_cdclk.c drm/i915/icl: add the main CDCLK functions 2018-02-13 10:16:04 -02:00
intel_color.c drm/i915: Don't mangle the CTM on pre-HSW 2018-02-28 15:17:12 +02:00
intel_crt.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_csr.c drm/i915/dmc: DMC 1.07 for Cannonlake 2018-01-04 16:29:12 -08:00
intel_ddi.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_device_info.c drm/i915/icl: Prepare for more rings 2018-03-01 14:13:47 +02:00
intel_device_info.h drm/i915/icl: Prepare for more rings 2018-03-01 14:13:47 +02:00
intel_display.c drm/i915: Check for I915_MODE_FLAG_INHERITED before drm_atomic_helper_check_modeset 2018-03-01 20:54:35 -05:00
intel_display.h drm/i915/psr: New power domain for AUX IO. 2018-02-27 12:05:43 -08:00
intel_dp.c drm/i915: Deduplicate the code to fill the aux message header 2018-03-02 18:26:52 +02: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/edp: Do not do link training fallback or prune modes on EDP 2018-02-01 07:32:54 -08:00
intel_dp_mst.c drm/i915: Nuke intel_digital_port->port 2017-11-09 20:06:14 +02:00
intel_dpio_phy.c drm: intel_dpio_phy: fix kernel-doc comments at nested struct 2018-02-19 12:19:04 +02:00
intel_dpll_mgr.c drm/i915/cnl: Simplify dco_fraction calculation. 2017-11-16 09:45:39 -08:00
intel_dpll_mgr.h drm/i915/cnl: Initialize PLLs 2017-06-12 09:42:18 -07:00
intel_drv.h Merge drm-next into drm-intel-next-queued (this time for real) 2018-03-01 11:14:24 +02:00
intel_dsi.c drm/i915: Provide a device level .mode_valid() hook 2018-01-29 21:55:07 +02:00
intel_dsi.h
intel_dsi_dcs_backlight.c drm/i915: Initialize 'data' in intel_dsi_dcs_backlight.c 2017-08-16 18:02:00 +03:00
intel_dsi_pll.c
intel_dsi_vbt.c drm/i915/bxt: use NULL for GPIO connection ID 2017-08-21 11:52:29 +03:00
intel_dvo.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_engine_cs.c drm/i915: Don't deref request->ctx inside unlocked print_request() 2018-02-28 14:16:42 +00:00
intel_fbc.c drm/i915/gen9, gen10: Disable FBC on planes with a misaligned Y-offset 2018-03-02 17:33:19 +02:00
intel_fbdev.c drm/i915: Only pin the fence for primary planes (and gen2/3) 2018-02-22 17:41:37 +02:00
intel_fifo_underrun.c drm/i915: Don't rmw PIPESTAT enable bits 2017-09-25 16:54:09 +03:00
intel_frontbuffer.c drm/i915/frontbuffer: Mark frontbuffer flush and invalidate with might_sleep() 2018-02-27 12:06:07 -08:00
intel_frontbuffer.h
intel_guc.c drm/i915/uc: Introduce intel_uc_suspend|resume 2018-03-02 23:11:12 +00:00
intel_guc.h drm/i915/uc: Introduce intel_uc_suspend|resume 2018-03-02 23:11:12 +00:00
intel_guc_ads.c drm/i915/guc : Decoupling ADS and logs from submission 2018-01-03 14:02:10 +00:00
intel_guc_ads.h drm/i915/guc : Decoupling ADS and logs from submission 2018-01-03 14:02:10 +00:00
intel_guc_ct.c drm/i915/guc: Assert ctch->vma is allocated 2017-11-06 13:57:37 +00:00
intel_guc_ct.h drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
intel_guc_fw.c drm/i915/uc: Make GuC/HuC fw fetch and loading functions/file structure symmetric 2018-03-02 09:04:45 +00:00
intel_guc_fw.h drm/i915/guc: Move firmware selection to init_early 2017-12-06 14:41:47 +00:00
intel_guc_fwif.h drm/i915/guc: Add support for reset engine using GuC commands 2017-11-02 08:42:11 +00:00
intel_guc_log.c drm/i915/guc: Don't try to create log runtime if there is no log 2018-02-01 12:36:50 +00:00
intel_guc_log.h drm/i915/guc: Update name and prototype of i915_guc_log_control 2018-01-24 19:44:06 +00:00
intel_guc_reg.h drm/i915/guc: Use consistent name for scratch register count 2017-11-24 20:47:39 +00:00
intel_guc_submission.c drm/i915/guc: Fill preempt context once at init time 2018-02-27 10:30:12 +00:00
intel_guc_submission.h drm/i915/guc: Move GuC workqueue allocations outside of the mutex 2017-12-14 08:06:54 +00:00
intel_gvt.c drm/i915/guc: Introduce USES_GUC_xxx helper macros 2017-12-06 14:41:49 +00: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: Add some newlines to intel_engine_dump() headers 2018-02-05 10:59:59 +00:00
intel_hdcp.c drm/i915: Reauthenticate HDCP on failure 2018-02-05 12:59:23 -05:00
intel_hdmi.c Add HDCP support to i915 drm driver. 2018-02-16 09:36:04 +10:00
intel_hotplug.c drm/i915/cnl: Add HPD support for Port F. 2018-01-30 10:24:20 -08:00
intel_huc.c drm/i915/huc: Mark firmware as failed on auth failure 2018-03-02 23:11:13 +00:00
intel_huc.h drm/i915/uc: Make GuC/HuC fw fetch and loading functions/file structure symmetric 2018-03-02 09:04:45 +00:00
intel_huc_fw.c drm/i915/uc: Make GuC/HuC fw fetch and loading functions/file structure symmetric 2018-03-02 09:04:45 +00:00
intel_huc_fw.h drm/i915/uc: Make GuC/HuC fw fetch and loading functions/file structure symmetric 2018-03-02 09:04:45 +00:00
intel_i2c.c Add HDCP support to i915 drm driver. 2018-02-16 09:36:04 +10:00
intel_lpe_audio.c drm/i915: Avoid leaking lpe audio platdev.data 2018-02-08 17:28:53 +00:00
intel_lrc.c drm/i915/execlists: Split spinlock from its irq disabling side-effect 2018-03-02 23:11:12 +00:00
intel_lrc.h drm/i915/execlists: Inhibit context save/restore for the fake preempt context 2018-01-24 09:40:15 +00:00
intel_lrc_reg.h drm/i915: Move LRC register offsets to a header file 2018-01-24 09:22:55 +00:00
intel_lspcon.c drm/i915: For HPD connected port use hpd_pin instead of port. 2018-01-30 10:24:19 -08:00
intel_lvds.c drm/i915/lvds: Fixup commentary 2018-02-14 12:04:33 +00:00
intel_mocs.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
intel_mocs.h drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
intel_modes.c drm/i915: remove redundant ELD connector type update 2018-01-19 11:58:48 +02:00
intel_opregion.c drm/i915: Move opregion definitions to dedicated intel_opregion.h 2017-12-22 09:19:48 +00:00
intel_opregion.h drm/i915: Move opregion definitions to dedicated intel_opregion.h 2017-12-22 09:19:48 +00:00
intel_overlay.c drm/i915: Rename drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
intel_panel.c drm/i915/panel: Split range scaling calculation for readiblity 2018-02-14 12:02:44 +00:00
intel_pipe_crc.c drm/i915: Make ips_enabled a property depending on whether IPS is enabled, v3. 2017-11-30 16:49:42 +01:00
intel_pm.c drm/i915/icl: Interrupt handling 2018-03-01 14:13:54 +02:00
intel_psr.c drm/i915/psr: Don't avoid PSR when PSR2 conditions are not met. 2018-02-27 15:54:17 -08: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 drm_i915_gem_request to i915_request 2018-02-21 20:57:22 +00:00
intel_ringbuffer.h drm/i915/icl: Prepare for more rings 2018-03-01 14:13:47 +02:00
intel_runtime_pm.c drm/i915/psr: New power domain for AUX IO. 2018-02-27 12:05:43 -08:00
intel_sdvo.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_sdvo_regs.h
intel_sideband.c drm/i915: Move rps.hw_lock to dev_priv and s/hw_lock/pcu_lock 2017-10-11 08:56:56 +01:00
intel_sprite.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_tv.c drm/i915/tv: Cleanup up obsolete comments 2018-02-14 12:02:39 +00:00
intel_uc.c drm/i915/uc: Introduce intel_uc_suspend|resume 2018-03-02 23:11:12 +00:00
intel_uc.h drm/i915/uc: Introduce intel_uc_suspend|resume 2018-03-02 23:11:12 +00:00
intel_uc_fw.c drm/i915: Fixup kerneldoc for intel_uc_fw_upload() 2018-02-14 13:28:41 +00:00
intel_uc_fw.h drm/i915/guc: Move firmware selection to init_early 2017-12-06 14:41:47 +00:00
intel_uncore.c Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_uncore.h Merge tag 'drm-intel-next-2018-02-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-03-01 14:07:22 +10:00
intel_vbt_defs.h drm/i915/bios: add DP max link rate to VBT child device struct 2018-02-07 12:32:14 -08:00