linux-stable/drivers/gpu/drm
Maarten Lankhorst 1592364de3 drm: Resurrect atomic rmfb code, v3
This was somehow lost between v3 and the merged version in Maarten's
patch merged as:

commit f2d580b9a8
Author: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Date:   Wed May 4 14:38:26 2016 +0200

    drm/core: Do not preserve framebuffer on rmfb, v4.

This introduces a slight behavioral change to rmfb. Instead of
disabling a crtc when the primary plane is disabled, we try to
preserve it.

Apart from old versions of the vmwgfx xorg driver, there is
nothing depending on rmfb disabling a crtc. Since vmwgfx is
a legacy driver we can safely only disable the plane with atomic.

If this commit is rejected by the driver then we will still fall
back to the old behavior and turn off the crtc.

v2:
- Remove plane->fb assignment, done by drm_atomic_clean_old_fb.
- Add WARN_ON when atomic_remove_fb fails.
- Always call drm_atomic_state_put.
v3:
- Use drm_drv_uses_atomic_modeset
- Handle the case where the first plane-disable-only commit fails
  with -EINVAL. Some drivers do not support this, fall back to
  disabling all crtc's in this case.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/66fc3da5-697b-1613-0a67-a5293209f0dc@linux.intel.com
2017-02-15 15:40:57 +02:00
..
amd Merge branch 'drm-next-4.11' of git://people.freedesktop.org/~agd5f/linux into drm-next 2017-02-10 10:13:30 +10:00
arc drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
arm drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
armada drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
ast drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
atmel-hlcdc drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
bochs drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
bridge drm/bridge/sii8620: enable interlace modes 2017-02-02 15:15:31 +05:30
cirrus drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
etnaviv drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
exynos Merge branch 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-next 2017-02-08 11:34:56 +10:00
fsl-dcu drm/fsl-dcu: check for clk_prepare_enable() error 2017-02-07 20:28:04 -08:00
gma500 drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
hisilicon drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
i2c
i810 drm/i810: drop device_is_agp callback 2017-01-26 10:44:43 +01:00
i915 drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
imx drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
lib drm: Add a simple generator of random permutations 2016-12-27 12:34:00 +01:00
mediatek drm: mediatek: use crtc helper drm_crtc_from_index() 2017-01-18 09:21:06 -05:00
meson drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
mga drm/mga: remove device_is_agp callback 2017-01-26 10:45:03 +01:00
mgag200 drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
msm Merge branch 'msm-next' of git://people.freedesktop.org/~robclark/linux into drm-next 2017-02-07 11:05:42 +10:00
mxsfb drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
nouveau drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
omapdrm drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
panel drm/panel: simple: Add support for AUO G185HAN01 2016-12-06 17:06:32 +01:00
qxl drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
r128
radeon Merge branch 'drm-next-4.11' of git://people.freedesktop.org/~agd5f/linux into drm-next 2017-02-10 10:13:30 +10:00
rcar-du drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
rockchip drm/rockchip: cdn-dp: fix cdn-dp complie warning 2017-02-07 11:06:01 +08:00
savage drm: Change the return type of the unload hook to void 2017-01-09 11:25:22 +01:00
selftests drm: kselftest for drm_mm and bottom-up allocation 2017-02-03 11:36:49 +01:00
shmobile drm: Change the return type of the unload hook to void 2017-01-09 11:25:22 +01:00
sis drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
sti drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
sun4i drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
tdfx
tegra drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
tilcdc drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
ttm drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
udl drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
vc4 drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
vgem drm/vgem: Switch to reservation_object_lock() helpers 2017-01-24 11:00:23 +01:00
via drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
virtio drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
vmwgfx drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
zte drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
ati_pcigart.c
drm_agpsupport.c drm/i810: drop device_is_agp callback 2017-01-26 10:44:43 +01:00
drm_atomic.c drm: Resurrect atomic rmfb code, v3 2017-02-15 15:40:57 +02:00
drm_atomic_helper.c drm/atomic: fix an error code in mode_fixup() 2017-02-08 16:15:42 +01:00
drm_auth.c drm/core: Use recommened kerneldoc for struct member refs 2017-01-25 16:22:42 +01:00
drm_blend.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_bridge.c drm/bridge: Use recommened kerneldoc for struct member refs 2017-01-02 09:17:26 +01:00
drm_bufs.c
drm_cache.c drm: Update drm_cache.c to pull in the new drm_cache.h 2017-01-24 11:00:22 +01:00
drm_color_mgmt.c drm/color: un-inline drm_color_lut_extract() 2017-01-31 15:31:58 +02:00
drm_connector.c drm/doc: Clarify connector overview 2017-01-26 10:44:33 +01:00
drm_context.c
drm_crtc.c drm: s/drm_crtc_get_hv_timings/drm_mode_get_hv_timings/ 2017-01-26 10:46:28 +01:00
drm_crtc_helper.c drm/kms-helpers: Use recommened kerneldoc for struct member refs 2017-01-25 16:18:57 +01:00
drm_crtc_helper_internal.h
drm_crtc_internal.h drm: Resurrect atomic rmfb code, v3 2017-02-15 15:40:57 +02:00
drm_debugfs.c drm/atomic: Remove drm_atomic_debugfs_cleanup() 2017-01-27 09:02:03 +01:00
drm_debugfs_crc.c drm: crc: Call wake_up_interruptible() each time there is a new CRC entry 2017-01-06 15:23:19 +01:00
drm_dma.c
drm_dp_aux_dev.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c drm/kms-helpers: Use recommened kerneldoc for struct member refs 2017-01-25 16:18:57 +01:00
drm_dp_mst_topology.c drm/dp: Store drm_device in MST topology manager 2017-01-25 06:01:48 +01:00
drm_drv.c drm: Provide a driver hook for drm_dev_release() 2017-02-02 15:58:06 +01:00
drm_dumb_buffers.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_edid.c drm: Clean up the 1366x768 fixup codes 2017-02-01 19:01:47 +02:00
drm_edid_load.c
drm_encoder.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_encoder_slave.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_fb_cma_helper.c drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
drm_fb_helper.c drm: Cancel drm_fb_helper_resume_work on unload 2017-02-08 16:15:42 +01:00
drm_flip_work.c
drm_fops.c drm/core: Use recommened kerneldoc for struct member refs 2017-01-25 16:22:42 +01:00
drm_fourcc.c
drm_framebuffer.c drm: Resurrect atomic rmfb code, v3 2017-02-15 15:40:57 +02:00
drm_gem.c drm/gem|prime|mm: Use recommened kerneldoc for struct member refs 2017-01-25 16:20:21 +01:00
drm_gem_cma_helper.c drm: allow to use mmuless SoC 2017-01-06 11:04:54 +01:00
drm_global.c drm: Update TTM initialization documentation 2016-12-30 12:52:10 +01:00
drm_hashtab.c
drm_info.c
drm_internal.h drm: remove device_is_agp callback 2017-01-26 10:45:14 +01:00
drm_ioc32.c
drm_ioctl.c drm: Export drm_ioctl_permit to kernel-doc 2016-12-30 12:40:48 +01:00
drm_irq.c drm: Nuke ums vgaarb support 2017-01-26 10:45:31 +01:00
drm_kms_helper_common.c
drm_legacy.h drm: compile drm_vm.c only when needed 2017-01-06 11:03:07 +01:00
drm_lock.c drm: Avoid NULL dereference for DRM_LEGACY debug message 2016-11-28 08:39:41 +01:00
drm_memory.c
drm_mipi_dsi.c
drm_mm.c drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
drm_mode_config.c drm: Show leaked connectors upon unload 2017-01-23 09:26:22 +01:00
drm_mode_object.c drm: Get atomic property value even if DRIVER_ATOMIC is not set 2016-12-27 10:44:33 +01:00
drm_modes.c drm: Clean up the 1366x768 fixup codes 2017-02-01 19:01:47 +02:00
drm_modeset_helper.c drm: Convert all helpers to drm_connector_list_iter 2016-12-18 14:33:22 +01:00
drm_modeset_lock.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_of.c drm: Don't include <drm/drm_encoder.h> in <drm/drm_crtc.h> 2016-12-18 16:29:29 +05:30
drm_panel.c
drm_pci.c drm: remove device_is_agp callback 2017-01-26 10:45:14 +01:00
drm_plane.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_plane_helper.c drm/kms-helpers: Use recommened kerneldoc for struct member refs 2017-01-25 16:18:57 +01:00
drm_platform.c drm/core: Use recommened kerneldoc for struct member refs 2017-01-25 16:22:42 +01:00
drm_prime.c drm/prime: Clarify DMA-BUF/GEM Object lifetime 2017-01-27 15:00:26 +01:00
drm_print.c drm/printer: add debug printer 2016-12-30 11:43:40 +01:00
drm_probe_helper.c Merge tag 'drm-misc-next-2017-01-30' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-02-01 08:31:09 +10:00
drm_property.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_rect.c drm/rect: Fix formatting of example code 2016-12-30 13:35:54 +01:00
drm_scatter.c
drm_simple_kms_helper.c drm/doc: use preferred struct reference in kernel-doc 2016-12-30 13:34:59 +01:00
drm_sysfs.c drm/core: Use recommened kerneldoc for struct member refs 2017-01-25 16:22:42 +01:00
drm_trace.h
drm_trace_points.c
drm_vm.c mm: use vmf->address instead of of vmf->virtual_address 2016-12-14 16:04:09 -08:00
drm_vma_manager.c drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
Kconfig drm: fix MMU dependencies 2017-01-12 10:54:52 +01:00
Makefile drm: compile drm_vm.c only when needed 2017-01-06 11:03:07 +01:00