1. 07 8月, 2013 1 次提交
  2. 01 8月, 2013 1 次提交
    • D
      drm/mm: include required headers in drm_mm.h · 86e81f0e
      David Herrmann 提交于
      We need BUG_ON(), spinlock_t and standard kernel data-types so include the
      right headers.
      
      Subject: [drm-intel:drm-intel-nightly 154/166] include/drm/drm_mm.h:67:2:
       error: unknown type name 'spinlock_t'
      Message-ID: <51f14693.g5HGdcuw2v3m8FOd%fengguang.wu@intel.com>
      
      In case it didn't link to it correctly. Somehow this bug doesn't occur
      here on my machine, hmm. But I think fixing drm_mm.h is better than
      changing the include-order in drm_vma_manager.h, so this is what I
      did.
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      86e81f0e
  3. 26 7月, 2013 1 次提交
  4. 25 7月, 2013 4 次提交
    • D
      drm/vma: provide drm_vma_node_unmap() helper · 51335df9
      David Herrmann 提交于
      Instead of unmapping the nodes in TTM and GEM users manually, we provide
      a generic wrapper which does the correct thing for all vma-nodes.
      
      v2: remove bdev->dev_mapping test in ttm_bo_unmap_virtual_unlocked() as
      ttm_mem_io_free_vm() does nothing in that case (io_reserved_vm is 0).
      v4: Fix docbook comments
      v5: use drm_vma_node_size()
      
      Cc: Dave Airlie <airlied@redhat.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>
      Cc: Thomas Hellstrom <thellstrom@vmware.com>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDave Airlie <airlied@gmail.com>
      51335df9
    • D
      drm/ttm: convert to unified vma offset manager · 72525b3f
      David Herrmann 提交于
      Use the new vma-manager infrastructure. This doesn't change any
      implementation details as the vma-offset-manager is nearly copied 1-to-1
      from TTM.
      
      The vm_lock is moved into the offset manager so we can drop it from TTM.
      During lookup, we use the vma locking helpers to take a reference to the
      found object.
      In all other scenarios, locking stays the same as before. We always
      guarantee that drm_vma_offset_remove() is called only during destruction.
      Hence, helpers like drm_vma_node_offset_addr() are always safe as long as
      the node has a valid offset.
      
      This also drops the addr_space_offset member as it is a copy of vm_start
      in vma_node objects. Use the accessor functions instead.
      
      v4:
       - remove vm_lock
       - use drm_vma_offset_lock_lookup() to protect lookup (instead of vm_lock)
      
      Cc: Dave Airlie <airlied@redhat.com>
      Cc: Ben Skeggs <bskeggs@redhat.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>
      Cc: Martin Peres <martin.peres@labri.fr>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Cc: Thomas Hellstrom <thellstrom@vmware.com>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDave Airlie <airlied@gmail.com>
      72525b3f
    • D
      drm/gem: convert to new unified vma manager · 0de23977
      David Herrmann 提交于
      Use the new vma manager instead of the old hashtable. Also convert all
      drivers to use the new convenience helpers. This drops all the
      (map_list.hash.key << PAGE_SHIFT) non-sense.
      
      Locking and access-management is exactly the same as before with an
      additional lock inside of the vma-manager, which strictly wouldn't be
      needed for gem.
      
      v2:
       - rebase on drm-next
       - init nodes via drm_vma_node_reset() in drm_gem.c
      v3:
       - fix tegra
      v4:
       - remove duplicate if (drm_vma_node_has_offset()) checks
       - inline now trivial drm_vma_node_offset_addr() calls
      v5:
       - skip node-reset on gem-init due to kzalloc()
       - do not allow mapping gem-objects with offsets (backwards compat)
       - remove unneccessary casts
      
      Cc: Inki Dae <inki.dae@samsung.com>
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: Dave Airlie <airlied@redhat.com>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      Acked-by: NPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDave Airlie <airlied@gmail.com>
      0de23977
    • D
      drm: add unified vma offset manager · fe3078fa
      David Herrmann 提交于
      If we want to map GPU memory into user-space, we need to linearize the
      addresses to not confuse mm-core. Currently, GEM and TTM both implement
      their own offset-managers to assign a pgoff to each object for user-space
      CPU access. GEM uses a hash-table, TTM uses an rbtree.
      
      This patch provides a unified implementation that can be used to replace
      both. TTM allows partial mmaps with a given offset, so we cannot use
      hashtables as the start address may not be known at mmap time. Hence, we
      use the rbtree-implementation of TTM.
      
      We could easily update drm_mm to use an rbtree instead of a linked list
      for it's object list and thus drop the rbtree from the vma-manager.
      However, this would slow down drm_mm object allocation for all other
      use-cases (rbtree insertion) and add another 4-8 bytes to each mm node.
      Hence, use the separate tree but allow for later migration.
      
      This is a rewrite of the 2012-proposal by David Airlie <airlied@linux.ie>
      
      v2:
       - fix Docbook integration
       - drop drm_mm_node_linked() and use drm_mm_node_allocated()
       - remove unjustified likely/unlikely usage (but keep for rbtree paths)
       - remove BUG_ON() as drm_mm already does that
       - clarify page-based vs. byte-based addresses
       - use drm_vma_node_reset() for initialization, too
      v4:
       - allow external locking via drm_vma_offset_un/lock_lookup()
       - add locked lookup helper drm_vma_offset_lookup_locked()
      v5:
       - fix drm_vma_offset_lookup() to correctly validate range-mismatches
         (fix (offset > start + pages))
       - fix drm_vma_offset_exact_lookup() to actually do what it says
       - remove redundant vm_pages member (add drm_vma_node_size() helper)
       - remove unneeded goto
       - fix documentation
      Signed-off-by: NDavid Herrmann <dh.herrmann@gmail.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NDave Airlie <airlied@gmail.com>
      fe3078fa
  5. 23 7月, 2013 19 次提交
  6. 19 7月, 2013 8 次提交
    • D
      Merge tag 'drm-intel-next-2013-07-12' of... · e13af9a8
      Dave Airlie 提交于
      Merge tag 'drm-intel-next-2013-07-12' of git://people.freedesktop.org/~danvet/drm-intel into drm-next
      
       Highlights:
      - follow-up refactoring after the shared dpll rework that landed in 3.11
      - oddball prep cleanups from Ben for ppgtt
      - encoder->get_config state tracking infrastructure from Jesse
      - used by the experimental fastboot support from Jesse (disabled by
        default)
      - make the error state file official and add it to our sysfs interface
        (Mika)
      - drm_mm prep changes from Ben, prepares to embedd the drm_mm_node (which
        will be used by the vma rework later on)
      - interrupt handling rework, follow up cleanups to the VECS enabling, hpd
        storm handling and fifo underrun reporting.
      - Big pile of smaller cleanups, code improvements and related stuff.
      
      * tag 'drm-intel-next-2013-07-12' of git://people.freedesktop.org/~danvet/drm-intel: (72 commits)
        drm/i915: clear DPLL reg when disabling i9xx dplls
        drm/i915: Fix up cpt pixel multiplier enable sequence
        drm/i915: clean up vlv ->pre_pll_enable and pll enable sequence
        drm/i915: move error state to own compilation unit
        drm/i915: Don't attempt to read an unitialized stack value
        drm/i915: Use for_each_pipe() when possible
        drm/i915: don't enable PM_VEBOX_CS_ERROR_INTERRUPT
        drm/i915: unify ring irq refcounts (again)
        drm/i915: kill dev_priv->rps.lock
        drm/i915: queue work outside spinlock in hsw_pm_irq_handler
        drm/i915: streamline hsw_pm_irq_handler
        drm/i915: irq handlers don't need interrupt-safe spinlocks
        drm/i915: kill lpt pch transcoder->crtc mapping code for fifo underruns
        drm/i915: improve GEN7_ERR_INT clearing for fifo underrun reporting
        drm/i915: improve SERR_INT clearing for fifo underrun reporting
        drm/i915: extract ibx_display_interrupt_update
        drm/i915: remove unused members from drm_i915_private
        drm/i915: don't frob mm.suspended when not using ums
        drm/i915: Fix VLV DP RBR/HDMI/DAC PLL LPF coefficients
        drm/i915: WARN if the bios reserved range is bigger than stolen size
        ...
      
      Conflicts:
      	drivers/gpu/drm/i915/i915_gem.c
      e13af9a8
    • L
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ee114b97
      Linus Torvalds 提交于
      Pull x86 fixes from Peter Anvin:
       "Trying again to get the fixes queue, including the fixed IDT alignment
        patch.
      
        The UEFI patch is by far the biggest issue at hand: it is currently
        causing quite a few machines to boot.  Which is sad, because the only
        reason they would is because their BIOSes touch memory that has
        already been freed.  The other major issue is that we finally have
        tracked down the root cause of a significant number of machines
        failing to suspend/resume"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86: Make sure IDT is page aligned
        x86, suspend: Handle CPUs which fail to #GP on RDMSR
        x86/platform/ce4100: Add header file for reboot type
        Revert "UEFI: Don't pass boot services regions to SetVirtualAddressMap()"
        efivars: check for EFI_RUNTIME_SERVICES
      ee114b97
    • L
      Merge tag 'md-3.11-fixes' of git://neil.brown.name/md · 4b8b8a4a
      Linus Torvalds 提交于
      Pull md bug fixes from NeilBrown:
       "Sorry boss, back at work now boss.  Here's them nice shiny patches ya
        wanted.  All nicely tagged and justified for -stable and everyfing:
      
        Three bug fixes for md in 3.10
      
        3.10 wasn't a good release for md.  The bio changes left a couple of
        bugs, and an md "fix" created another one.
      
        These three patches appear to fix the issues and have been tagged for
        -stable"
      
      * tag 'md-3.11-fixes' of git://neil.brown.name/md:
        md/raid1: fix bio handling problems in process_checks()
        md: Remove recent change which allows devices to skip recovery.
        md/raid10: fix two problems with RAID10 resync.
      4b8b8a4a
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 0a693ab6
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "You'll be terribly disappointed in this, I'm not trying to sneak any
        features in or anything, its mostly radeon and intel fixes, a couple
        of ARM driver fixes"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (34 commits)
        drm/radeon/dpm: add debugfs support for RS780/RS880 (v3)
        drm/radeon/dpm/atom: fix broken gcc harder
        drm/radeon/dpm/atom: restructure logic to work around a compiler bug
        drm/radeon/dpm: fix atom vram table parsing
        drm/radeon: fix an endian bug in atom table parsing
        drm/radeon: add a module parameter to disable aspm
        drm/rcar-du: Use the GEM PRIME helpers
        drm/shmobile: Use the GEM PRIME helpers
        uvesafb: Really allow mtrr being 0, as documented and warn()ed
        radeon kms: do not flush uninitialized hotplug work
        drm/radeon/dpm/sumo: handle boost states properly when forcing a perf level
        drm/radeon: align VM PTBs (Page Table Blocks) to 32K
        drm/radeon: allow selection of alignment in the sub-allocator
        drm/radeon: never unpin UVD bo v3
        drm/radeon: fix UVD fence emit
        drm/radeon: add fault decode function for CIK
        drm/radeon: add fault decode function for SI (v2)
        drm/radeon: add fault decode function for cayman/TN (v2)
        drm/radeon: use radeon device for request firmware
        drm/radeon: add missing ttm_eu_backoff_reservation to radeon_bo_list_validate
        ...
      0a693ab6
    • L
      Merge tag 'driver-core-3.11-rc2' of... · 7a62711a
      Linus Torvalds 提交于
      Merge tag 'driver-core-3.11-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
      
      Pull driver core patches from Greg KH:
       "Here are some driver core patches for 3.11-rc2.  They aren't really
        bugfixes, but a bunch of new helper macros for drivers to properly
        create attribute groups, which drivers and subsystems need to fix up a
        ton of race issues with incorrectly creating sysfs files (binary and
        normal) after userspace has been told that the device is present.
      
        Also here is the ability to create binary files as attribute groups,
        to solve that race condition, which was impossible to do before this,
        so that's my fault the drivers were broken.
      
        The majority of the .c changes is indenting and moving code around a
        bit.  It affects no existing code, but allows the large backlog of 70+
        patches that I already have created to start flowing into the
        different subtrees, instead of having to live in my driver-core tree,
        causing merge nightmares in linux-next for the next few months.
      
        These were finalized too late for the -rc1 merge window, which is why
        they were didn't make that pull request, testing and review from
        others didn't happen until a few weeks ago, and then there's the whole
        distraction of the past few days, which prevented these from getting
        to you sooner, sorry about that.
      
        Oh, and there's a bugfix for the documentation build warning in here
        as well.  All of these have been in linux-next this week, with no
        reported problems"
      
      * tag 'driver-core-3.11-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
        driver-core: fix new kernel-doc warning in base/platform.c
        sysfs: use file mode defines from stat.h
        sysfs: add more helper macro's for (bin_)attribute(_groups)
        driver core: add default groups to struct class
        driver core: Introduce device_create_groups
        sysfs: prevent warning when only using binary attributes
        sysfs: add support for binary attributes in groups
        driver core: device.h: add RW and RO attribute macros
        sysfs.h: add BIN_ATTR macro
        sysfs.h: add ATTRIBUTE_GROUPS() macro
        sysfs.h: add __ATTR_RW() macro
      7a62711a
    • L
      Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · 5d88d15e
      Linus Torvalds 提交于
      Pull hwmon fix from Guenter Roeck:
       "Single patch to staticize a local variable"
      
      * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (abx500) Staticize abx500_temp_attributes
      5d88d15e
    • L
      Merge branch 'cpuinit_phase2' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux · 3f334c20
      Linus Torvalds 提交于
      Pull phase two of __cpuinit removal from Paul Gortmaker:
       "With the __cpuinit infrastructure removed earlier, this group of
        commits only removes the function/data tagging that was done with the
        various (now no-op) __cpuinit related prefixes.
      
        Now that the dust has settled with yesterday's v3.11-rc1, there
        hopefully shouldn't be any new users leaking back in tree, but I think
        we can leave the harmless no-op stubs there for a release as a
        courtesy to those who still have out of tree stuff and weren't paying
        attention.
      
        Although the commits are against the recent tag to allow for minor
        context refreshes for things like yesterday's v3.11-rc1~ slab content,
        the patches have been largely unchanged for weeks, aside from such
        trivial updates.
      
        For detail junkies, the largely boring and mostly irrelevant history
        of the patches can be viewed at:
      
          http://git.kernel.org/cgit/linux/kernel/git/paulg/cpuinit-delete.git
      
        If nothing else, I guess it does at least demonstrate the level of
        involvement required to shepherd such a treewide change to completion.
      
        This is the same repository of patches that has been applied to the
        end of the daily linux-next branches for the past several weeks"
      
      * 'cpuinit_phase2' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (28 commits)
        block: delete __cpuinit usage from all block files
        drivers: delete __cpuinit usage from all remaining drivers files
        kernel: delete __cpuinit usage from all core kernel files
        rcu: delete __cpuinit usage from all rcu files
        net: delete __cpuinit usage from all net files
        acpi: delete __cpuinit usage from all acpi files
        hwmon: delete __cpuinit usage from all hwmon files
        cpufreq: delete __cpuinit usage from all cpufreq files
        clocksource+irqchip: delete __cpuinit usage from all related files
        x86: delete __cpuinit usage from all x86 files
        score: delete __cpuinit usage from all score files
        xtensa: delete __cpuinit usage from all xtensa files
        openrisc: delete __cpuinit usage from all openrisc files
        m32r: delete __cpuinit usage from all m32r files
        hexagon: delete __cpuinit usage from all hexagon files
        frv: delete __cpuinit usage from all frv files
        cris: delete __cpuinit usage from all cris files
        metag: delete __cpuinit usage from all metag files
        tile: delete __cpuinit usage from all tile files
        sh: delete __cpuinit usage from all sh files
        ...
      3f334c20
    • L
      Merge tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · c66bce9b
      Linus Torvalds 提交于
      Pull sound fixes from Takashi Iwai:
       "Except for a slightly big OMAP changes, all rest are small, mostly
        boring changes; all either 3.11 regression fixes or stable materials.
      
         - ASoC OMAP fixes due to non-DT OMAP4 removals
         - Other ASoC driver changes (sglt5000, wm8978, wm8948, samsung)
         - Fix missing locking for snd_pcm_stop() calls in many drivers
         - Fix the blocking request_module() in OSS sequencer
         - Fix old OSS vwsnd driver builds
         - Add a new HD-audio HDMI codec ID"
      
      * tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (23 commits)
        ALSA: seq-oss: Initialize MIDI clients asynchronously
        ALSA: hda - Add new GPU codec ID to snd-hda
        staging: line6: Fix unlocked snd_pcm_stop() call
        [media] saa7134: Fix unlocked snd_pcm_stop() call
        ASoC: s6000: Fix unlocked snd_pcm_stop() call
        ASoC: atmel: Fix unlocked snd_pcm_stop() call
        ALSA: pxa2xx: Fix unlocked snd_pcm_stop() call
        ALSA: usx2y: Fix unlocked snd_pcm_stop() call
        ALSA: ua101: Fix unlocked snd_pcm_stop() call
        ALSA: 6fire: Fix unlocked snd_pcm_stop() call
        ALSA: atiixp: Fix unlocked snd_pcm_stop() call
        ALSA: asihpi: Fix unlocked snd_pcm_stop() call
        sound: oss/vwsnd: Always define vwsnd_mutex
        sound: oss/vwsnd: Add missing inclusion of linux/delay.h
        ASoC: wm8978: enable symmetric rates
        ASoC: omap-mcbsp: Use different method for DMA request when booted with DT
        ASoC: omap-dmic: Do not use platform_get_resource_byname() for DMA
        ASoC: omap-mcpdm: Do not use platform_get_resource_byname() for DMA
        ASoC: omap-pcm: Request the DMA channel differently when DT is involved
        ASoC: Samsung: Set RFS and BFS in slave mode
        ...
      c66bce9b
  7. 18 7月, 2013 6 次提交
    • D
      Merge branch 'drm/3.11/fixes' of git://linuxtv.org/pinchartl/fbdev into drm-fixes · 3668f0df
      Dave Airlie 提交于
      Fixes builds
      * 'drm/3.11/fixes' of git://linuxtv.org/pinchartl/fbdev:
        drm/rcar-du: Use the GEM PRIME helpers
        drm/shmobile: Use the GEM PRIME helpers
      3668f0df
    • N
      md/raid1: fix bio handling problems in process_checks() · 30bc9b53
      NeilBrown 提交于
      Recent change to use bio_copy_data() in raid1 when repairing
      an array is faulty.
      
      The underlying may have changed the bio in various ways using
      bio_advance and these need to be undone not just for the 'sbio' which
      is being copied to, but also the 'pbio' (primary) which is being
      copied from.
      
      So perform the reset on all bios that were read from and do it early.
      
      This also ensure that the sbio->bi_io_vec[j].bv_len passed to
      memcmp is correct.
      
      This fixes a crash during a 'check' of a RAID1 array.  The crash was
      introduced in 3.10 so this is suitable for 3.10-stable.
      
      Cc: stable@vger.kernel.org (3.10)
      Reported-by: NJoe Lawrence <joe.lawrence@stratus.com>
      Signed-off-by: NNeilBrown <neilb@suse.de>
      30bc9b53
    • N
      md: Remove recent change which allows devices to skip recovery. · 5024c298
      NeilBrown 提交于
      commit 7ceb17e8
          md: Allow devices to be re-added to a read-only array.
      
      allowed a bit more than just that.  It also allows devices to be added
      to a read-write array and to end up skipping recovery.
      
      This patch removes the offending piece of code pending a rewrite for a
      subsequent release.
      
      More specifically:
       If the array has a bitmap, then the device will still need a bitmap
       based resync ('saved_raid_disk' is set under different conditions
       is a bitmap is present).
       If the array doesn't have a bitmap, then this is correct as long as
       nothing has been written to the array since the metadata was checked
       by ->validate_super.  However there is no locking to ensure that there
       was no write.
      
      Bug was introduced in 3.10 and causes data corruption so
      patch is suitable for 3.10-stable.
      
      Cc: stable@vger.kernel.org (3.10)
      Reported-by: NJoe Lawrence <joe.lawrence@stratus.com>
      Signed-off-by: NNeilBrown <neilb@suse.de>
      5024c298
    • N
      md/raid10: fix two problems with RAID10 resync. · 7bb23c49
      NeilBrown 提交于
      1/ When an different between blocks is found, data is copied from
         one bio to the other.  However bv_len is used as the length to
         copy and this could be zero.  So use r10_bio->sectors to calculate
         length instead.
         Using bv_len was probably always a bit dubious, but the introduction
         of bio_advance made it much more likely to be a problem.
      
      2/ When preparing some blocks for sync, we don't set BIO_UPTODATE
         except on bios that we schedule for a read.  This ensures that
         missing/failed devices don't confuse the loop at the top of
         sync_request write.
         Commit 8be185f2 "raid10: Use bio_reset()"
         removed a loop which set BIO_UPTDATE on all appropriate bios.
         So we need to re-add that flag.
      
      These bugs were introduced in 3.10, so this patch is suitable for
      3.10-stable, and can remove a potential for data corruption.
      
      Cc: stable@vger.kernel.org (3.10)
      Reported-by: NBrassow Jonathan <jbrassow@redhat.com>
      Signed-off-by: NNeilBrown <neilb@suse.de>
      7bb23c49
    • D
      Merge branch 'drm-fixes-3.11' of git://people.freedesktop.org/~agd5f/linux · fb328d73
      Dave Airlie 提交于
      more DPM fixes for radeon.
      
      * 'drm-fixes-3.11' of git://people.freedesktop.org/~agd5f/linux:
        drm/radeon/dpm: add debugfs support for RS780/RS880 (v3)
        drm/radeon/dpm/atom: fix broken gcc harder
        drm/radeon/dpm/atom: restructure logic to work around a compiler bug
        drm/radeon/dpm: fix atom vram table parsing
        drm/radeon: fix an endian bug in atom table parsing
        drm/radeon: add a module parameter to disable aspm
      fb328d73
    • A
      drm/radeon/dpm: add debugfs support for RS780/RS880 (v3) · 444bddc4
      Alex Deucher 提交于
      This allows you to look at the current DPM state via
      debugfs.
      
      Due to the way the hardware works on these asics, there's
      no way to look up exactly what power state we are in, so
      we make the best guess we can based on the current sclk.
      
      v2: Anthoine's version
      v3: fix ref div
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      444bddc4