[Bug 107784] [AMD tahiti XT] displayport broken

sylvain.bertrand at gmail.com sylvain.bertrand at gmail.com
Fri Sep 7 21:48:07 UTC 2018


Breaking commit is a merge commit from upstream mainline:
--------
commit 13e091b6dd0e78a518a7d8756607d3acb8215768
Merge: eac341194426 1088c6eef261
Author: Linus Torvalds <torvalds at linux-foundation.org>
Date:   Mon Aug 13 18:28:19 2018 -0700

    Merge branch 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
    
    Pull x86 timer updates from Thomas Gleixner:
     "Early TSC based time stamping to allow better boot time analysis.
    
      This comes with a general cleanup of the TSC calibration code which
      grew warts and duct taping over the years and removes 250 lines of
      code. Initiated and mostly implemented by Pavel with help from various
      folks"
    
    * 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (37 commits)
      x86/kvmclock: Mark kvm_get_preset_lpj() as __init
      x86/tsc: Consolidate init code
      sched/clock: Disable interrupts when calling generic_sched_clock_init()
      timekeeping: Prevent false warning when persistent clock is not available
      sched/clock: Close a hole in sched_clock_init()
      x86/tsc: Make use of tsc_calibrate_cpu_early()
      x86/tsc: Split native_calibrate_cpu() into early and late parts
      sched/clock: Use static key for sched_clock_running
      sched/clock: Enable sched clock early
      sched/clock: Move sched clock initialization and merge with generic clock
      x86/tsc: Use TSC as sched clock early
      x86/tsc: Initialize cyc2ns when tsc frequency is determined
      x86/tsc: Calibrate tsc only once
      ARM/time: Remove read_boot_clock64()
      s390/time: Remove read_boot_clock64()
      timekeeping: Default boot time offset to local_clock()
      timekeeping: Replace read_boot_clock64() with read_persistent_wall_and_boot_offset()
      s390/time: Add read_persistent_wall_and_boot_offset()
      x86/xen/time: Output xen sched_clock time from 0
      x86/xen/time: Initialize pv xen time in init_hypervisor_platform()
      ...
--------
If I revert this merge commit on amd-staging-drm-next branch, my displayport monitor works again.

In the 1088c6eef261 branch, the one merged in mainline, displayport programming
stopped working on the following commit:
--------
commit e2a9ca29b5edc89da2fddeae30e1070b272395c5
Author: Pavel Tatashin <pasha.tatashin at oracle.com>
Date:   Thu Jul 19 16:55:39 2018 -0400

    x86/tsc: Initialize cyc2ns when tsc frequency is determined
    
    cyc2ns converts tsc to nanoseconds, and it is handled in a per-cpu data
    structure.
    
    Currently, the setup code for c2ns data for every possible CPU goes through
    the same sequence of calculations as for the boot CPU, but is based on the
    same tsc frequency as the boot CPU, and thus this is not necessary.
    
    Initialize the boot cpu when tsc frequency is determined. Copy the
    calculated data from the boot CPU to the other CPUs in tsc_init().
    
    In addition do the following:
    
     - Remove unnecessary zeroing of c2ns data by removing cyc2ns_data_init()
    
     - Split set_cyc2ns_scale() into two functions, so set_cyc2ns_scale() can be
       called when system is up, and wraps around __set_cyc2ns_scale() that can
       be called directly when system is booting but avoids saving restoring
       IRQs and going and waking up from idle.
----
I did not check if this issue was known from upstream yet.


More information about the dri-devel mailing list