linux/drivers/gpu/drm/i915
Chris Wilson 755d22184f drm/i915: Pin backing pages for pwrite
By using the recently introduced pinning of pages, we can safely drop
the mutex in the knowledge that the pages are not going to disappear
jeneath us, and so we can simplify the code for iterating over the pages.

Note: The old code had such complicated page refcounting since it used
obj->pages as a micro-optimization if it's there, but that could
(before this patch) disappear when we drop the dev->struct_mutex.
Hence some manual page refcounting was required for the slow path,
complicated by the fact that pages returned by shmem_read_mapping_page
already have a pageref, which needs to be dropped again.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
[danvet: Added note to explain the question Ben raised in review.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-09-20 14:22:56 +02:00
..
dvo_ch7xxx.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_ch7017.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_ivch.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_ns2501.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_sil164.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo_tfp410.c drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
dvo.h drm/i915/dvo: implement get_hw_state 2012-09-06 07:58:52 +02:00
i915_debugfs.c drm/i915: Convert remaining debugfs iterators over rings to for_each_ring() 2012-09-03 10:09:29 +02:00
i915_dma.c i915: use alloc_ordered_workqueue() instead of explicit UNBOUND w/ max_active = 1 2012-08-24 01:13:53 +02:00
i915_drv.c Merge the modeset-rework, basic conversion into drm-intel-next 2012-09-06 22:52:43 +02:00
i915_drv.h drm/i915: Pin backing pages whilst exporting through a dmabuf vmap 2012-09-20 14:22:56 +02:00
i915_gem_context.c drm/i915: Only pwrite through the GTT if there is space in the aperture 2012-08-24 02:03:33 +02:00
i915_gem_debug.c drm/i915: stop using dev->agp->base 2012-06-12 22:18:06 +02:00
i915_gem_dmabuf.c drm/i915: Pin backing pages whilst exporting through a dmabuf vmap 2012-09-20 14:22:56 +02:00
i915_gem_evict.c drm/i915: Only pwrite through the GTT if there is space in the aperture 2012-08-24 02:03:33 +02:00
i915_gem_execbuffer.c drm/i915: Avoid unbinding due to an interrupted pin_and_fence during execbuffer 2012-08-24 21:02:51 +02:00
i915_gem_gtt.c Merge branch 'for-airlied' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2012-09-03 12:05:01 +10:00
i915_gem_stolen.c drm/i915: Split the stolen handling for GEM out of i915_dma.c 2012-05-03 11:18:11 +02:00
i915_gem_tiling.c drm/i915: Only the zap the VMA after updating the tiling parameters 2012-05-03 11:18:07 +02:00
i915_gem.c drm/i915: Pin backing pages for pwrite 2012-09-20 14:22:56 +02:00
i915_ioc32.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_irq.c drm/ips: move drps/ips/ilk related variables into dev_priv->ips 2012-09-03 10:09:27 +02:00
i915_reg.h Merge the modeset-rework, basic conversion into drm-intel-next 2012-09-06 22:52:43 +02:00
i915_suspend.c Linux 3.5-rc7 2012-07-20 00:53:28 -04:00
i915_sysfs.c drm/i915: Enable some sysfs stuff without CONFIG_PM 2012-09-05 23:26:29 +02:00
i915_trace_points.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_trace.h drm/i915: add a tracepoint for gpu frequency changes 2012-09-03 10:09:27 +02:00
intel_acpi.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
intel_bios.c drm/i915/bios: cleanup return type of intel_parse_bios() 2012-06-27 10:17:51 +01:00
intel_bios.h drm/i915/bios: cleanup return type of intel_parse_bios() 2012-06-27 10:17:51 +01:00
intel_crt.c Merge the modeset-rework, basic conversion into drm-intel-next 2012-09-06 22:52:43 +02:00
intel_ddi.c drm/i915/hdmi: implement get_hw_state 2012-09-06 07:58:22 +02:00
intel_display.c drm/i915: correctly update crtc->x/y in set_base 2012-09-18 00:52:43 +02:00
intel_dp.c Merge the modeset-rework, basic conversion into drm-intel-next 2012-09-06 22:52:43 +02:00
intel_drv.h Merge the modeset-rework, basic conversion into drm-intel-next 2012-09-06 22:52:43 +02:00
intel_dvo.c drm/i915: improve modeset state checking after dpms calls 2012-09-06 08:21:31 +02:00
intel_fb.c drm/i915: Zero initialize mode_cmd 2012-07-05 13:27:58 +02:00
intel_hdmi.c Merge the modeset-rework, basic conversion into drm-intel-next 2012-09-06 22:52:43 +02:00
intel_i2c.c drm/i915: ensure i2c adapter is all set before adding it 2012-08-13 19:04:24 +02:00
intel_lvds.c drm/i915: fix OOPS in lid_notify 2012-09-18 00:59:37 +02:00
intel_modes.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into drm-next 2012-08-27 16:22:20 +10:00
intel_opregion.c drm/i915: [sparse] __iomem fixes for opregion 2012-05-03 11:18:00 +02:00
intel_overlay.c drm/i915: Only pwrite through the GTT if there is space in the aperture 2012-08-24 02:03:33 +02:00
intel_panel.c drm/i915: Fix blank panel at reopening lid 2012-08-11 21:15:16 +02:00
intel_pm.c drm/i915: Never read FORCEWAKE 2012-09-03 10:28:32 +02:00
intel_ringbuffer.c drm/i915: add workarounds to gen7_render_ring_flush 2012-09-03 10:09:26 +02:00
intel_ringbuffer.h drm/i915: Lazily apply the SNB+ seqno w/a 2012-08-10 11:11:32 +02:00
intel_sdvo_regs.h drm/i915: properly handle interlaced bit for sdvo dtd conversion 2012-05-24 17:53:52 +02:00
intel_sdvo.c Merge the modeset-rework, basic conversion into drm-intel-next 2012-09-06 22:52:43 +02:00
intel_sprite.c drm/i915: mask tiled bit when updating ILK sprites 2012-07-20 12:21:40 +02:00
intel_tv.c drm/i915: s/intel_encoder_disable/intel_encoder_noop 2012-09-06 08:21:27 +02:00
Makefile drm/i915: Support for ns2501-DVO 2012-07-25 18:23:48 +02:00