linux_dsm_epyc7002/drivers/gpu/drm/i915
Chris Wilson e7539b79f7 drm/i915/gtt: Mark the freed page table entries with scratch
On unwinding the allocation error path and having freed the page table
entry, it is imperative that we mark it as scratch.

<4> [416.075569] general protection fault: 0000 [#1] PREEMPT SMP PTI
<4> [416.075801] CPU: 0 PID: 2385 Comm: kworker/u2:11 Tainted: G     U            5.2.0-rc7-CI-Patchwork_13534+ #1
<4> [416.076162] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.10.1-0-g8891697-prebuilt.qemu-project.org 04/01/2014
<4> [416.076522] Workqueue: i915 __i915_vm_release [i915]
<4> [416.076754] RIP: 0010:gen8_ppgtt_cleanup_3lvl+0x58/0xb0 [i915]
<4> [416.077023] Code: 81 e2 04 fe ff ff 81 c2 ff 01 00 00 4c 8d 74 d6 58 4d 8b 65 00 4d 3b a7 28 02 00 00 74 40 49 8d 5c 24 50 49 81 c4 50 10 00 00 <48> 8b 2b 49 3b af 20 02 00 00 74 13 4c 89 ff 48 89 ee e8 01 fb ff
<4> [416.077445] RSP: 0018:ffffc9000046bd98 EFLAGS: 00010206
<4> [416.077625] RAX: 0001000000000000 RBX: 6b6b6b6b6b6b6bbb RCX: 8b4b56d500000000
<4> [416.077838] RDX: 00000000000001ff RSI: ffff88805a578008 RDI: ffff88805bd0efc8
<4> [416.078167] RBP: ffff88805bd0efc8 R08: 0000000004e42b93 R09: 0000000000000001
<4> [416.078381] R10: 0000000000000000 R11: ffff888077a1b0b8 R12: 6b6b6b6b6b6b7bbb
<4> [416.078594] R13: ffff88805a578058 R14: ffff88805a579058 R15: ffff88805bd0efc8
<4> [416.078815] FS:  0000000000000000(0000) GS:ffff88807da00000(0000) knlGS:0000000000000000
<4> [416.079395] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
<4> [416.079851] CR2: 000056160fec2b14 CR3: 0000000071bbc003 CR4: 00000000003606f0
<4> [416.080388] Call Trace:
<4> [416.080828]  gen8_ppgtt_cleanup+0x64/0x100 [i915]
<4> [416.081399]  __i915_vm_release+0xfc/0x1d0 [i915]

Fixes: 1d1b5490b9 ("drm/i915/gtt: Replace struct_mutex serialisation for allocation")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190704201656.15775-1-chris@chris-wilson.co.uk
2019-07-04 22:26:31 +01:00
..
display drm/i915: Add N & CTS values for 10/12 bit deep color 2019-07-03 21:38:22 +03:00
gem drm/i915/gt: Pull engine w/a initialisation into common 2019-07-04 19:22:11 +01:00
gt drm/i915/gt: Pull engine w/a initialisation into common 2019-07-04 19:22:11 +01:00
gvt drm/i915/gtt: Use a common type for page directories 2019-06-17 16:30:54 +03:00
oa drm/i915: Move OA files to separate folder 2019-06-26 23:23:59 +01:00
selftests drm/i915/selftests: Common live setup/teardown 2019-07-03 11:07:57 +01:00
.gitignore
i915_active_types.h drm/i915: Provide an i915_active.acquire callback 2019-06-21 19:47:55 +01:00
i915_active.c drm/i915: Markup potential lock for i915_active 2019-07-03 12:23:56 +01:00
i915_active.h drm/i915: Provide an i915_active.acquire callback 2019-06-21 19:47:55 +01:00
i915_cmd_parser.c drm/i915: Move GEM object domain management from struct_mutex to local 2019-05-28 12:45:29 +01:00
i915_debugfs.c drm/i915: Dump w/a lists on all engines 2019-07-04 19:22:10 +01:00
i915_debugfs.h drm/i915: extract i915_debugfs.h from i915_drv.h 2019-05-03 10:06:40 +03:00
i915_drv.c drm/i915: Initialize drm_driver vblank funcs at compile time 2019-06-26 19:23:28 +03:00
i915_drv.h drm/i915: Flush the workqueue before draining 2019-07-04 13:44:10 +01:00
i915_fixed.h drm/i915: make i915_fixed.h self-contained 2019-06-27 10:50:24 +03:00
i915_gem_batch_pool.c drm/i915: Throw away the active object retirement complexity 2019-06-21 19:47:51 +01:00
i915_gem_batch_pool.h drm/i915: Split GEM object type definition to its own header 2019-05-28 12:45:29 +01:00
i915_gem_evict.c drm/i915: Move more GEM objects under gem/ 2019-05-28 12:45:29 +01:00
i915_gem_fence_reg.c drm/i915: Use intel_uncore_rmw in intel_gt_init_swizzling 2019-06-21 13:48:24 +01:00
i915_gem_fence_reg.h drm/i915: Convert i915_gem_init_swizzling to intel_gt 2019-06-21 13:48:22 +01:00
i915_gem_gtt.c drm/i915/gtt: Mark the freed page table entries with scratch 2019-07-04 22:26:31 +01:00
i915_gem_gtt.h Revert "drm/i915: Introduce private PAT management" 2019-07-02 19:36:47 +01:00
i915_gem.c drm/i915/gem: Free pages before rcu-freeing the object 2019-07-03 11:46:47 +01:00
i915_gem.h drm/i915: Load balancing across a virtual engine 2019-05-22 08:40:38 +01:00
i915_globals.c drm/i915: Move more GEM objects under gem/ 2019-05-28 12:45:29 +01:00
i915_globals.h drm/i915: make i915_globals.h self-contained 2019-06-27 10:50:32 +03:00
i915_gpu_error.c drm/i915: Prevent dereference of engine before NULL check in error capture 2019-06-21 15:38:54 +01:00
i915_gpu_error.h
i915_ioc32.c
i915_irq.c drm/i915: synchronize_irq() against the actual irq 2019-07-03 10:07:13 +01:00
i915_irq.h drm/i915: synchronize_irq() against the actual irq 2019-07-03 10:07:13 +01:00
i915_memcpy.c
i915_mm.c
i915_params.c drm/i915: Check backlight type while doing eDP backlight initializaiton 2019-06-26 17:48:12 +03:00
i915_params.h drm/i915: Check backlight type while doing eDP backlight initializaiton 2019-06-26 17:48:12 +03:00
i915_pci.c drm/i915/ehl: Add missing VECS engine 2019-06-25 11:50:20 -07:00
i915_perf.c drm/i915: Move OA files to separate folder 2019-06-26 23:23:59 +01:00
i915_pmu.c drm/i915: Show support for accurate sw PMU busyness tracking 2019-07-04 15:42:24 +01:00
i915_pmu.h
i915_priolist_types.h drm/i915: Downgrade NEWCLIENT to non-preemptive 2019-05-20 18:28:22 +03:00
i915_pvinfo.h drm/i915: make i915_pvinfo.h self-contained 2019-06-27 10:50:35 +03:00
i915_query.c Revert "drm/i915: Expand subslice mask" 2019-05-29 17:18:18 +03:00
i915_query.h
i915_reg.h drm/i915/ehl: Add third combo PHY offset 2019-07-01 08:28:15 -07:00
i915_request.c drm/i915: Rename i915_timeline to intel_timeline and move under gt 2019-06-21 13:48:53 +01:00
i915_request.h drm/i915: Rename i915_timeline to intel_timeline and move under gt 2019-06-21 13:48:53 +01:00
i915_scatterlist.c drm/i915: Pull scatterlist utils out of i915_gem.h 2019-05-28 12:45:29 +01:00
i915_scatterlist.h drm/i915: Pull scatterlist utils out of i915_gem.h 2019-05-28 12:45:29 +01:00
i915_scheduler_types.h drm/i915/execlists: Minimalistic timeslicing 2019-06-20 16:52:36 +01:00
i915_scheduler.c drm/i915/execlists: Minimalistic timeslicing 2019-06-20 16:52:36 +01:00
i915_scheduler.h drm/i915: Only reschedule the submission tasklet if preemption is possible 2019-05-07 17:40:20 +01:00
i915_selftest.h drm/i915/selftests: Common live setup/teardown 2019-07-03 11:07:57 +01:00
i915_suspend.c drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
i915_sw_fence.c
i915_sw_fence.h
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c drm/i915: update with_intel_runtime_pm to use the rpm structure 2019-06-14 15:58:33 +01:00
i915_trace_points.c
i915_trace.h drm/i915: Fix various tracepoints for gen2 2019-06-26 19:23:28 +03:00
i915_user_extensions.c
i915_user_extensions.h
i915_utils.h drm/i915/execlists: Preempt-to-busy 2019-06-20 16:52:36 +01:00
i915_vgpu.c drm/i915/gt: Fixup kerneldoc parameters 2019-06-21 16:04:09 +01:00
i915_vgpu.h drm/i915: make i915_vgpu.h self-contained 2019-06-27 10:50:38 +03:00
i915_vma.c drm/i915: Mark up vma->active as safe for use inside shrinkers 2019-07-03 12:24:08 +01:00
i915_vma.h drm/i915: Move fence register tracking from i915->mm to ggtt 2019-06-13 09:37:39 +01:00
intel_csr.c drm/i915/dmc: protect against loading wrong firmware 2019-06-17 12:32:34 -07:00
intel_csr.h drm/i915/csr: move CSR version macros to intel_csr.h 2019-05-03 10:06:25 +03:00
intel_device_info.c drm/i915: rework reading pipe disable fuses 2019-06-28 10:07:26 -07:00
intel_device_info.h drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
intel_drv.h drm/i915: Keep the TypeC port mode fixed when the port is active 2019-07-01 15:02:34 +03:00
intel_guc_ads.c drm/i915/guc: Avoid reclaim locks during reset 2019-07-01 16:21:43 +01:00
intel_guc_ads.h drm/i915/guc: Reset GuC ADS during sanitize 2019-05-28 10:07:05 +01:00
intel_guc_ct.c drm/i915/guc: reorder enable/disable communication steps 2019-06-21 19:47:33 +01:00
intel_guc_ct.h drm/i915: make intel_guc_ct.h self-contained 2019-06-27 10:50:40 +03:00
intel_guc_fw.c drm/i915/guc: Upgrade to GuC 33.0.0 2019-07-04 16:56:55 +01:00
intel_guc_fw.h
intel_guc_fwif.h drm/i915/guc: Upgrade to GuC 33.0.0 2019-07-04 16:56:55 +01:00
intel_guc_log.c drm/i915: synchronize_irq() against the actual irq 2019-07-03 10:07:13 +01:00
intel_guc_log.h
intel_guc_reg.h drm/i915: make intel_guc_reg.h self-contained 2019-06-27 10:50:45 +03:00
intel_guc_submission.c drm/i915/execlists: Preempt-to-busy 2019-06-20 16:52:36 +01:00
intel_guc_submission.h
intel_guc.c drm/i915: Make GuC GGTT reservation work on ggtt 2019-06-11 14:40:15 +01:00
intel_guc.h drm/i915/guc: Avoid reclaim locks during reset 2019-07-01 16:21:43 +01:00
intel_gvt.c
intel_gvt.h drm/i915: make intel_gvt.h self-contained 2019-06-27 10:50:48 +03:00
intel_huc_fw.c drm/i915/huc: Define HuC firmware version for Icelake 2019-05-28 10:07:23 +01:00
intel_huc_fw.h
intel_huc.c drm/i915: update with_intel_runtime_pm to use the rpm structure 2019-06-14 15:58:33 +01:00
intel_huc.h drm/i915/huc: New HuC status register for Gen11 2019-05-28 10:07:13 +01:00
intel_pm.c drm/i915: Use intel state as much as possible in wm code 2019-07-01 10:32:57 +02:00
intel_pm.h drm/i915: Convert most of atomic commit to take more intel state 2019-07-01 10:32:14 +02:00
intel_runtime_pm.c drm/i915: Fix memleak in runtime wakeref tracking 2019-07-02 16:00:20 +01:00
intel_runtime_pm.h drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
intel_sideband.c drm/i915: Make sandybridge_pcode_read() deal with the second data register 2019-05-27 20:51:48 +03:00
intel_sideband.h drm/i915: Make sandybridge_pcode_read() deal with the second data register 2019-05-27 20:51:48 +03:00
intel_uc_fw.c drm/i915: Move GEM object domain management from struct_mutex to local 2019-05-28 12:45:29 +01:00
intel_uc_fw.h drm/i915: make intel_uc_fw.h self-contained 2019-06-27 10:50:54 +03:00
intel_uc.c drm/i915/guc: handle GuC messages received with CTB disabled 2019-06-21 19:47:34 +01:00
intel_uc.h drm/i915/guc: Fix runtime suspend 2019-05-03 08:38:37 +01:00
intel_uncore.c drm/i915: Check caller held wakerefs in assert_forcewakes_active 2019-07-04 14:42:38 +01:00
intel_uncore.h drm/i915: dynamically allocate forcewake domains 2019-06-20 16:34:56 +01:00
intel_wakeref.c drm/i915: Local debug BUG_ON for intel_wakeref 2019-06-21 19:48:00 +01:00
intel_wakeref.h drm/i915: Add a wakeref getter for iff the wakeref is already active 2019-06-26 18:01:01 +01:00
intel_wopcm.c drm/i915/gt: Fixup kerneldoc parameters 2019-06-21 16:04:09 +01:00
intel_wopcm.h drm/i915: Stop using I915_READ/WRITE in intel_wopcm_init_hw 2019-06-21 13:48:32 +01:00
Kconfig drm/i915: add force_probe module parameter to replace alpha_support 2019-05-31 16:20:30 +03:00
Kconfig.debug drm/i915: Enable refcount debugging for default debug levels 2019-06-14 12:16:08 +01:00
Kconfig.profile drm/i915: Add a label for config DRM_I915_SPIN_REQUEST 2019-06-12 11:18:55 +01:00
Makefile drm/i915: Move the renderstate setup under gt/ 2019-07-04 11:48:22 +01:00
Makefile.header-test drm/i915: make intel_uc_fw.h self-contained 2019-06-27 10:50:54 +03:00