linux-stable/drivers/gpu/drm
Paulo Zanoni ab28a5474a drm/i915/fbc: update busy_bits even for GTT and flip flushes
We ignore ORIGIN_GTT because the hardware tracking can recognize GTT
writes and take care of them. We also ignore ORIGIN_FLIP because we
deal with flips without relying on the frontbuffer tracking
infrastructure. On the other hand, a flush is a flush and means we're
good to go, so we need to update busy_bits in order to reflect that,
even if we're not going to do anything else about it.

How to reproduce the bug fixed by this patch:
 - boot SKL up to the desktop environment
 - stop the display manager
 - run any of the igt/kms_frontbuffer_tracking/*fbc*onoff* subtests
 - the tests will fail

The steps above will create the right conditions for us to lose track
of busy_bits. If you, for example, run the full set of FBC tests, the
onoff subtests will succeed.

Also notice that the "bug" is that we'll just keep FBC disabled on
cases where it could be enabled, so it's not something the users can
perceive, it just affects power consumption numbers on properly
configured machines.

Testcase: igt/kms_frontbuffer_tracking/*fbc*onoff* (see above)
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1459804638-3588-2-git-send-email-paulo.r.zanoni@intel.com
2016-06-20 17:47:26 -03:00
..
amd drm/amdgpu: use crtc directly in drm_crtc_vblank_put() 2016-06-13 18:38:06 +02:00
arc Merge tag 'topic/drm-misc-2016-06-15' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-16 05:49:32 +10:00
arm drm/hdlcd: Use helper support for nonblocking commits 2016-06-10 17:11:17 +02:00
armada Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-09 11:19:28 +10:00
ast Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-09 11:19:28 +10:00
atmel-hlcdc drm: atmel-hlcdc: Rely on the default ->best_encoder() behavior 2016-06-10 17:22:11 +02:00
bochs drm/bochs: Use lockless gem BO free callback 2016-06-01 09:40:16 +02:00
bridge drm/bridge: dw-hdmi: Use drm_atomic_helper_best_encoder() 2016-06-10 17:25:30 +02:00
cirrus Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-09 11:19:28 +10:00
etnaviv dma-buf/fence: make fence context 64 bit v2 2016-06-02 08:27:41 +02:00
exynos drm: exynos: Rely on the default ->best_encoder() behavior 2016-06-10 17:22:15 +02:00
fsl-dcu drm: fsl-dcu: Rely on the default ->best_encoder() behavior 2016-06-10 17:22:19 +02:00
gma500 drm/gma500: use drm_crtc_vblank_{on,off}() 2016-06-13 18:38:19 +02:00
hisilicon drm/hisilicon: Implement some semblance of vblank event handling 2016-06-09 10:28:14 +02:00
i2c
i810
i915 drm/i915/fbc: update busy_bits even for GTT and flip flushes 2016-06-20 17:47:26 -03:00
imx drm/imx: plane: Don't set plane->crtc in ipu_plane_update() 2016-05-30 09:14:00 +02:00
mediatek drm/atomic-helper: Massage swap_state signature somewhat 2016-06-10 16:52:12 +02:00
mga
mgag200 Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-09 11:19:28 +10:00
msm drm/atomic-helper: Massage swap_state signature somewhat 2016-06-10 16:52:12 +02:00
nouveau drm/nouveau: replace legacy vblank helpers 2016-06-13 18:33:41 +02:00
omapdrm drm: omap: Rely on the default ->best_encoder() behavior 2016-06-10 17:25:11 +02:00
panel
qxl Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-09 11:19:28 +10:00
r128
radeon drm/radeon: use crtc directly in drm_crtc_vblank_put() 2016-06-13 18:38:12 +02:00
rcar-du drm: rcar-du: Rely on the default ->best_encoder() behavior 2016-06-10 17:24:26 +02:00
rockchip drm: rockchip: Rely on the default ->best_encoder() behavior 2016-06-10 17:24:37 +02:00
savage
shmobile Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-09 11:19:28 +10:00
sis
sti drm/atomic-helper: Massage swap_state signature somewhat 2016-06-10 16:52:12 +02:00
sun4i drm: sun4i: Rely on the default ->best_encoder() behavior 2016-06-10 17:24:44 +02:00
tdfx
tegra drm: tegra: Rely on the default ->best_encoder() behavior 2016-06-10 17:24:48 +02:00
tilcdc drm/tilcdc: Use lockless gem BO free callback 2016-06-01 09:41:02 +02:00
ttm
udl drm/udl: use drm_crtc_send_vblank_event() 2016-06-06 18:03:06 +02:00
vc4 drm: vc4: Rely on the default ->best_encoder() behavior 2016-06-10 17:24:58 +02:00
vgem drm/vgem: Use lockless gem BO free callback 2016-05-31 15:28:10 +02:00
via
virtio drm/virtio: Don't reinvent a flipping wheel 2016-06-14 16:32:47 +02:00
vmwgfx drm/vmwgfx: use *_32_bits() macros 2016-06-15 13:10:38 +02:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic.c drm/atomic: Add struct drm_crtc_commit to track async updates 2016-06-10 16:57:54 +02:00
drm_atomic_helper.c drm/atomic-helpers: Clear up cleanup_done a bit 2016-06-15 17:25:36 +02:00
drm_auth.c
drm_bridge.c drm/doc: Switch to sphinx/rst fixed-width quoting 2016-06-03 20:58:24 +02:00
drm_bufs.c
drm_cache.c
drm_context.c
drm_crtc.c drm/atomic: Add struct drm_crtc_commit to track async updates 2016-06-10 16:57:54 +02:00
drm_crtc_helper.c drm: drm_helper_crtc_enable_color_mgmt() => drm_crtc_enable_color_mgmt() 2016-06-07 17:10:49 +03:00
drm_crtc_internal.h
drm_debugfs.c
drm_dma.c
drm_dp_aux_dev.c
drm_dp_dual_mode_helper.c drm: Add helper for DP++ adaptors 2016-05-23 11:10:46 +03:00
drm_dp_helper.c
drm_dp_mst_topology.c
drm_drv.c drm: Remove dev_pm_ops from drm_class 2016-06-09 08:43:25 +02:00
drm_edid.c drm/edid: add displayid detailed 1 timings to the modelist. (v1.1) 2016-05-23 11:35:31 +10:00
drm_edid_load.c Fix annoyingly awkward typo in drm_edid_load.c 2016-05-30 09:59:28 +02:00
drm_encoder_slave.c
drm_fb_cma_helper.c drm: fb: cma: fix memory leak 2016-06-13 09:53:09 +02:00
drm_fb_helper.c drm: Replace fb_helper->atomic with mode_config->atomic_commit 2016-06-09 08:43:28 +02:00
drm_flip_work.c
drm_fops.c drm/atomic: Add struct drm_crtc_commit to track async updates 2016-06-10 16:57:54 +02:00
drm_fourcc.c drm: Move format-related helpers to drm_fourcc.c 2016-06-09 11:58:50 +02:00
drm_gem.c drm/doc: Appease sphinx 2016-06-02 16:25:20 +02:00
drm_gem_cma_helper.c drm: Wrap direct calls to driver->gem_free_object from CMA 2016-06-01 15:00:28 +10:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c
drm_irq.c drm: make drm_vblank_{get,put}() static 2016-06-13 18:37:33 +02:00
drm_kms_helper_common.c
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c drm/dsi: Add uevent callback 2016-06-13 10:45:57 +02:00
drm_mm.c drm/mm: avoid possible null pointer dereference 2016-05-23 14:56:11 +02:00
drm_modes.c Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-09 11:19:28 +10:00
drm_modeset_lock.c drm/doc: Switch to sphinx/rst fixed-width quoting 2016-06-03 20:58:24 +02:00
drm_of.c
drm_panel.c
drm_pci.c
drm_plane_helper.c drm/doc: Appease sphinx 2016-06-02 16:25:20 +02:00
drm_platform.c
drm_prime.c drm/prime: fix error path deadlock fail 2016-06-13 17:32:18 +02:00
drm_probe_helper.c drm: Only create a cmdline mode if no probed modes match 2016-06-02 15:10:22 +02:00
drm_rect.c
drm_scatter.c
drm_simple_kms_helper.c drm: Add helper for simple display pipeline 2016-06-10 17:33:17 +02:00
drm_sysfs.c drm: Remove dev_pm_ops from drm_class 2016-06-09 08:43:25 +02:00
drm_trace.h
drm_trace_points.c
drm_vm.c
drm_vma_manager.c drm/doc: Switch to sphinx/rst fixed-width quoting 2016-06-03 20:58:24 +02:00
Kconfig
Makefile drm: Add helper for simple display pipeline 2016-06-10 17:33:17 +02:00