linux/drivers/gpu/drm/i915
Chris Wilson 016a65a391 drm/i915: Always reset vma->ggtt_view.pages cache on unbinding
With the introduction of multiple views of an obj in the same vm, each
vma was taught to cache its copy of the pages (so that different views
could have different page arrangements). However, this missed decoupling
those vma->ggtt_view.pages when the vma released its reference on the
obj->pages. As we don't always free the vma, this leads to a possible
scenario (e.g. execbuffer interrupted by the shrinker) where the vma
points to a stale obj->pages, and explodes.

Fixes regression from commit fe14d5f4e5
Author: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Date:   Wed Dec 10 17:27:58 2014 +0000

    drm/i915: Infrastructure for supporting different GGTT views per object

Tvrtko says, if someone else will be confused how this can happen, key
is the reservation execbuffer path. That puts the VMA on the exec_list
which prevents i915_vma_unbind and i915_gem_vma_destroy from fully
destroying the VMA. So the VMA is left existing as an empty object in
the list - unbound and disassociated with the backing store. Kind of a
cached memory object. And then re-using it needs to clear the cached
pages pointer which is fixed above.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1227892
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Michel Thierry <michel.thierry@intel.com>
Cc: stable@vger.kernel.org
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
[Jani: Added Tvrtko's explanation to commit message.]
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2015-06-15 09:49:59 +03:00
..
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c drm/i915: Fix vmap_batch page iterator overrun 2015-03-17 22:30:31 +01:00
i915_debugfs.c drm/i915: Include G4X/VLV/CHV in self refresh status 2015-06-04 11:19:38 +03:00
i915_dma.c drm/i915: Rip out GET_SPRITE_COLORKEY ioctl 2015-03-27 09:08:04 +01:00
i915_drv.c drm/i915: Avoid GPU hang when coming out of s3 or s4 2015-05-11 16:27:08 +03:00
i915_drv.h Merge Linus master into drm-next 2015-04-20 13:05:20 +10:00
i915_gem_batch_pool.c drm/i915: Mark shadow batch buffers as purgeable 2014-12-16 10:39:09 +01:00
i915_gem_context.c drm/i915: Initialize all contexts 2015-03-20 11:48:19 +01:00
i915_gem_debug.c
i915_gem_dmabuf.c dma-buf: cleanup dma_buf_export() to make it easily extensible 2015-04-21 14:47:16 +05:30
i915_gem_evict.c drm/i915: kerneldoc for i915_gem_shrinker.c 2015-03-20 11:48:16 +01:00
i915_gem_execbuffer.c drm/i915: Skip allocating shadow batch for 0-length batches 2015-03-30 16:59:47 +02:00
i915_gem_gtt.c drm/i915: Compare GGTT view structs instead of types 2015-03-27 15:05:22 +01:00
i915_gem_gtt.h drm/i915: Compare GGTT view structs instead of types 2015-03-27 15:05:22 +01:00
i915_gem_render_state.c drm/i915: Remove obsolete seqno parameter from 'i915_add_request' 2014-12-03 09:35:19 +01:00
i915_gem_render_state.h
i915_gem_shrinker.c drm/i915: kerneldoc for i915_gem_shrinker.c 2015-03-20 11:48:16 +01:00
i915_gem_stolen.c Linux 4.0-rc3 2015-03-09 19:58:30 +10:00
i915_gem_tiling.c drm/i915: Check obj->vma_list under the struct_mutex 2015-02-24 15:30:42 +02:00
i915_gem_userptr.c drm/i915: Prevent use-after-free in invalidate_range_start callback 2015-02-05 16:31:30 +02:00
i915_gem.c drm/i915: Always reset vma->ggtt_view.pages cache on unbinding 2015-06-15 09:49:59 +03:00
i915_gpu_error.c drm/i915: Add fault address to error state for gen8 and gen9 2015-03-25 18:23:44 +01:00
i915_ioc32.c
i915_irq.c drm/i915: Dont enable CS_PARSER_ERROR interrupts at all 2015-04-14 17:03:12 +03:00
i915_params.c drm/i915: Add module param to test the load detect code 2015-03-27 11:22:52 +01:00
i915_reg.h drm/i915/chv: Implement WaDisableShadowRegForCpd 2015-04-28 17:31:29 +03:00
i915_suspend.c drm/i915: Remove regfile code&data for UMS suspend/resume 2015-02-27 18:10:39 +01:00
i915_sysfs.c drm/i915/skl: Updated the act_freq_mhz_show sysfs function 2015-03-17 22:30:25 +01:00
i915_trace_points.c
i915_trace.h Merge Linus master into drm-next 2015-04-20 13:05:20 +10:00
i915_vgpu.c drm/i915: Adds graphic address space ballooning logic 2015-02-13 23:28:23 +01:00
i915_vgpu.h drm/i915: Add ULL postfix to VGT_MAGIC constant 2015-03-17 22:30:18 +01:00
intel_acpi.c
intel_atomic_plane.c drm/i915: Rotation property is now handled in DRM core 2015-03-10 09:59:33 +01:00
intel_atomic.c drm/i915: Set crtc backpointer when duplicating crtc state 2015-03-17 22:29:53 +01:00
intel_audio.c drm/i915: Make intel_crtc->config a pointer 2015-01-27 09:50:50 +01:00
intel_bios.c drm/i915/skl: Support for edp low_vswing param in vbt 2015-02-25 16:06:00 +01:00
intel_bios.h drm/i915/skl: Support for edp low_vswing param in vbt 2015-02-25 16:06:00 +01:00
intel_crt.c drm/i915: Allocate connector state together with the connectors 2015-04-13 15:21:21 +03:00
intel_ddi.c drm/i915: Allocate connector state together with the connectors 2015-04-13 15:21:21 +03:00
intel_display.c drm/i915: Drop PIPE-A quirk for 945GSE HP Mini 2015-05-07 15:28:34 +03:00
intel_dp_mst.c drm/i915: Allocate connector state together with the connectors 2015-04-13 15:21:21 +03:00
intel_dp.c drm/i915/hsw: Fix workaround for server AUX channel clock divisor 2015-06-01 10:55:51 +03:00
intel_drv.h Merge Linus master into drm-next 2015-04-20 13:05:20 +10:00
intel_dsi_panel_vbt.c drm/i915/dsi: remove intel_dsi_cmd.c and the unused functions therein 2015-01-29 16:57:14 +01:00
intel_dsi_pll.c drm/i915: Use DSI Pll1 for enabling MIPI DSI on Port C 2014-12-10 17:47:21 +01:00
intel_dsi.c drm/i915: Allocate connector state together with the connectors 2015-04-13 15:21:21 +03:00
intel_dsi.h drm/i915/dsi: add drm mipi dsi host support 2015-01-29 16:51:39 +01:00
intel_dvo.c drm/i915: Allocate connector state together with the connectors 2015-04-13 15:21:21 +03:00
intel_fbc.c drm/i915: kill i915.powersave 2015-03-26 13:04:23 +01:00
intel_fbdev.c drm/i915: Pass in plane state when (un)pinning frame buffers 2015-03-23 15:00:57 +01:00
intel_fifo_underrun.c drm/i915: Check for driver readyness before handling an underrun interrupt 2015-03-04 10:04:19 +02:00
intel_frontbuffer.c drm/i915: kill i915.powersave 2015-03-26 13:04:23 +01:00
intel_hdmi.c drm/i915: Allocate connector state together with the connectors 2015-04-13 15:21:21 +03:00
intel_i2c.c drm/i915: Fix DDC probe for passive adapters 2015-06-09 10:34:15 +03:00
intel_lrc.c drm/i915: Initialize HWS page address after GPU reset 2015-06-04 11:10:21 +03:00
intel_lrc.h drm/i915: Rename 'flags' to 'dispatch_flags' for better code reading 2015-02-25 22:43:29 +01:00
intel_lvds.c drm/i915: Add missing MacBook Pro models with dual channel LVDS 2015-05-05 17:14:36 +03:00
intel_modes.c
intel_opregion.c drm/i915: Remove DRIVER_MODESET checks from modeset code 2015-02-27 18:10:53 +01:00
intel_overlay.c drm/i915: Use GGTT view when (un)pinning objects to planes 2015-03-23 14:56:56 +01:00
intel_panel.c kernel.h: implement DIV_ROUND_CLOSEST_ULL 2015-04-17 09:03:55 -04:00
intel_pm.c drm/i915: fix screen flickering 2015-05-19 10:28:34 +03:00
intel_psr.c drm/i915: Remove duplicated psr.active unset 2015-03-26 13:04:37 +01:00
intel_renderstate_gen6.c drm/i915: Add headers to the various render state 2014-12-10 17:47:23 +01:00
intel_renderstate_gen7.c drm/i915: Add headers to the various render state 2014-12-10 17:47:23 +01:00
intel_renderstate_gen8.c drm/i915: Add headers to the various render state 2014-12-10 17:47:23 +01:00
intel_renderstate_gen9.c drm/i915: Add headers to the various render state 2014-12-10 17:47:23 +01:00
intel_renderstate.h
intel_ringbuffer.c drm/i915: Move WaBarrierPerformanceFixDisable:skl to skl code from chv code 2015-06-04 14:15:45 +03:00
intel_ringbuffer.h drm/i915: add frontbuffer tracking to FBC 2015-03-17 22:29:56 +01:00
intel_runtime_pm.c drm/i915: Spelling s/auxilliary/auxiliary/ 2015-03-17 22:30:12 +01:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: Properly initialize SDVO analog connectors 2015-06-08 13:42:00 +03:00
intel_sideband.c drm/i915: Correct the IOSF Dev_FN field for IOSF transfers 2015-02-09 14:26:19 +02:00
intel_sprite.c Linux 4.0-rc7 2015-04-09 07:48:27 +10:00
intel_tv.c drm/i915: Allocate connector state together with the connectors 2015-04-13 15:21:21 +03:00
intel_uncore.c drm/i915/chv: Implement WaDisableShadowRegForCpd 2015-04-28 17:31:29 +03:00
Kconfig drm/i915/dsi: add drm mipi dsi host support 2015-01-29 16:51:39 +01:00
Makefile drm/i915: Extract i915_gem_shrinker.c 2015-03-20 11:48:15 +01:00