linux/drivers/gpu/drm
Ville Syrjälä 4655a12b81 drm: Don't overwrite UNVERFIED mode status to OK
The way the mode probing works is this:
1. All modes currently on the mode list are marked as UNVERIFIED
2. New modes are on the probed_modes list (they start with
   status OK)
3. Modes are moved from the probed_modes list to the actual
   mode list. If a mode already on the mode list is deemed
   to match one of the probed modes, the duplicate is dropped
   and the mode status updated to OK. After this the
   probed_modes list will be empty.
4. All modes on the mode list are verified to not violate any
   constraints. Any that do are marked as such.
5. Any mode left with a non-OK status is pruned from the list,
   with an appropriate debug message.

What all this means is that any mode on the original list that
didn't have a duplicate on the probed_modes list, should be left
with status UNVERFIED (or previously could have been left with
some other status, but never OK).

I broke that in
commit 05acaec334 ("drm: Reorganize probed mode validation")
by always assigning something to the mode->status during the validation
step. So any mode from the old list that still passed the validation
would be left on the list with status OK in the end.

Fix this by not doing the basic mode validation unless the mode
already has status OK (meaning it came from the probed_modes list,
or at least a duplicate of it was on that list). This way we will
correctly prune away any mode from the old mode list that didn't
appear on the probed_modes list.

Cc: stable@vger.kernel.org
Cc: Adam Jackson <ajax@redhat.com>
Fixes: 05acaec334 ("drm: Reorganize probed mode validation")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1449177255-9515-2-git-send-email-ville.syrjala@linux.intel.com
Testcase: igt/kms_force_connector_basic/prune-stale-modes
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93332
[danvet: Also applying to drm-misc to avoid too much conflict hell -
there's a big pile of patches from Ville on top of this one.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2015-12-15 11:00:10 +10:00
..
amd drm/amdgpu: fix the lost duplicates checking 2015-12-09 00:18:33 -05:00
armada drm/armada: Convert the probe function to the generic drm_of_component_probe() 2015-10-20 12:01:34 +02:00
ast drm/ast: Initialized data needed to map fbdev memory 2015-11-11 12:27:31 +10:00
atmel-hlcdc drm: Stop using drm_vblank_count() as the hw frame counter 2015-10-07 16:13:52 +02:00
bochs
bridge drm/panel: Changes for v4.4-rc1 2015-11-05 11:07:13 +10:00
cirrus
exynos drm/exynos/gem: remove DMA-mapping hacks used for constructing page array 2015-11-03 11:46:39 +09:00
fsl-dcu drm: Stop using drm_vblank_count() as the hw frame counter 2015-10-07 16:13:52 +02:00
gma500 drm/irq: Use unsigned int pipe in public API 2015-10-06 12:57:47 +02:00
i2c Merge branch 'drm-tda998x-devel' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into drm-next 2015-10-15 14:17:13 +10:00
i810
i915 drm/i915: Do a better job at disabling primary plane in the noatomic case. 2015-12-10 13:33:42 +02:00
imx drm: imx: imx-tve: Fix module autoload for OF platform driver 2015-11-30 22:24:38 +01:00
mga drm/irq: Use unsigned int pipe in public API 2015-10-06 12:57:47 +02:00
mgag200 drm/mgag200: fix kernel hang in cursor code. 2015-11-19 13:20:01 +10:00
msm drm/msm: Remove local fbdev emulation Kconfig option 2015-10-22 15:46:36 -04:00
nouveau Merge branch 'linux-4.4' of https://github.com/skeggsb/linux into drm-fixes 2015-12-09 14:15:58 +10:00
omapdrm drm/omap: fix fbdev pix format to support all platforms 2015-12-14 10:00:22 +02:00
panel spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
qxl Merge tag 'topic/drm-misc-2015-10-19' of git://anongit.freedesktop.org/drm-intel into drm-next 2015-10-20 09:01:49 +10:00
r128 drm/irq: Use unsigned int pipe in public API 2015-10-06 12:57:47 +02:00
radeon radeon: Fix VCE IB test on Big-Endian systems 2015-12-09 00:23:56 -05:00
rcar-du drm: rcar-du: Add support for the R8A7794 DU 2015-10-21 18:52:38 +03:00
rockchip drm/rockchip: Use CRTC vblank event interface 2015-12-02 10:22:21 +08:00
savage
shmobile drm: Stop using drm_vblank_count() as the hw frame counter 2015-10-07 16:13:52 +02:00
sis include/uapi/drm/sis_drm.h: move sis_file_private to drivers/gpu/drm/sis/sis_drv.h 2015-10-16 11:27:46 +10:00
sti drm/sti: load HQVDP firmware the first time HQVDP's plane is used 2015-11-03 13:04:56 +01:00
tdfx
tegra Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
tilcdc drm: Stop using drm_vblank_count() as the hw frame counter 2015-10-07 16:13:52 +02:00
ttm drm/ttm: Fixed a read/write lock imbalance 2015-11-26 15:47:38 +01:00
udl
vc4 drm/vc4: Make sure that planes aren't scaled. 2015-11-17 12:27:03 -08:00
vgem drm/vgem: Drop vgem_drm_gem_mmap 2015-10-19 11:00:44 +02:00
via via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h 2015-10-16 11:27:49 +10:00
virtio virtio-gpu: use no-merge for fill-modes 2015-12-01 10:33:35 +10:00
vmwgfx drm/vmwgfx: Implement the cursor_set2 callback v2 2015-12-08 12:55:46 +01:00
Kconfig drm/vc4: Add KMS support for Raspberry Pi. 2015-10-21 10:33:12 +01:00
Makefile Merge tag 'drm-vc4-next-2015-10-21' of http://github.com/anholt/linux into drm-next 2015-10-22 10:31:17 +10:00
ati_pcigart.c
drm_agpsupport.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_atomic.c drm/atomic: add a drm_atomic_clean_old_fb helper. 2015-11-17 13:02:14 +02:00
drm_atomic_helper.c drm/atomic-helper: Check encoder/crtc constraints 2015-11-19 17:11:13 +02:00
drm_auth.c
drm_bridge.c
drm_bufs.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_cache.c
drm_context.c
drm_crtc.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
drm_crtc_helper.c
drm_crtc_internal.h
drm_debugfs.c
drm_dma.c
drm_dp_helper.c Linux 4.3-rc2 2015-09-24 17:18:41 +02:00
drm_dp_mst_topology.c drm: fix mutex leak in drm_dp_get_mst_branch_device 2015-10-22 08:29:08 +10:00
drm_drv.c drm: Fix an unwanted master inheritance v2 2015-12-04 12:28:14 +10:00
drm_edid.c drm/edid: Round to closest when computing the CEA/HDMI alternate clock 2015-10-20 12:01:29 +02:00
drm_edid_load.c drm: Constify generic_edid_names[] 2015-09-08 13:45:52 +02:00
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c drm/core: Fix old_fb handling in pan_display_atomic. 2015-11-17 13:02:14 +02:00
drm_flip_work.c
drm_fops.c drm: Fix an unwanted master inheritance v2 2015-12-04 12:28:14 +10:00
drm_gem.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
drm_gem_cma_helper.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h drm: move drm_class into drm_sysfs.c 2015-09-09 15:05:17 +02:00
drm_ioc32.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_ioctl.c drm: Enforce unlocked ioctl operation for kms driver ioctls 2015-10-16 15:50:54 +02:00
drm_irq.c drm/nouveau: Fix pre-nv50 pageflip events (v4) 2015-12-04 13:49:38 +10:00
drm_legacy.h
drm_lock.c signals: kill block_all_signals() and unblock_all_signals() 2015-11-06 17:50:42 -08:00
drm_memory.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_mipi_dsi.c
drm_mm.c drm/mm: Do DRM_MM_CREATE_TOP adj_start calculation after color_adjust 2015-09-08 13:45:47 +02:00
drm_modes.c
drm_modeset_lock.c drm/atomic: Make sure lock is held in trylock contexts. 2015-09-08 13:45:53 +02:00
drm_of.c drm: Introduce generic probe function for component based masters. 2015-10-20 12:01:29 +02:00
drm_panel.c
drm_pci.c drm/doc: Update docs about device instance setup 2015-09-30 10:06:06 +02:00
drm_plane_helper.c drm/atomic: Make prepare_fb/cleanup_fb only take state, v3. 2015-09-08 13:45:54 +02:00
drm_platform.c drm/doc: Update docs about device instance setup 2015-09-30 10:06:06 +02:00
drm_prime.c
drm_probe_helper.c drm: Don't overwrite UNVERFIED mode status to OK 2015-12-15 11:00:10 +10:00
drm_rect.c drm: Use DRM_ROTATE_MASK and DRM_REFLECT_MASK 2015-10-05 15:32:51 +02:00
drm_scatter.c
drm_sysfs.c Merge commit '06d1ee32a4d25356a710b49d5e95dbdd68bdf505' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into drm-next 2015-10-16 10:25:28 +10:00
drm_trace.h
drm_trace_points.c
drm_vm.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
drm_vma_manager.c drm/gem: Use kref_get_unless_zero for the weak mmap references 2015-10-19 11:00:44 +02:00