linux/drivers/gpu/drm/i915
John Harrison dbe4646d6e drm/i915: Fix for ringbuf space wait in LRC mode
The legacy and LRC code paths have an almost identical procedure for waiting for
space in the ring buffer. They both search for a request in the free list that
will advance the tail to a point where sufficient space is available. They then
wait for that request, retire it and recalculate the free space value.

Unfortunately, a bug in the LRC side meant that the resulting free space might
not be as large as expected and indeed, might not be sufficient. This is because
it was testing against the value of request->tail not request->postfix. Whereas,
when a request is retired, ringbuf->tail is updated to req->postfix not
req->tail.

Another significant difference between the two is that the LRC one did not trust
the wait for request to work! It redid the is there enough space available test
and would fail the call if insufficient. Whereas, the legacy version just said
'return 0' - it assumed the preceeding code works. This difference meant that
the LRC version still worked even with the bug - it just fell back to the
polling wait path.

For: VIZ-5115
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Thomas Daniel <thomas.daniel@intel.com>
Reviewed-by: Tomas Elf <tomas.elf@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-04-01 07:54:43 +02: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
dvo.h
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c Enabled dithering in the intel VCH DVO for 18bpp pipelines. 2015-03-30 16:39:31 +02:00
dvo_ns2501.c drm/i915: Check pixel clock in ns2501 mode_valid hook 2014-09-03 11:05:21 +02:00
dvo_sil164.c
dvo_tfp410.c
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: Relax RPS contraints to allows setting minfreq on idle 2015-03-20 11:48:13 +01: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/chv: Remove Wait for a previous gfx force-off 2015-03-31 15:32:23 +02:00
i915_drv.h drm/i915: Move common request allocation code into a common function 2015-04-01 07:54:30 +02:00
i915_gem.c drm/i915: Move common request allocation code into a common function 2015-04-01 07:54:30 +02: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
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: Rename 'do_execbuf' to 'execbuf_submit' 2015-04-01 07:53:41 +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 drm/i915/bdw: Render state init for Execlists 2014-09-03 11:04:52 +02:00
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_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 drm/i915: remove redundant #ifdef CONFIG_COMPAT 2014-10-24 16:34:07 +02:00
i915_irq.c drm/i915: move clearing of RPS interrupt bits from disable to reset time 2015-03-24 10:14:48 +01: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: Add fault address to error state for gen8 and gen9 2015-03-25 18:23:44 +01: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.h drm/i915: Add dynamic page trace events 2015-03-27 09:25:44 +01:00
i915_trace_points.c
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.c drm/i915: Set crtc backpointer when duplicating crtc state 2015-03-17 22:29:53 +01:00
intel_atomic_plane.c drm/i915: Rotation property is now handled in DRM core 2015-03-10 09:59:33 +01:00
intel_audio.c drm/i915: Convert the ddi cdclk code to get_display_clock_speed 2015-03-31 17:28:58 +02: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: Add module param to test the load detect code 2015-03-27 11:22:52 +01:00
intel_ddi.c drm/i915: Convert the ddi cdclk code to get_display_clock_speed 2015-03-31 17:28:58 +02:00
intel_display.c drm/i915: Convert the ddi cdclk code to get_display_clock_speed 2015-03-31 17:28:58 +02:00
intel_dp.c drm/i915: Convert the ddi cdclk code to get_display_clock_speed 2015-03-31 17:28:58 +02:00
intel_dp_mst.c drm/i915: Don't use staged config in intel_dp_mst_compute_config() 2015-03-26 18:00:18 +01:00
intel_drv.h drm/i915: Convert the ddi cdclk code to get_display_clock_speed 2015-03-31 17:28:58 +02:00
intel_dsi.c drm/i915: Implement connector state duplication 2015-03-26 16:28:21 +01:00
intel_dsi.h drm/i915/dsi: add drm mipi dsi host support 2015-01-29 16:51:39 +01: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_dvo.c drm/i915: Enable DVO 2x clock around DVO encoder init 2015-03-31 15:32:25 +02: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: Don't depend on encoder->new_crtc in intel_hdmi_compute_config 2015-03-26 17:52:33 +01:00
intel_i2c.c
intel_lrc.c drm/i915: Fix for ringbuf space wait in LRC mode 2015-04-01 07:54:43 +02:00
intel_lrc.h drm/i915: Move common request allocation code into a common function 2015-04-01 07:54:30 +02:00
intel_lvds.c drm/i915: Don't use encoder->new_crtc in intel_lvds_compute_config() 2015-03-26 18:00:48 +01: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: Mark the overlay active only if we got ring space 2015-03-31 15:32:24 +02:00
intel_panel.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-02-16 15:48:00 -08:00
intel_pm.c drm/i915: Convert the ddi cdclk code to get_display_clock_speed 2015-03-31 17:28:58 +02:00
intel_psr.c drm/i915: PSR: Keep sink state consistent with source 2015-03-30 16:39:31 +02:00
intel_renderstate.h drm/i915 Add golden context support for Gen9 2014-11-04 14:04:55 +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_ringbuffer.c drm/i915: Fix for ringbuf space wait in LRC mode 2015-04-01 07:54:43 +02:00
intel_ringbuffer.h drm/i915: Move common request allocation code into a common function 2015-04-01 07:54:30 +02:00
intel_runtime_pm.c drm/i915: Spelling s/auxilliary/auxiliary/ 2015-03-17 22:30:12 +01:00
intel_sdvo.c drm/i915: Implement connector state duplication 2015-03-26 16:28:21 +01:00
intel_sdvo_regs.h
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 drm/i915: Rip out GET_SPRITE_COLORKEY ioctl 2015-03-27 09:08:04 +01:00
intel_tv.c drm/i915: Implement connector state duplication 2015-03-26 16:28:21 +01:00
intel_uncore.c drm/i915: Disable the mmio.debug WARN after it fires 2015-03-17 22:30:00 +01:00