linux-pinenote/drivers/gpu/drm
Matt Roper 140fd38dc4 drm/i915: Hold runtime PM during plane commit
During plane operations, we read/write some registers that only operate
properly if we're not runtime suspended.  At the moment we're not
holding the runtime PM reference across the whole plane operation, so
there's a potential for problems.

This issue was already partially addressed by commit

        commit d6dd6843ff
        Author: Paulo Zanoni <paulo.r.zanoni@intel.com>
        Date:   Fri Aug 15 15:59:32 2014 -0300

            drm/i915: fix plane/cursor handling when runtime suspended

which took care of holding the runtime PM reference during the pin and
fence operations for plane updates.  However there are still a few
actual plane registers that we also need to hold the runtime PM
reference for.  Recent refactoring patches in preparation for atomic
have rearranged the code and made it increasingly likely that the
hardware will have time to suspend between the pin/fence operation and
the actual register writes. Examples of such registers are the stuff
touched by ivb_get_colorkey.

The solution here grabs the runtime PM reference around the 'commit'
operation for planes, which should cover all the relevant register
reads/writes.

Note that this has only been exposed with

commit 6beb8c23eb
Author: Matt Roper <matthew.d.roper@intel.com>
Date:   Mon Dec 1 15:40:14 2014 -0800

    drm/i915: Consolidate plane 'prepare' functions (v2)

so doesn't need to be ported to 3.19.

Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87180
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Testcase: igt/pm-rpm/legacy-planes
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
[danvet: Augment commit message with information Paulo supplied.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-12-17 21:32:59 +01:00
..
amd amdkfd: delete some dead code 2014-11-25 19:43:29 +03:00
armada Merge tag 'drm-intel-fixes-2014-11-19' into drm-intel-next-queued 2014-11-19 18:17:38 +01:00
ast drm: Move drm_crtc_init from drm_crtc.h to drm_plane_helper.h 2014-11-05 00:14:55 +01:00
bochs bochs: add page_flip 2014-11-20 11:27:31 +10:00
bridge
cirrus drm/cirrus: allow 32bpp framebuffers for cirrus drm 2014-11-20 11:42:46 +10:00
exynos Linux 3.18-rc7 2014-12-02 10:58:33 +10:00
gma500 drm/gma500: add support for atom e6xx lpc lvds i2c 2014-12-02 13:42:49 +10:00
i2c drm: Add adv7511 encoder driver 2014-11-26 20:09:40 +02:00
i810
i915 drm/i915: Hold runtime PM during plane commit 2014-12-17 21:32:59 +01:00
imx drm: imx: Move imx-drm driver out of staging 2014-11-26 09:40:39 +10:00
mga
mgag200 drm: Move drm_crtc_init from drm_crtc.h to drm_plane_helper.h 2014-11-05 00:14:55 +01:00
msm drm/msm: switch to atomic-helpers iterator macros 2014-11-27 15:39:09 +01:00
nouveau Merge tag 'drm-intel-next-2014-11-21-fixed' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-12-03 08:25:59 +10:00
omapdrm drm: omapdrm: remove unused variable 2014-11-20 11:29:39 +10:00
panel drm/panel: Add Sharp LQ101R1SX01 support 2014-11-13 13:56:19 +01:00
qxl drm/qxl: drop unused mode private pointer 2014-11-15 10:15:30 +10:00
r128 drm: remove unnecessary sizeof(u8) 2014-11-20 11:30:37 +10:00
radeon Linux 3.18-rc7 2014-12-02 10:58:33 +10:00
rcar-du drm: rcar-du: Fix NULL encoder pointer dereference 2014-12-03 08:28:48 +10:00
savage
shmobile drm: Move drm_crtc_init from drm_crtc.h to drm_plane_helper.h 2014-11-05 00:14:55 +01:00
sis
sti drm: Move drm_crtc_init from drm_crtc.h to drm_plane_helper.h 2014-11-05 00:14:55 +01:00
tdfx
tegra Linux 3.18-rc7 2014-12-02 10:58:33 +10:00
tilcdc drm/tilcdc: Deletion of an unnecessary check before the function call "drm_fbdev_cma_hotplug_event" 2014-11-21 12:16:31 +10:00
ttm drm/ttm: Avoid memory allocation from shrinker functions. 2014-11-20 11:31:56 +10:00
udl drm/udl: properly check for error pointers 2014-11-26 10:03:18 +10:00
via
vmwgfx drm/vmwgfx: Deletion of an unnecessary check before the function call "vfree" 2014-11-21 12:16:40 +10:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic.c drm/atomic: track bitmask of planes attached to crtc 2014-11-27 15:38:15 +01:00
drm_atomic_helper.c drm/atomic: clear plane's CRTC and FB when shutting down 2014-11-27 15:39:11 +01:00
drm_auth.c
drm_bufs.c
drm_cache.c
drm_context.c
drm_crtc.c drm: add helper to get crtc timings (v5) 2014-12-05 21:20:25 +01:00
drm_crtc_helper.c drm/atomic: Refcounting for plane_state->fb 2014-11-06 21:08:37 +01:00
drm_crtc_internal.h
drm_debugfs.c
drm_dma.c
drm_dp_helper.c drm/dp: Add counters in the drm_dp_aux struct for I2C NACKs and DEFERs 2014-11-05 14:03:22 +01:00
drm_dp_mst_topology.c drm/dp/mst: Handle invalid link bandwidth from DPCD gracefully 2014-11-15 09:31:34 +10:00
drm_drv.c drm: Document that drm_dev_alloc doesn't need a parent 2014-11-25 13:12:42 +01:00
drm_edid.c Merge tag 'drm-intel-next-2014-11-21-fixed' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-12-03 08:25:59 +10:00
drm_edid_load.c drm/edid: Deletion of an unnecessary check before the function call "release_firmware" 2014-11-21 12:16:27 +10:00
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c drm: Remove compiler BUG_ON() test 2014-11-04 09:47:45 +01:00
drm_flip_work.c drm: flip-work: change drm_flip_work_init prototype 2014-11-15 09:29:14 +10:00
drm_fops.c drm: Implement O_NONBLOCK support on /dev/dri/cardN 2014-10-08 15:07:07 +02:00
drm_gem.c drm: Sanitize DRM_IOCTL_MODE_CREATE_DUMB input 2014-11-15 09:50:21 +10:00
drm_gem_cma_helper.c drm/cma: Remove call to drm_gem_free_mmap_offset() 2014-11-13 13:27:33 +01:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c
drm_irq.c drm/irq: BUG_ON() -> WARN_ON() 2014-11-20 11:33:51 +10:00
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c drm/dsi: Do not require .owner field to be set 2014-11-13 13:56:17 +01:00
drm_mm.c
drm_modes.c drm: add helper to get crtc timings (v5) 2014-12-05 21:20:25 +01:00
drm_modeset_lock.c drm: Per-plane locking 2014-11-12 17:56:12 +10:00
drm_of.c
drm_panel.c
drm_pci.c
drm_plane_helper.c drm/plane: Pass old state to ->atomic_update() 2014-11-25 13:27:58 +01:00
drm_platform.c
drm_prime.c drm: Miscellaneous fixes for v3.19-rc1 2014-11-15 09:37:20 +10:00
drm_probe_helper.c drm: Fix DRM_FORCE_ON_DIGITAL use 2014-11-04 09:45:04 +01:00
drm_rect.c
drm_scatter.c
drm_sysfs.c
drm_trace.h
drm_trace_points.c
drm_vm.c
drm_vma_manager.c
Kconfig drm: imx: Move imx-drm driver out of staging 2014-11-26 09:40:39 +10:00
Makefile drm: imx: Move imx-drm driver out of staging 2014-11-26 09:40:39 +10:00