linux/drivers/gpu/drm/i915
Ben Widawsky 41bde5535a drm/i915: Get context early in execbuf
We need to have the address space when reserving space for the objects.
Since the address space and context are tied together, and reserve
occurs before context switch (for good reason), we must lookup our
context earlier in the process.

This leaves some room for optimizations where we no longer need to use
ctx_id in certain places. This will be addressed in a subsequent patch.

Important tricky bit:
Because slow relocations during execbuffer drop struct_mutex

Perhaps it would be best to acquire the reference when we get the
context, but I'll save that for another day (note I have written the
patch before, and I found the changes required to be uglier than this).

Note that since we currently access everything via context id, and not
the data structure this is fine, though not desirable. The next change
attempts to get the context only once via the context ID idr lookup, and
as such, the following can happen:

CTX-A is created, refcount = 1
CTX-A execbuf, mutex dropped
close IOCTL called on CTX-A, refcount = 0
CTX-A resumes in execbuf.

v2: Rebased on top of
commit b6359918b8
Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Date:   Wed Oct 30 15:44:16 2013 +0200

    drm/i915: add i915_get_reset_stats_ioctl

v3: Rebased on top of
commit 25b3dfc87b
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Tue Nov 12 11:57:30 2013 +0200

Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Date:   Tue Nov 26 16:14:33 2013 +0200

    drm/i915: check context reset stats before relocations

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-12-18 15:52:42 +01:00
..
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c drm/i915/ns2501: Rip out the reenable hack 2013-11-04 16:32:31 +01:00
dvo_sil164.c
dvo_tfp410.c
dvo.h drm/i915: Remove unused mode_fixup() vfunc of struct intel_dvo_dev_ops 2013-09-05 21:39:59 +02:00
i915_debugfs.c drm/i915: Make pin count per VMA 2013-12-18 15:27:49 +01:00
i915_dma.c drm/i915: Do aliasing PPGTT init with contexts 2013-12-18 15:32:14 +01:00
i915_drv.c drm/i915: Disallow dynamic ppgtt param modification 2013-11-26 10:10:14 +01:00
i915_drv.h drm/i915: Get context early in execbuf 2013-12-18 15:52:42 +01:00
i915_gem_context.c drm/i915: Get context early in execbuf 2013-12-18 15:52:42 +01:00
i915_gem_debug.c drm/i915: Fix #endif comment 2013-08-09 10:45:52 +02:00
i915_gem_dmabuf.c drm/i915: Pin pages whilst mapping the dma-buf 2013-09-03 19:17:58 +02:00
i915_gem_evict.c drm/i915: Make pin count per VMA 2013-12-18 15:27:49 +01:00
i915_gem_execbuffer.c drm/i915: Get context early in execbuf 2013-12-18 15:52:42 +01:00
i915_gem_gtt.c drm/i915: Do aliasing PPGTT init with contexts 2013-12-18 15:32:14 +01:00
i915_gem_stolen.c Linux 3.12-rc2 2013-09-24 09:32:53 +02:00
i915_gem_tiling.c drm/i915: Make pin count per VMA 2013-12-18 15:27:49 +01:00
i915_gem.c drm/i915: Get context early in execbuf 2013-12-18 15:52:42 +01:00
i915_gpu_error.c drm/i915: Make pin count per VMA 2013-12-18 15:27:49 +01:00
i915_ioc32.c
i915_irq.c drm/i915: Swap primary planes on gen2 for FBC 2013-12-04 12:09:36 +01:00
i915_reg.h drm/i915: Fix bogus FBC1 defines 2013-12-04 12:09:34 +01:00
i915_suspend.c drm/i915: do not save/restore backlight registers in KMS 2013-11-14 12:22:32 +01:00
i915_sysfs.c Merge branch 'backlight-rework' into drm-intel-next-queued 2013-11-15 10:02:39 +01:00
i915_trace_points.c
i915_trace.h drm/i915: Add a tracepoint for using a semaphore 2013-10-01 07:45:24 +02:00
i915_ums.c drm/i915: do not save/restore backlight registers in KMS 2013-11-14 12:22:32 +01:00
intel_acpi.c ACPI: Eliminate the DEVICE_ACPI_HANDLE() macro 2013-11-14 23:17:21 +01:00
intel_bios.c i915: Use 120MHz LVDS SSC clock for gen5/gen6/gen7 2013-11-15 00:38:44 +01:00
intel_bios.h drm/i915: use __packed instead of __attribute__((packed)) 2013-12-03 18:19:49 +01:00
intel_crt.c drm/i915: Return a drm_mode_status enum in the mode_valid vfuncs 2013-11-28 16:49:33 +01:00
intel_ddi.c Linux 3.13-rc3 2013-12-09 09:19:14 +01:00
intel_display.c Linux 3.13-rc3 2013-12-09 09:19:14 +01:00
intel_dp.c Linux 3.13-rc3 2013-12-09 09:19:14 +01:00
intel_drv.h drm/i915: add intel_display_power_enabled_sw() for use in atomic ctx 2013-11-28 15:05:06 +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: Use adjusted_mode in DSI PLL calculations 2013-09-16 23:36:38 +02:00
intel_dsi.c drm/i915: Return a drm_mode_status enum in the mode_valid vfuncs 2013-11-28 16:49:33 +01:00
intel_dsi.h drm/i915: add VLV DSI PLL Calculations 2013-09-04 17:34:48 +02:00
intel_dvo.c drm/i915: Return a drm_mode_status enum in the mode_valid vfuncs 2013-11-28 16:49:33 +01:00
intel_fbdev.c drm/i915: Make pin count per VMA 2013-12-18 15:27:49 +01:00
intel_hdmi.c drm/i915: Return a drm_mode_status enum in the mode_valid vfuncs 2013-11-28 16:49:33 +01:00
intel_i2c.c drm/i915/vlv: split CCK and DDR freq usage 2013-11-05 19:28:47 +01:00
intel_lvds.c drm/i915/lvds: don't restore hw state in the lid notifier for pch platforms 2013-12-02 15:08:41 +01:00
intel_modes.c
intel_opregion.c Linux 3.13-rc3 2013-12-09 09:19:14 +01:00
intel_overlay.c drm/i915: Make pin count per VMA 2013-12-18 15:27:49 +01:00
intel_panel.c Merge branch 'bdw-fixes' into backlight-rework 2013-11-15 09:44:29 +01:00
intel_pm.c drm/i915: Make pin count per VMA 2013-12-18 15:27:49 +01:00
intel_ringbuffer.c drm/i915: Make pin count per VMA 2013-12-18 15:27:49 +01:00
intel_ringbuffer.h drm/i915: Write RING_TAIL once per-request 2013-09-10 15:35:58 +02:00
intel_sdvo_regs.h drm/i915: use __packed instead of __attribute__((packed)) 2013-12-03 18:19:49 +01:00
intel_sdvo.c drm/i915: Return a drm_mode_status enum in the mode_valid vfuncs 2013-11-28 16:49:33 +01:00
intel_sideband.c drm/i915/vlv: Make the vlv_dpio_read/vlv_dpio_write more PHY centric 2013-11-11 10:57:45 +01:00
intel_sprite.c drm/i915: Enable pipe gamma for sprites 2013-11-21 09:09:37 +01:00
intel_tv.c drm/i915/tv: add ->get_config callback 2013-11-18 22:24:33 +01:00
intel_uncore.c drm/i915: Get context early in execbuf 2013-12-18 15:52:42 +01:00
Kconfig i915, fbdev: Fix Kconfig typo 2013-11-21 21:59:02 +01:00
Makefile drm/i915: rename intel_fb.c to intel_fbdev.c 2013-10-11 23:37:33 +02:00