linux/drivers/gpu/drm/i915
Chris Wilson 691e6415c8 drm/i915: Always use kref tracking for all contexts.
If we always initialize kref for the context, even if we are using fake
contexts for hangstats when there is no hw support, we can forgo the
dance to dereference the ctx->obj and inspect whether we are permitted
to use kref inside i915_gem_context_reference() and _unreference().

My ulterior motive here is to improve the debugging of a use-after-free
of ctx->obj. This patch avoids the dereference here and instead forces
the assertion checks associated with kref.

v2: Refactor the fake contexts to being even more like the real
contexts, so that there is much less duplicated and special case code.

v3: Tweaks.
v4: Tweaks, minor.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76671
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Tested-by: lu hua <huax.lu@intel.com>
Cc: Ben Widawsky <benjamin.widawsky@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
[Jani: tiny change to backport to drm-intel-fixes.]
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2014-04-11 13:29:51 +03:00
..
dvo.h drm/i915: Remove unused mode_fixup() vfunc of struct intel_dvo_dev_ops 2013-09-05 21:39:59 +02:00
dvo_ch7xxx.c drm/i915: Replace DRM_LOG_KMS() by DRM_DEBUG_KMS() 2014-03-28 12:57:10 +10:00
dvo_ch7017.c
dvo_ivch.c drm/i915: Replace DRM_LOG_KMS() by DRM_DEBUG_KMS() 2014-03-28 12:57:10 +10:00
dvo_ns2501.c drm/i915: Replace DRM_LOG_KMS() by DRM_DEBUG_KMS() 2014-03-28 12:57:10 +10:00
dvo_sil164.c drm/i915: Replace DRM_LOG_KMS() by DRM_DEBUG_KMS() 2014-03-28 12:57:10 +10:00
dvo_tfp410.c drm/i915: Replace DRM_LOG_KMS() by DRM_DEBUG_KMS() 2014-03-28 12:57:10 +10:00
i915_cmd_parser.c Merge tag 'drm-intel-next-2014-03-21' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-04-03 07:51:54 +10:00
i915_debugfs.c Merge tag 'drm-intel-fixes-2014-04-04' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-04-05 16:14:21 +10:00
i915_dma.c drm/i915/dma: prefer struct drm_i915_private to drm_i915_private_t 2014-03-31 15:32:32 +02:00
i915_drv.c drm/i915: move power domain init earlier during system resume 2014-04-04 09:30:10 +02:00
i915_drv.h drm/i915: Always use kref tracking for all contexts. 2014-04-11 13:29:51 +03:00
i915_gem.c drm/i915: Always use kref tracking for all contexts. 2014-04-11 13:29:51 +03:00
i915_gem_context.c drm/i915: Always use kref tracking for all contexts. 2014-04-11 13:29:51 +03:00
i915_gem_debug.c drm/i915: prefer struct drm_i915_private to drm_i915_private_t 2014-03-31 15:34:21 +02:00
i915_gem_dmabuf.c drm/i915: Pin pages whilst allocating for dma-buf vmap() 2013-11-29 15:51:20 +01:00
i915_gem_evict.c drm/i915: prefer struct drm_i915_private to drm_i915_private_t 2014-03-31 15:34:21 +02:00
i915_gem_execbuffer.c drm/i915: Always use kref tracking for all contexts. 2014-04-11 13:29:51 +03:00
i915_gem_gtt.c Merge tag 'drm-intel-fixes-2014-04-04' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-04-05 16:14:21 +10:00
i915_gem_stolen.c drm/i915: restrict vt-d stolen memory workaround to pre-gen8 2014-03-31 10:45:34 +02:00
i915_gem_tiling.c drm/i915: prefer struct drm_i915_private to drm_i915_private_t 2014-03-31 15:34:21 +02:00
i915_gpu_error.c drm/i915: prefer struct drm_i915_private to drm_i915_private_t 2014-03-31 15:34:21 +02:00
i915_ioc32.c
i915_irq.c Merge tag 'drm-intel-fixes-2014-04-04' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-04-05 16:14:21 +10:00
i915_params.c drm/i915: make PC8 be part of runtime PM suspend/resume 2014-03-19 16:38:25 +01:00
i915_reg.h drm/i915: Broadwell expands ACTHD to 64bit 2014-03-28 18:33:14 +01:00
i915_suspend.c drm/i915: Kill most of the FBC register save/restore 2014-01-25 21:17:03 +01:00
i915_sysfs.c drm/i915: remove rps local variables 2014-03-20 14:46:07 +01:00
i915_trace.h drm/i915: Do not dereference pointers from ring buffer in evict event 2014-03-19 08:17:29 +01:00
i915_trace_points.c
i915_ums.c drm/i915: Only restore backlight combination mode reg for ums 2014-01-24 17:22:45 +01:00
intel_acpi.c Merge branch 'acpi-dsm' 2014-01-12 23:45:52 +01:00
intel_bios.c drm/i915: check VBT for supported backlight type 2014-04-11 13:22:27 +03:00
intel_bios.h drm/i915: check VBT for supported backlight type 2014-04-11 13:22:27 +03:00
intel_crt.c Skip intel_crt_init for Dell XPS 8700 2014-04-04 09:30:53 +02:00
intel_ddi.c drm/i915: fix WARNs when reading DDI state while suspended 2014-04-01 22:53:45 +02:00
intel_display.c Merge tag 'drm-intel-fixes-2014-04-04' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-04-05 16:14:21 +10:00
intel_dp.c Merge tag 'drm-intel-fixes-2014-04-04' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-04-05 16:14:21 +10:00
intel_drv.h drm/i915: vlv: reserve the GT power context only once during driver init 2014-04-01 22:30:01 +02:00
intel_dsi.c drm/i915: Make encoder cloning more flexible 2014-03-10 21:33:26 +01:00
intel_dsi.h drm/i915: Parametrize the dphy and other spec specific parameters 2013-12-11 23:52:20 +01:00
intel_dsi_cmd.c drm/i915/dsi: s/size_t/int/ 2013-09-04 17:34:51 +02:00
intel_dsi_cmd.h drm/i915/dsi: s/size_t/int/ 2013-09-04 17:34:51 +02:00
intel_dsi_pll.c drm/i915: Try harder to get best m, n, p values with minimal error 2013-12-11 23:52:18 +01:00
intel_dvo.c drm/i915: Make encoder cloning more flexible 2014-03-10 21:33:26 +01:00
intel_fbdev.c Merge tag 'drm-intel-fixes-2014-04-04' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-04-05 16:14:21 +10:00
intel_hdmi.c Linux 3.14-rc7 2014-03-18 19:12:31 +10:00
intel_i2c.c drm/i915: Disable dp aux irq on g4x 2014-02-07 16:40:07 +01:00
intel_lvds.c Merge tag 'drm-intel-next-2014-03-21' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-04-03 07:51:54 +10:00
intel_modes.c
intel_opregion.c Merge tag 'drm-intel-fixes-2014-02-06' of ssh://git.freedesktop.org/git/drm-intel into drm-next 2014-02-11 12:57:27 +10:00
intel_overlay.c Merge tag 'drm-intel-fixes-2014-04-04' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-04-05 16:14:21 +10:00
intel_panel.c drm/i915: do not setup backlight if not available according to VBT 2014-04-11 13:22:57 +03:00
intel_pm.c drm/i915: Disable self-refresh for untiled fbs on i915gm 2014-04-10 10:56:25 +03:00
intel_ringbuffer.c drm/i915/ringbuffer: prefer struct drm_i915_private to drm_i915_private_t 2014-03-31 15:32:56 +02:00
intel_ringbuffer.h drm/i915: Broadwell expands ACTHD to 64bit 2014-03-28 18:33:14 +01:00
intel_sdvo.c drm/i915/sdvo: fix questionable return value check 2014-03-21 16:13:14 +01:00
intel_sdvo_regs.h drm/i915: use __packed instead of __attribute__((packed)) 2013-12-03 18:19:49 +01:00
intel_sideband.c drm/i915: Use FLISDSI interface for band gap reset 2013-12-11 23:52:17 +01:00
intel_sprite.c drm/i915: Shuffle sprite register writes into a tighter group 2014-01-24 17:22:53 +01:00
intel_tv.c drm/i915/tv: fix gen4 composite s-video tv-out 2014-03-28 18:33:16 +01:00
intel_uncore.c drm/i915: get runtime PM at i915_reg_read_ioctl 2014-04-01 22:41:47 +02:00
Kconfig i915, fbdev: Fix Kconfig typo 2013-11-21 21:59:02 +01:00
Makefile Merge remote-tracking branch 'airlied/drm-next' into drm-intel-next 2014-03-18 09:43:56 +01:00