linux_dsm_epyc7002/drivers/gpu/drm/i915/gvt
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
..
aperture_gm.c drm/i915: Add interface to reserve fence registers for vGPU 2017-09-04 16:34:59 +01:00
cfg_space.c drm/i915/gvt: Fix aperture read/write emulation when enable x-no-mmap=on 2018-02-06 11:41:27 -08:00
cmd_parser.c Linux 4.15-rc8 2018-01-18 09:32:15 +10:00
cmd_parser.h drm/i915/gvt: Factor out scan and shadow from workload dispatch 2017-08-10 10:26:06 +08:00
debug.h drm/i915/gvt: Make gvt_vgpu_err use pr_err 2017-11-16 11:48:34 +08:00
debugfs.c drm/i915/gvt: Add new debugfs tool mmio_diff 2017-11-16 11:48:32 +08:00
display.c drm/i915/gvt: cleanup usage for typed mmio reg vs. offset 2017-12-22 16:33:03 +08:00
display.h drm/i915/gvt: Add framebuffer decoder support 2017-12-04 11:24:33 +08:00
dmabuf.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
dmabuf.h drm/i915/gvt: Dmabuf support for GVT-g 2017-12-04 11:24:33 +08:00
edid.c drm/i915/gvt: cleanup usage for typed mmio reg vs. offset 2017-12-22 16:33:03 +08:00
edid.h
execlist.c drm/i915/gvt: refine intel_vgpu_submission_ops as per engine ops 2018-02-06 11:40:59 -08:00
execlist.h drm/i915/gvt: Make elsp_dwords in the right order 2017-11-16 11:46:07 +08:00
fb_decoder.c drm/i915/gvt: cleanup usage for typed mmio reg vs. offset 2017-12-22 16:33:03 +08:00
fb_decoder.h drm/i915/gvt: Add framebuffer decoder support 2017-12-04 11:24:33 +08:00
firmware.c drm/i915/gvt: Add mmio iterator intel_gvt_for_each_tracked_mmio() 2017-11-16 11:48:32 +08:00
gtt.c drm/i915/gvt: Provide generic page_track infrastructure for write-protected page 2018-03-06 13:19:20 +08:00
gtt.h drm/i915/gvt: Provide generic page_track infrastructure for write-protected page 2018-03-06 13:19:20 +08:00
gvt.c drm/i915/gvt: Provide generic page_track infrastructure for write-protected page 2018-03-06 13:19:20 +08:00
gvt.h drm/i915/gvt: Provide generic page_track infrastructure for write-protected page 2018-03-06 13:19:20 +08:00
handlers.c drm/i915/gvt: Factor out intel_vgpu_{get, put}_ppgtt_mm interface 2018-03-06 13:19:16 +08:00
hypercall.h drm/i915/gvt: Rename mpt api {set, unset}_wp_page to {enable, disable}_page_track 2018-03-06 13:19:19 +08:00
interrupt.c
interrupt.h
kvmgt.c drm/i915/gvt: Rename mpt api {set, unset}_wp_page to {enable, disable}_page_track 2018-03-06 13:19:19 +08:00
Makefile drm/i915/gvt: Provide generic page_track infrastructure for write-protected page 2018-03-06 13:19:20 +08:00
mmio_context.c drm/i915/gvt: Do not use I915_NUM_ENGINES to iterate over the mocs regs array 2018-02-01 07:31:07 -08:00
mmio_context.h drm/i915/gvt: Rename file render.{c, h} to mmio_context.{c, h} 2017-12-08 16:18:32 +08:00
mmio.c drm/i915/gvt: Rename ggtt related functions to be more specific 2018-03-06 13:19:16 +08:00
mmio.h drm/i915/gvt: cleanup usage for typed mmio reg vs. offset 2017-12-22 16:33:03 +08:00
mpt.h drm/i915/gvt: Don't extend page_track to mpt layer 2018-03-06 13:19:20 +08:00
opregion.c drm/i915/gvt: Use KVM r/w to access guest opregion 2018-02-06 11:41:34 -08:00
page_track.c drm/i915/gvt: Provide generic page_track infrastructure for write-protected page 2018-03-06 13:19:20 +08:00
page_track.h drm/i915/gvt: Provide generic page_track infrastructure for write-protected page 2018-03-06 13:19:20 +08:00
reg.h drm/i915/gvt: Use I915_GTT_PAGE_SIZE 2017-11-16 11:48:22 +08:00
sched_policy.c drm/i915/gvt: only reset execlist state of one engine during VM engine reset 2018-02-06 11:41:16 -08:00
sched_policy.h drm/i915/gvt: Kick scheduler when new workload queued 2017-12-04 11:24:35 +08:00
scheduler.c drm/i915/gvt: Factor out intel_vgpu_{get, put}_ppgtt_mm interface 2018-03-06 13:19:16 +08:00
scheduler.h Merge drm-next into drm-intel-next-queued (this time for real) 2018-03-01 11:14:24 +02:00
trace_points.c
trace.h drm/i915/gvt: Rework shadow page management code 2018-03-06 13:19:18 +08:00
vgpu.c drm/i915/gvt: Provide generic page_track infrastructure for write-protected page 2018-03-06 13:19:20 +08:00