diff options
author | Paulo Zanoni | 2015-09-14 20:19:57 +0200 |
---|---|---|
committer | Daniel Vetter | 2015-09-23 14:39:17 +0200 |
commit | a9da512b3ed73045253afd778e40d4298f42905b (patch) | |
tree | 563f4ac70236f0024832d1b7b6764a785d9c27af /drivers/gpu/drm/i915/i915_drv.h | |
parent | drm/i915: check for the supported strides on HSW+ FBC (diff) | |
download | kernel-qcow2-linux-a9da512b3ed73045253afd778e40d4298f42905b.tar.gz kernel-qcow2-linux-a9da512b3ed73045253afd778e40d4298f42905b.tar.xz kernel-qcow2-linux-a9da512b3ed73045253afd778e40d4298f42905b.zip |
drm/i915: avoid the last 8mb of stolen on BDW/SKL
The FBC hardware for these platforms doesn't have access to the
bios_reserved range, so it always assumes the maximum (8mb) is used.
So avoid this range while allocating.
This solves a bunch of FIFO underruns that happen if you end up
putting the CFB in that memory range. On my machine, with 32mb of
stolen, I need a 2560x1440 mode for that.
Testcase: igt/kms_frontbuffer_tracking/fbc-* (given the right setup)
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index d4240dba16ff..ffd4ab111957 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -3175,6 +3175,10 @@ static inline void i915_gem_chipset_flush(struct drm_device *dev) int i915_gem_stolen_insert_node(struct drm_i915_private *dev_priv, struct drm_mm_node *node, u64 size, unsigned alignment); +int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *dev_priv, + struct drm_mm_node *node, u64 size, + unsigned alignment, u64 start, + u64 end); void i915_gem_stolen_remove_node(struct drm_i915_private *dev_priv, struct drm_mm_node *node); int i915_gem_init_stolen(struct drm_device *dev); |