linux_dsm_epyc7002/drivers/gpu/drm/i915/gvt
Xiong Zhang 4f15665ccb drm/i915: Add ppgtt to GVT GEM context
Currently the guest couldn't boot up under GVT-g environment as the
following call trace exists:
[  272.504762] BUG: unable to handle kernel NULL pointer dereference at 0000000000000100
[  272.504834] Call Trace:
[  272.504852]  execlists_context_pin+0x2b2/0x520 [i915]
[  272.504869]  intel_gvt_scan_and_shadow_workload+0x50/0x4d0 [i915]
[  272.504887]  intel_vgpu_create_workload+0x3e2/0x570 [i915]
[  272.504901]  intel_vgpu_submit_execlist+0xc0/0x2a0 [i915]
[  272.504916]  elsp_mmio_write+0xc7/0x130 [i915]
[  272.504930]  intel_vgpu_mmio_reg_rw+0x24a/0x4c0 [i915]
[  272.504944]  intel_vgpu_emulate_mmio_write+0xac/0x240 [i915]
[  272.504947]  intel_vgpu_rw+0x22d/0x270 [kvmgt]
[  272.504949]  intel_vgpu_write+0x164/0x1f0 [kvmgt]

GVT GEM context is created by i915_gem_context_create_gvt() which
doesn't allocate ppgtt. So GVT GEM context structure doesn't have
a valid i915_hw_ppgtt.

This patch create ppgtt table at GVT GEM context creation, then assign
shadow ppgtt's root table address to this ppgtt when shadow ppgtt will
be used on GPU. So GVT GEM context has valid ppgtt address. But note
that this ppgtt only contain valid ppgtt root table address, the table
entry in this ppgtt structure are invalid.

Fixes:4a3d3f6785be("drm/i915: Match code to comment and enforce ppgtt for execlists")

Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.com>
Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/1539841231-3157-1-git-send-email-xiong.y.zhang@intel.com
2018-10-19 12:23:45 +01:00
..
aperture_gm.c drm/i915/gvt: Off by one in intel_vgpu_write_fence() 2018-08-14 15:26:59 +08:00
cfg_space.c drm/i915/gvt: Fix function comment doc errors 2018-08-07 10:39:53 +08:00
cmd_parser.c Merge tag 'drm-intel-next-2018-09-06-2' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-09-11 11:53:12 +10:00
cmd_parser.h
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: scan non-privileged batch buffer for debug purpose 2018-04-23 13:09:34 +08:00
display.c Merge tag 'drm-intel-next-2018-09-06-2' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-09-11 11:53:12 +10:00
display.h drm/i915/gvt: Fix the validation on size field of dp aux header 2018-04-12 11:29:01 +08:00
dmabuf.c drm/i915/gvt: Enable dma_buf support for BXT. 2018-06-13 10:57:29 +08:00
dmabuf.h drm/i915/gvt: Dmabuf support for GVT-g 2017-12-04 11:24:33 +08:00
edid.c drm/i915/gvt: Fix function comment doc errors 2018-08-07 10:39:53 +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: use array to avoid potential buffer overflow 2018-06-11 15:04:45 +08:00
fb_decoder.c drm/i915/gvt: Enable dma_buf support for BXT. 2018-06-13 10:57:29 +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: Use offsetofend() rather than offsetof + sizeof 2018-05-17 22:05:10 +08:00
gtt.c Merge tag 'drm-intel-next-2018-09-06-2' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-09-11 11:53:12 +10:00
gtt.h BackMerge v4.18-rc7 into drm-next 2018-07-30 10:39:22 +10:00
gvt.c Merge tag 'drm-intel-next-2018-09-06-2' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-09-11 11:53:12 +10:00
gvt.h drm/i915/gvt: free workload in vgpu release 2018-08-13 12:32:57 +08:00
handlers.c Merge tag 'drm-intel-next-2018-09-06-2' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-09-11 11:53:12 +10:00
hypercall.h drm/i915/kvmgt: Support setting dma map for huge pages 2018-07-09 10:34:28 +08:00
interrupt.c drm/i915/gvt: Enable irq initialization for BXT. 2018-06-13 10:57:29 +08:00
interrupt.h
kvmgt.c Merge tag 'drm-intel-next-2018-09-06-2' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-09-11 11:53:12 +10: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 Merge tag 'drm-intel-next-2018-09-06-2' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2018-09-11 11:53:12 +10:00
mmio_context.h drm/i915/gvt: only copy the first page for restore inhibit context 2018-08-02 13:27:54 +08:00
mmio.c Merge tag 'gvt-next-2018-09-04' of https://github.com/intel/gvt-linux into drm-intel-next-queued 2018-09-06 16:51:50 +03:00
mmio.h BackMerge v4.18-rc7 into drm-next 2018-07-30 10:39:22 +10:00
mpt.h drm/i915/kvmgt: Support setting dma map for huge pages 2018-07-09 10:34:28 +08:00
opregion.c drm/i915/gvt: Fix function comment doc errors 2018-08-07 10:39:53 +08:00
page_track.c drm/i915/gvt: Fix function comment doc errors 2018-08-07 10:39:53 +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 Merge tag 'gvt-next-2018-09-04' of https://github.com/intel/gvt-linux into drm-intel-next-queued 2018-09-06 16:51:50 +03:00
sched_policy.c drm/i915/gvt: Use sched_lock to protect gvt scheduler logic. 2018-05-18 12:39:26 +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: Add ppgtt to GVT GEM context 2018-10-19 12:23:45 +01:00
scheduler.h drm/i915/gvt: free workload in vgpu release 2018-08-13 12:32:57 +08:00
trace_points.c
trace.h drm/i915/gvt: scan non-privileged batch buffer for debug purpose 2018-04-23 13:09:34 +08:00
vgpu.c drm/i915/gvt: initialize dmabuf mutex in vgpu_create 2018-08-14 15:26:09 +08:00