linux_dsm_epyc7002/drivers/gpu/drm/i915/gvt
Hang Yuan 3fd34ac02a drm/i915/gvt: fix cleanup sequence in intel_gvt_clean_device
Create one vGPU and then unbind IGD device from i915 driver. The following
oops will happen. This patch will free vgpu resource first and then gvt
resource to remove these oops.

BUG: unable to handle kernel NULL pointer dereference at       00000000000000a8
  PGD 80000003c9d2c067 P4D 80000003c9d2c067 PUD 3c817c067 P      MD 0
  Oops: 0002 [#1] SMP PTI
  RIP: 0010:down_write+0x1b/0x40
Call Trace:
  debugfs_remove_recursive+0x46/0x1a0
  intel_gvt_debugfs_remove_vgpu+0x15/0x30 [i915]
  intel_gvt_destroy_vgpu+0x2d/0xf0 [i915]
  intel_vgpu_remove+0x2c/0x30 [kvmgt]
  mdev_device_remove_ops+0x23/0x50 [mdev]
  mdev_device_remove+0xdb/0x190 [mdev]
  mdev_device_remove+0x190/0x190 [mdev]
  device_for_each_child+0x47/0x90
  mdev_unregister_device+0xd5/0x120 [mdev]
  intel_gvt_clean_device+0x91/0x120 [i915]
  i915_driver_unload+0x9d/0x120 [i915]
  i915_pci_remove+0x15/0x20 [i915]
  pci_device_remove+0x3b/0xc0
  device_release_driver_internal+0x157/0x230
  unbind_store+0xfc/0x150
  kernfs_fop_write+0x10f/0x180
  __vfs_write+0x36/0x180
  ? common_file_perm+0x41/0x130
  ? _cond_resched+0x16/0x40
  vfs_write+0xb3/0x1a0
  ksys_write+0x52/0xc0
  do_syscall_64+0x55/0x100
  entry_SYSCALL_64_after_hwframe+0x44/0xa9

BUG: unable to handle kernel NULL pointer dereference at 0      000000000000038
  PGD 8000000405bce067 P4D 8000000405bce067 PUD 405bcd067 PM      D 0
  Oops: 0000 [#1] SMP PTI
  RIP: 0010:hrtimer_active+0x5/0x40
Call Trace:
  hrtimer_try_to_cancel+0x25/0x120
  ? tbs_sched_clean_vgpu+0x1f/0x50 [i915]
  hrtimer_cancel+0x15/0x20
  intel_gvt_destroy_vgpu+0x4c/0xf0 [i915]
  intel_vgpu_remove+0x2c/0x30 [kvmgt]
  mdev_device_remove_ops+0x23/0x50 [mdev]
  mdev_device_remove+0xdb/0x190 [mdev]
  ? mdev_device_remove+0x190/0x190 [mdev]
  device_for_each_child+0x47/0x90
  mdev_unregister_device+0xd5/0x120 [mdev]
  intel_gvt_clean_device+0x89/0x120 [i915]
  i915_driver_unload+0x9d/0x120 [i915]
  i915_pci_remove+0x15/0x20 [i915]
  pci_device_remove+0x3b/0xc0
  device_release_driver_internal+0x157/0x230
  unbind_store+0xfc/0x150
  kernfs_fop_write+0x10f/0x180
  __vfs_write+0x36/0x180
  ? common_file_perm+0x41/0x130
  ? _cond_resched+0x16/0x40
  vfs_write+0xb3/0x1a0
  ksys_write+0x52/0xc0
  do_syscall_64+0x55/0x100
  entry_SYSCALL_64_after_hwframe+0x44/0xa9

Fixes: bc7b0be316ae("drm/i915/gvt: Add basic debugfs infrastructure")
Fixes: afe04fbe6c52("drm/i915/gvt: create an idle vGPU")
Signed-off-by: Hang Yuan <hang.yuan@linux.intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2018-08-14 15:25:32 +08:00
..
aperture_gm.c drm/i915/gtt: Rename i915_hw_ppgtt base member 2018-06-05 21:11:20 +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 BackMerge v4.18-rc7 into drm-next 2018-07-30 10:39:22 +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: scan non-privileged batch buffer for debug purpose 2018-04-23 13:09:34 +08:00
display.c BackMerge v4.18-rc7 into drm-next 2018-07-30 10:39:22 +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: Enable virtual display support for BXT. 2018-06-13 10:57:29 +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 BackMerge v4.18-rc7 into drm-next 2018-07-30 10:39:22 +10:00
gtt.h BackMerge v4.18-rc7 into drm-next 2018-07-30 10:39:22 +10:00
gvt.c drm/i915/gvt: fix cleanup sequence in intel_gvt_clean_device 2018-08-14 15:25:32 +08:00
gvt.h drm/i915/gvt: free workload in vgpu release 2018-08-13 12:32:57 +08:00
handlers.c BackMerge v4.18-rc7 into drm-next 2018-07-30 10:39:22 +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 drm/i915/gvt: free workload in vgpu release 2018-08-13 12:32:57 +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 BackMerge v4.18-rc7 into drm-next 2018-07-30 10:39:22 +10:00
mmio_context.h drm/i915: Store a pointer to intel_context in i915_request 2018-05-18 09:35:22 +01:00
mmio.c Chris is doing many reworks that allow us to get full-ppgtt supported 2018-06-28 13:10:44 +10: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: Use KVM r/w to access guest opregion 2018-02-06 11:41:34 -08:00
page_track.c drm/i915/gvt: Use vgpu_lock to protect per vgpu access 2018-05-18 12:39:02 +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: 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/gvt: free workload in vgpu release 2018-08-13 12:32:57 +08: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: free workload in vgpu release 2018-08-13 12:32:57 +08:00