OpenCloudOS-Kernel/drivers/gpu/drm
Tomasz Figa 7caecdbec1 drm/rockchip: Avoid race with vblank count increment
Since VOP does not have a hardware vblank count register, the ongoing
commit might be racing with a requested vblank interrupt, which would
increment the software vblank counter before the changes being committed
actually happen.

To avoid this, we can extend .atomic_flush(), so after it sets cfg_done
bit, it polls the vblank interrupt bit until it's inactive to make sure
that any old vblank interrupt gets to the handler and then uses
synchronize_irq(vop->irq) to make sure the handler finishes running.

The polling case should happen very rarely, but even if, the total wait
time should be relatively low and in practice almost equal to the vop
hardirq handler running time.

Signed-off-by: Tomasz Figa <tfiga@chromium.org>
2016-09-21 06:55:50 -07:00
..
amd Merge branch 'drm-next-4.9' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-09-20 06:17:38 +10:00
arc drm: Don't implement empty prepare_fb()/cleanup_fb() 2016-08-19 10:58:55 +02:00
arm drm/atomic-helper: Add NO_DISABLE_AFTER_MODESET flag support for plane commit 2016-08-29 11:29:37 +02:00
armada drm: drop DRIVER_HAVE_IRQ flag for some drivers 2016-08-16 14:07:43 +02:00
ast drm: Remove superflous linux/fb.h includes 2016-08-12 10:41:39 +02:00
atmel-hlcdc drm/atomic-helper: Add NO_DISABLE_AFTER_MODESET flag support for plane commit 2016-08-29 11:29:37 +02:00
bochs drm: Remove superflous linux/fb.h includes 2016-08-12 10:41:39 +02:00
bridge drm/bridge: analogix_dp: Remove duplicated code 2016-09-21 06:55:48 -07:00
cirrus Merge tag 'topic/drm-misc-2016-08-12' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-08-15 16:46:36 +10:00
etnaviv drm/etnaviv: Don't set drm_device->platformdev 2016-08-16 16:10:43 +02:00
exynos drm/atomic-helper: Add NO_DISABLE_AFTER_MODESET flag support for plane commit 2016-08-29 11:29:37 +02:00
fsl-dcu drm/fsl-dcu: disable clock on error path 2016-09-05 12:32:55 -07:00
gma500 drm/gma500: remove unnecessary config_enabled() guard 2016-08-24 07:43:42 +02:00
hisilicon drm: Don't implement empty prepare_fb()/cleanup_fb() 2016-08-19 10:58:55 +02:00
i2c Merge branch 'drm-tda998x-devel' of git://git.armlinux.org.uk/~rmk/linux-arm into drm-next 2016-09-13 10:28:17 +10:00
i810 drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
i915 Merge tag 'drm-intel-next-2016-09-19' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-09-20 06:23:22 +10:00
imx drm/imx: parallel-display: detach bridge or panel on unbind 2016-08-29 16:30:48 +02:00
mediatek drm/atomic-helper: Add NO_DISABLE_AFTER_MODESET flag support for plane commit 2016-08-29 11:29:37 +02:00
mga drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
mgag200 drm/mgag200: fix error return code in mgag200fb_create() 2016-08-16 09:10:16 +02:00
msm drm/fence: allow fence waiting to be interrupted by userspace 2016-09-12 16:59:15 -04:00
nouveau Merge branch 'drm-next-4.9' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-08-25 12:59:50 +10:00
omapdrm drm/atomic-helper: Add NO_DISABLE_AFTER_MODESET flag support for plane commit 2016-08-29 11:29:37 +02:00
panel drm/panel: simple: Add support for Starry KR122EA0SRA panel 2016-07-11 14:30:43 +02:00
qxl Merge branch 'drm-next-4.9' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-09-20 06:17:38 +10:00
r128 drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
radeon Merge branch 'drm-next-4.9' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-09-20 06:17:38 +10:00
rcar-du drm/atomic-helper: Add NO_DISABLE_AFTER_MODESET flag support for plane commit 2016-08-29 11:29:37 +02:00
rockchip drm/rockchip: Avoid race with vblank count increment 2016-09-21 06:55:50 -07:00
savage GPU-DRM-Savage: Use memdup_user() rather than duplicating 2016-08-19 10:58:55 +02:00
shmobile drm/shmobile: make fbdev support really optional 2016-07-18 09:11:37 +02:00
sis drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
sti drm/atomic-helper: Add NO_DISABLE_AFTER_MODESET flag support for plane commit 2016-08-29 11:29:37 +02:00
sun4i Allwinner DRM changes for 4.9 2016-09-13 10:24:52 +10:00
tdfx drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
tegra drm/atomic-helper: Add NO_DISABLE_AFTER_MODESET flag support for plane commit 2016-08-29 11:29:37 +02:00
tilcdc drm/tilcdc: Choose console BPP that supports RGB 2016-09-01 22:32:23 +03:00
ttm drm/ttm: remove cpu_address member from ttm_tt 2016-09-16 15:53:05 -04:00
udl drm/udl: implement usb_driver suspend/resume. 2016-09-06 13:56:42 -04:00
vc4 This pull request brings in interlaced vblank timing and a 3D 2016-09-02 15:50:19 +10:00
vgem drm/vgem: Fix non static symbol warning 2016-07-19 15:01:52 +02:00
via drm: Mark up legacy/dri1 drivers with DRM_LEGACY 2016-08-08 10:05:22 +02:00
virtio drm/atomic-helper: Add NO_DISABLE_AFTER_MODESET flag support for plane commit 2016-08-29 11:29:37 +02:00
vmwgfx Merge branch 'drm-next-4.9' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-09-20 06:17:38 +10:00
Kconfig Revert "drm: make DRI1 drivers depend on BROKEN" 2016-09-01 06:16:12 +10:00
Makefile Merge tag 'topic/drm-misc-2016-08-31' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-09-01 06:15:38 +10:00
ati_pcigart.c
drm_agpsupport.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_atomic.c drm: Move property validation to a helper, v2. 2016-09-12 10:32:49 -04:00
drm_atomic_helper.c drm/fence: allow fence waiting to be interrupted by userspace 2016-09-12 16:59:15 -04:00
drm_auth.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_blend.c drm/doc: Include new drm_blend.c 2016-08-16 18:49:20 +02:00
drm_bridge.c drm/bridge: introduce bridge detaching mechanism 2016-08-29 09:13:00 +05:30
drm_bufs.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_cache.c drm: Restore double clflush on the last partial cacheline 2016-07-12 15:57:13 +02:00
drm_connector.c drm: document drm_display_info 2016-08-16 18:49:47 +02:00
drm_context.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_crtc.c drm: Fix error path in drm_mode_page_flip_ioctl() 2016-09-08 11:57:13 +03:00
drm_crtc_helper.c drm/kms-helpers: Extract drm_modeset_helper.[hc] 2016-08-16 16:10:19 +02:00
drm_crtc_helper_internal.h drm: Don't export dp-aux devnode functions 2016-08-16 18:49:26 +02:00
drm_crtc_internal.h drm: Move property validation to a helper, v2. 2016-09-12 10:32:49 -04:00
drm_debugfs.c drm: Nuke legacy maps debugfs files 2016-06-16 10:16:11 +02:00
drm_dma.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_dp_aux_dev.c drm: Don't export dp-aux devnode functions 2016-08-16 18:49:26 +02:00
drm_dp_dual_mode_helper.c
drm_dp_helper.c Merge tag 'drm-intel-next-2016-09-19' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-09-20 06:23:22 +10:00
drm_dp_mst_topology.c drm/dp-mst: Missing kernel doc 2016-07-19 10:31:53 +02:00
drm_drv.c drm: Avoid calling dev_printk(.dev = NULL) 2016-08-22 12:05:06 -04:00
drm_edid.c drm/edid: CEA mode 64 1080p100 vsync pulse width incorrect 2016-08-18 09:37:10 -07:00
drm_edid_load.c
drm_encoder.c drm/doc: Polish kerneldoc for encoders 2016-08-29 15:37:08 +02:00
drm_encoder_slave.c
drm_fb_cma_helper.c Merge branch 'for-next' of http://git.agner.ch/git/linux-drm-fsl-dcu into drm-next 2016-07-02 16:21:35 +10:00
drm_fb_helper.c drm/fb-helper: Make docs for fb_set_suspend wrappers consistent 2016-08-23 21:12:56 +02:00
drm_flip_work.c
drm_fops.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_fourcc.c drm: move drm_mode_legacy_fb_format to drm_fourcc.c 2016-08-29 15:37:28 +02:00
drm_framebuffer.c drm/doc: Update drm_framebuffer docs 2016-08-16 17:11:19 +02:00
drm_gem.c Merge tag 'drm-for-v4.8' of git://people.freedesktop.org/~airlied/linux 2016-08-01 21:44:08 -04:00
drm_gem_cma_helper.c
drm_global.c drm: modify drm_global_item_ref to avoid two times of writing ref->object 2016-09-14 15:10:29 -04:00
drm_hashtab.c drm: fix signed integer overflow 2016-09-06 13:56:41 -04:00
drm_info.c drm: Extract drm_is_current_master 2016-06-21 21:58:12 +02:00
drm_internal.h drm: Nuke SET_UNIQUE ioctl 2016-06-21 21:43:46 +02:00
drm_ioc32.c drm: Only use compat ioctl for addfb2 on X86/IA64 2016-09-15 10:42:11 -04:00
drm_ioctl.c Merge tag 'topic/drm-misc-2016-08-31' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-09-01 06:15:38 +10:00
drm_irq.c drm/doc: Fix more kerneldoc/sphinx warnings 2016-08-16 16:09:58 +02:00
drm_kms_helper_common.c drm: Don't export dp-aux devnode functions 2016-08-16 18:49:26 +02:00
drm_legacy.h drm: Hide hw.lock cleanup in filp->release better 2016-06-16 10:16:37 +02:00
drm_lock.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_memory.c drm: Fix broken use of _PAGE_NO_CACHE on powerpc 2016-07-12 13:20:39 +02:00
drm_mipi_dsi.c drm/dsi: Make set_tear_scanline command consistent 2016-07-12 13:19:26 +02:00
drm_mm.c drm: Declare that create drm_mm nodes with size 0 is illegal 2016-08-08 10:05:21 +02:00
drm_mode_object.c drm: Move property validation to a helper, v2. 2016-09-12 10:32:49 -04:00
drm_modes.c drm: update kerneldoc for changes introduced by commits "16fadc2568e9" and "9671e228fb78" 2016-08-16 17:32:08 +02:00
drm_modeset_helper.c drm/kms-helpers: Extract drm_modeset_helper.[hc] 2016-08-16 16:10:19 +02:00
drm_modeset_lock.c
drm_of.c
drm_panel.c
drm_pci.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_plane_helper.c drm: Fix kerneldoc in drm_plane_helper.c 2016-08-16 18:50:04 +02:00
drm_platform.c drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
drm_prime.c drm/prime: fix error path deadlock fail 2016-06-13 17:32:18 +02:00
drm_probe_helper.c drm: drm_probe_helper: Fix output_poll_work scheduling 2016-08-31 13:23:30 +02:00
drm_property.c Revert "drm: Unify handling of blob and object properties" 2016-09-07 13:24:22 +03:00
drm_rect.c drm: Warn about negative sizes when calculating scale factor 2016-08-08 14:17:56 -04:00
drm_scatter.c drm: Used DRM_LEGACY for all legacy functions 2016-08-08 10:05:23 +02:00
drm_simple_kms_helper.c drm: simple_kms_helper: add support for bridges 2016-08-29 09:15:37 +05:30
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: Fix broken use of _PAGE_NO_CACHE on powerpc 2016-07-12 13:20:39 +02:00
drm_vma_manager.c drm: Convert drm_vma_manager to embedded interval-tree in drm_mm 2016-08-08 10:05:17 +02:00