1. 17 9月, 2019 1 次提交
  2. 29 8月, 2019 1 次提交
  3. 12 6月, 2019 1 次提交
    • J
      drm: add fallback override/firmware EDID modes workaround · 48eaeb76
      Jani Nikula 提交于
      We've moved the override and firmware EDID (simply "override EDID" from
      now on) handling to the low level drm_do_get_edid() function in order to
      transparently use the override throughout the stack. The idea is that
      you get the override EDID via the ->get_modes() hook.
      
      Unfortunately, there are scenarios where the DDC probe in drm_get_edid()
      called via ->get_modes() fails, although the preceding ->detect()
      succeeds.
      
      In the case reported by Paul Wise, the ->detect() hook,
      intel_crt_detect(), relies on hotplug detect, bypassing the DDC. In the
      case reported by Ilpo Järvinen, there is no ->detect() hook, which is
      interpreted as connected. The subsequent DDC probe reached via
      ->get_modes() fails, and we don't even look at the override EDID,
      resulting in no modes being added.
      
      Because drm_get_edid() is used via ->detect() all over the place, we
      can't trivially remove the DDC probe, as it leads to override EDID
      effectively meaning connector forcing. The goal is that connector
      forcing and override EDID remain orthogonal.
      
      Generally, the underlying problem here is the conflation of ->detect()
      and ->get_modes() via drm_get_edid(). The former should just detect, and
      the latter should just get the modes, typically via reading the EDID. As
      long as drm_get_edid() is used in ->detect(), it needs to retain the DDC
      probe. Or such users need to have a separate DDC probe step first.
      
      The EDID caching between ->detect() and ->get_modes() done by some
      drivers is a further complication that prevents us from making
      drm_do_get_edid() adapt to the two cases.
      
      Work around the regression by falling back to a separate attempt at
      getting the override EDID at drm_helper_probe_single_connector_modes()
      level. With a working DDC and override EDID, it'll never be called; the
      override EDID will come via ->get_modes(). There will still be a failing
      DDC probe attempt in the cases that require the fallback.
      
      v2:
      - Call drm_connector_update_edid_property (Paul)
      - Update commit message about EDID caching (Daniel)
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107583Reported-by: NPaul Wise <pabs3@bonedaddy.net>
      Cc: Paul Wise <pabs3@bonedaddy.net>
      References: http://mid.mail-archive.com/alpine.DEB.2.20.1905262211270.24390@whs-18.cs.helsinki.fiReported-by: NIlpo Järvinen <ilpo.jarvinen@cs.helsinki.fi>
      Cc: Ilpo Järvinen <ilpo.jarvinen@cs.helsinki.fi>
      Suggested-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      References: 15f080f0 ("drm/edid: respect connector force for drm_get_edid ddc probe")
      Fixes: 53fd40a9 ("drm: handle override and firmware EDID at drm_do_get_edid() level")
      Cc: <stable@vger.kernel.org> # v4.15+ 56a2b7f2 drm/edid: abstract override/firmware EDID retrieval
      Cc: <stable@vger.kernel.org> # v4.15+
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Harish Chegondi <harish.chegondi@intel.com>
      Tested-by: NPaul Wise <pabs3@bonedaddy.net>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190610093054.28445-1-jani.nikula@intel.com
      48eaeb76
  4. 05 6月, 2019 1 次提交
    • C
      drm: Flush output polling on shutdown · 3b295cb1
      Chris Wilson 提交于
      We need to mark the output polling as disabled to prevent concurrent
      irqs from queuing new work as shutdown the probe -- causing that work to
      execute after we have freed the structs:
      
      <4> [341.846490] DEBUG_LOCKS_WARN_ON(mutex_is_locked(lock))
      <4> [341.846497] WARNING: CPU: 3 PID: 3300 at kernel/locking/mutex-debug.c:103 mutex_destroy+0x49/0x50
      <4> [341.846508] Modules linked in: i915(-) vgem thunderbolt snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic mei_hdcp x86_pkg_temp_thermal coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_hda_codec snd_hwdep snd_hda_core snd_pcm mcs7830 btusb usbnet btrtl mii btbcm btintel bluetooth ecdh_generic ecc mei_me mei prime_numbers i2c_hid pinctrl_sunrisepoint pinctrl_intel [last unloaded: i915]
      <4> [341.846546] CPU: 3 PID: 3300 Comm: i915_module_loa Tainted: G     U            5.2.0-rc2-CI-CI_DRM_6175+ #1
      <4> [341.846553] Hardware name: Dell Inc. XPS 13 9360/0823VW, BIOS 2.9.0 07/09/2018
      <4> [341.846560] RIP: 0010:mutex_destroy+0x49/0x50
      <4> [341.846565] Code: 00 00 5b c3 e8 a8 9f 3b 00 85 c0 74 ed 8b 05 3e 55 23 01 85 c0 75 e3 48 c7 c6 00 d0 08 82 48 c7 c7 a8 aa 07 82 e8 e7 08 fa ff <0f> 0b eb cc 0f 1f 00 48 b8 11 11 11 11 11 11 11 11 48 89 76 20 48
      <4> [341.846578] RSP: 0018:ffffc900006cfdb0 EFLAGS: 00010286
      <4> [341.846583] RAX: 0000000000000000 RBX: ffff88826759a168 RCX: 0000000000000000
      <4> [341.846589] RDX: 0000000000000002 RSI: 0000000000000000 RDI: ffffffff8112844c
      <4> [341.846595] RBP: ffff8882708fa548 R08: 0000000000000000 R09: 0000000000039600
      <4> [341.846601] R10: 0000000000000000 R11: 0000000000000ce4 R12: ffffffffa07de1e0
      <4> [341.846607] R13: 0000000000000000 R14: 0000000000000000 R15: ffffffffa07de2d0
      <4> [341.846613] FS:  00007f62b5ae0e40(0000) GS:ffff888276380000(0000) knlGS:0000000000000000
      <4> [341.846620] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      <4> [341.846626] CR2: 000055a4e064f4a0 CR3: 0000000266b16006 CR4: 00000000003606e0
      <4> [341.846632] Call Trace:
      <4> [341.846639]  drm_fb_helper_fini.part.17+0xb3/0x100
      <4> [341.846682]  intel_fbdev_fini+0x20/0x80 [i915]
      <4> [341.846722]  intel_modeset_cleanup+0x9a/0x140 [i915]
      <4> [341.846750]  i915_driver_unload+0xa3/0x100 [i915]
      <4> [341.846778]  i915_pci_remove+0x19/0x30 [i915]
      <4> [341.846784]  pci_device_remove+0x36/0xb0
      <4> [341.846790]  device_release_driver_internal+0xd3/0x1b0
      <4> [341.846795]  driver_detach+0x3f/0x80
      <4> [341.846800]  bus_remove_driver+0x53/0xd0
      <4> [341.846805]  pci_unregister_driver+0x25/0xa0
      <4> [341.846843]  i915_exit+0x16/0x1c [i915]
      <4> [341.846849]  __se_sys_delete_module+0x162/0x210
      <4> [341.846855]  ? trace_hardirqs_off_thunk+0x1a/0x1c
      <4> [341.846859]  ? do_syscall_64+0xd/0x1c0
      <4> [341.846864]  do_syscall_64+0x55/0x1c0
      <4> [341.846869]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
      <4> [341.846875] RIP: 0033:0x7f62b51871b7
      <4> [341.846881] Code: 73 01 c3 48 8b 0d d1 8c 2c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 b8 b0 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d a1 8c 2c 00 f7 d8 64 89 01 48
      <4> [341.846897] RSP: 002b:00007ffe7a227138 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
      <4> [341.846904] RAX: ffffffffffffffda RBX: 00007ffe7a2272b0 RCX: 00007f62b51871b7
      <4> [341.846910] RDX: 0000000000000001 RSI: 0000000000000800 RDI: 0000557cd6b55948
      <4> [341.846916] RBP: 0000557cd6b558e0 R08: 0000557cd6b5594c R09: 00007ffe7a227160
      <4> [341.846922] R10: 00007ffe7a226134 R11: 0000000000000206 R12: 0000000000000000
      <4> [341.846927] R13: 00007ffe7a227820 R14: 0000000000000000 R15: 0000000000000000
      <4> [341.846936] irq event stamp: 3547847
      <4> [341.846940] hardirqs last  enabled at (3547847): [<ffffffff819aad2c>] _raw_spin_unlock_irqrestore+0x4c/0x60
      <4> [341.846949] hardirqs last disabled at (3547846): [<ffffffff819aab9d>] _raw_spin_lock_irqsave+0xd/0x50
      <4> [341.846957] softirqs last  enabled at (3547376): [<ffffffff81c0033a>] __do_softirq+0x33a/0x4b9
      <4> [341.846966] softirqs last disabled at (3547367): [<ffffffff810b6379>] irq_exit+0xa9/0xc0
      <4> [341.846973] WARNING: CPU: 3 PID: 3300 at kernel/locking/mutex-debug.c:103 mutex_destroy+0x49/0x50
      <4> [341.846980] ---[ end trace ba94ca8952ba970e ]---
      <7> [341.866547] [drm:intel_dp_detect [i915]] MST support? port A: no, sink: no, modparam: yes
      <7> [341.890480] [drm:drm_add_display_info] non_desktop set to 0
      <7> [341.890530] [drm:drm_add_edid_modes] ELD: no CEA Extension found
      <7> [341.890537] [drm:drm_add_display_info] non_desktop set to 0
      <7> [341.890578] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:86:eDP-1] probed modes :
      <7> [341.890589] [drm:drm_mode_debug_printmodeline] Modeline "3200x1800": 60 373250 3200 3248 3280 3360 1800 1803 1808 1852 0x48 0xa
      <7> [341.890602] [drm:drm_mode_debug_printmodeline] Modeline "3200x1800": 48 298600 3200 3248 3280 3360 1800 1803 1808 1852 0x40 0xa
      <4> [341.890628] general protection fault: 0000 [#1] PREEMPT SMP PTI
      <4> [341.890636] CPU: 0 PID: 508 Comm: kworker/0:4 Tainted: G     U  W         5.2.0-rc2-CI-CI_DRM_6175+ #1
      <4> [341.890646] Hardware name: Dell Inc. XPS 13 9360/0823VW, BIOS 2.9.0 07/09/2018
      <4> [341.890655] Workqueue: events output_poll_execute
      <4> [341.890663] RIP: 0010:drm_setup_crtcs+0x13e/0xbe0
      <4> [341.890669] Code: 00 41 8b 44 24 58 85 c0 0f 8e f9 01 00 00 44 8b 6c 24 20 44 8b 74 24 28 31 db 31 ed 49 8b 44 24 60 48 63 d5 44 89 ee 83 c5 01 <48> 8b 04 d0 44 89 f2 48 8b 38 48 8b 87 88 01 00 00 48 8b 40 20 e8
      <4> [341.890686] RSP: 0018:ffffc9000033fd40 EFLAGS: 00010202
      <4> [341.890692] RAX: 6b6b6b6b6b6b6b6b RBX: 0000000000000002 RCX: 0000000000000000
      <4> [341.890700] RDX: 0000000000000001 RSI: 0000000000000c80 RDI: 00000000ffffffff
      <4> [341.890707] RBP: 0000000000000002 R08: 0000000000000000 R09: 0000000000000000
      <4> [341.890715] R10: 0000000000000c80 R11: 0000000000000000 R12: ffff888267599fe8
      <4> [341.890722] R13: 0000000000000c80 R14: 0000000000000708 R15: 0000000000000007
      <4> [341.890730] FS:  0000000000000000(0000) GS:ffff888276200000(0000) knlGS:0000000000000000
      <4> [341.890739] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      <4> [341.890745] CR2: 000055a4e064f4a0 CR3: 000000026d234003 CR4: 00000000003606f0
      <4> [341.890752] Call Trace:
      <4> [341.890760]  drm_fb_helper_hotplug_event.part.24+0x89/0xb0
      <4> [341.890768]  drm_kms_helper_hotplug_event+0x21/0x30
      <4> [341.890774]  output_poll_execute+0x9d/0x1a0
      <4> [341.890782]  process_one_work+0x245/0x610
      <4> [341.890790]  worker_thread+0x37/0x380
      <4> [341.890796]  ? process_one_work+0x610/0x610
      <4> [341.890802]  kthread+0x119/0x130
      <4> [341.890808]  ? kthread_park+0x80/0x80
      <4> [341.890815]  ret_from_fork+0x3a/0x50
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109964Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NImre Deak <imre.deak@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190603135910.15979-2-chris@chris-wilson.co.uk
      3b295cb1
  5. 28 5月, 2019 1 次提交
  6. 24 1月, 2019 1 次提交
  7. 14 7月, 2018 2 次提交
  8. 10 7月, 2018 1 次提交
  9. 05 7月, 2018 1 次提交
  10. 17 2月, 2018 1 次提交
  11. 30 1月, 2018 1 次提交
    • V
      drm/modes: Provide global mode_valid hook · 75a655e0
      Ville Syrjälä 提交于
      Allow drivers to provide a device wide .mode_valid() hook in addition to
      the already existing crtc/encoder/bridge/connector hooks. This can be
      used to validate device/driver wide constraings without having to add
      those to the other hooks. And since we call this hook also for user
      modes later on in the modeset we don't have to worry about anything the
      hook has already rejected.
      
      I also have some further ideas for this hook. Eg. we could replace the
      drm_mode_set_crtcinfo(HALVE_V) call in drm_mode_convert_umode()/etc.
      with a driver specific variant via this hook. At least on i915 we would
      like to pass CRTC_STEREO_DOUBLE to that function instead, and then
      we could safely use the crtc_ timings in all our .mode_valid() hooks,
      which would allow us to reuse those hooks for validating the
      adjusted_mode during a modeset.
      
      v2: Fix the language fails in the kernel docs (Daniel)
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171114183258.16976-10-ville.syrjala@linux.intel.comReviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      75a655e0
  12. 01 12月, 2017 1 次提交
  13. 12 10月, 2017 1 次提交
  14. 19 9月, 2017 1 次提交
  15. 15 7月, 2017 1 次提交
    • S
      drm: add helper to validate YCBCR420 modes · d8523153
      Shashank Sharma 提交于
      YCBCR420 modes are supported only on HDMI 2.0 capable sources.
      This patch adds:
      - A drm helper to validate YCBCR420-only mode on a particular
        connector. This function will help pruning the YCBCR420-only
        modes from the connector's modelist.
      - A bool variable (ycbcr_420_allowed) in the drm connector structure.
        While handling the EDID from HDMI 2.0 sinks, its important to know
        if the source is capable of handling YCBCR420 output, so that no
        YCBCR 420 modes will be listed for sources which can't handle it.
        A driver should set this variable if it wants to see YCBCR420 modes
        in the modedb.
      
      V5: Introduced the patch in series.
      V6: Squashed two patches (validate YCBCR420 and add YCBCR420
      	   identifier)
      V7: Addressed review comments from Vile:
          - Move this patch before we add 420 modes from EDID.
          - No need for drm_valid_cea_vic() check, function back to non-static.
          - Update MODE_STATUS with NO_420 condition.
          - Introduce y420_vdb_modes variable in this patch
      
      Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
      Signed-off-by: NShashank Sharma <shashank.sharma@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1499960000-9232-6-git-send-email-shashank.sharma@intel.com
      [vsyrjala: Drop the now bogus EXPORT_SYMBOL(drm_valid_cea_vic)]
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      d8523153
  16. 30 5月, 2017 2 次提交
  17. 07 4月, 2017 1 次提交
  18. 05 4月, 2017 1 次提交
  19. 28 2月, 2017 2 次提交
  20. 21 2月, 2017 1 次提交
  21. 27 1月, 2017 1 次提交
    • D
      Reinstate "drm/probe-helpers: Drop locking from poll_enable"" · c4d79c22
      Dave Airlie 提交于
      This reverts commit 54a07c7b,
      and reinstates the original.
      
      [airlied: this might be a bad plan for git].
      
      commit 3846fd9b
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Wed Jan 11 10:01:17 2017 +0100
      
          drm/probe-helpers: Drop locking from poll_enable
      
          It was only needed to protect the connector_list walking, see
      
          commit 8c4ccc4a
          Author: Daniel Vetter <daniel.vetter@ffwll.ch>
          Date:   Thu Jul 9 23:44:26 2015 +0200
      
              drm/probe-helper: Grab mode_config.mutex in poll_init/enable
      
          Unfortunately the commit message of that patch fails to mention that
          the new locking check was for the connector_list.
      
          But that requirement disappeared in
      
          commit c36a3254
          Author: Daniel Vetter <daniel.vetter@ffwll.ch>
          Date:   Thu Dec 15 16:58:43 2016 +0100
      
              drm: Convert all helpers to drm_connector_list_iter
      
          and so we can drop this again.
      
          This fixes a locking inversion on nouveau, where the rpm code needs to
          re-enable. But in other places the rpm_get() calls are nested within
          the big modeset locks.
      
          While at it, also improve the kerneldoc for these two functions a
          notch.
      
          v2: Update the kerneldoc even more to explain that these functions
          can't be called concurrently, or bad things happen (Chris).
      c4d79c22
  22. 26 1月, 2017 1 次提交
  23. 25 1月, 2017 1 次提交
  24. 13 1月, 2017 1 次提交
  25. 10 1月, 2017 1 次提交
  26. 30 12月, 2016 1 次提交
  27. 18 12月, 2016 1 次提交
  28. 06 12月, 2016 1 次提交
  29. 01 12月, 2016 1 次提交
  30. 31 8月, 2016 1 次提交
    • P
      drm: drm_probe_helper: Fix output_poll_work scheduling · 339fd362
      Peter Ujfalusi 提交于
      drm_kms_helper_poll_enable_locked() should check if we have delayed event
      pending and if we have, schedule the work to run without delay.
      
      Currently the output_poll_work is only scheduled if any of the connectors
      have DRM_CONNECTOR_POLL_CONNECT or DRM_CONNECTOR_POLL_DISCONNECT with
      DRM_OUTPUT_POLL_PERIOD delay. It does not matter if we have delayed event
      already registered to be handled. The detection will be delayd by
      DRM_OUTPUT_POLL_PERIOD in any case.
      Furthermore if none of the connectors are marked as POLL_CONNECT or
      POLL_DISCONNECT because all connectors are either POLL_HPD or they are
      always connected: the output_poll_work will not run at all even if we
      have delayed event marked.
      
      When none of the connectors require polling, their initial status change
      from unknown to connected/disconnected is not going to be handled until
      the first kms application starts or if we have fb console enabled.
      
      Note that in general the output poll work should be enabled already
      when this happens, but at driver load usually the first probe happens
      before the output polling is enabled. This patch fixes this case.
      Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com>
      [danvet: Note when exactly this is an issue, since the probe code
      schedules the poll work itself already.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/20160831110905.31289-1-peter.ujfalusi@ti.com
      339fd362
  31. 02 6月, 2016 1 次提交
    • C
      drm: Only create a cmdline mode if no probed modes match · 5f0c3f99
      Chris Wilson 提交于
      The intention of using video=<connector>:<mode> is primarily to select
      the user's preferred resolution at startup. Currently we always create a
      new mode irrespective of whether the monitor has a native mode at the
      desired resolution. This has the issue that we may then select the fake
      mode rather the native mode during fb_helper->inital_config() and so
      if the fake mode is invalid we then end up with a loss of signal. Oops.
      This invalid fake mode would also be exported to userspace, who
      potentially may make the same mistake.
      
      To avoid this issue, we filter out the added command line mode if we
      detect the desired resolution (and clock if specified) amongst the
      probed modes. This fixes the immediate problem of adding a duplicate
      mode, but perhaps more generically we should avoid adding a GTF mode if
      the monitor has an EDID that is not GTF-compatible, or similarly for
      CVT.
      
      Was meant to fix a regression from
      
      commit eaf99c74
      Author: Chris Wilson <chris@chris-wilson.co.uk>
      Date:   Wed Aug 6 10:08:32 2014 +0200
      
          drm: Perform cmdline mode parsing during connector initialisation
      
      but Radek explained that the original bug is no longer reproducible on
      latest kernels.
      
      v2: Explicitly delete our earlier cmdline mode
      v3: Mode pruning should now be sufficient to delete stale cmdline modes
      v4: Compute the vrefresh for the probed mode
      Reported-by: NRadek Dostál <rd@radekdostal.com>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Radek Dostál <rd@radekdostal.com>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: dri-devel@lists.freedesktop.org
      Cc: Julia Lemire <jlemire@matrox.com>
      Cc: Dave Airlie <airlied@redhat.com>
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      [danvet: Drop cc: stable since no longer a pressing bugfix, just
      nice-to-have.]
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/1464774651-20376-1-git-send-email-chris@chris-wilson.co.uk
      5f0c3f99
  32. 20 4月, 2016 1 次提交
  33. 15 12月, 2015 1 次提交
    • V
      drm: Don't overwrite UNVERFIED mode status to OK · 4655a12b
      Ville Syrjälä 提交于
      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 05acaec3 ("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: 05acaec3 ("drm: Reorganize probed mode validation")
      Signed-off-by: NVille 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: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      4655a12b
  34. 11 12月, 2015 4 次提交