1. 31 8月, 2016 1 次提交
    • M
      drm/amdgpu: throttle buffer migrations at CS using a fixed MBps limit (v2) · 95844d20
      Marek Olšák 提交于
      The old mechanism used a per-submission limit that didn't take previous
      submissions within the same time frame into account. It also filled VRAM
      slowly when VRAM usage dropped due to a big eviction or buffer deallocation.
      
      This new method establishes a configurable MBps limit that is obeyed when
      VRAM usage is very high. When VRAM usage is not very high, it gives
      the driver the freedom to fill it quickly. The result is more consistent
      performance.
      
      It can't keep the BO move rate low if lots of evictions are happening due
      to VRAM fragmentation, or if a big buffer is being migrated.
      
      The amdgpu.moverate parameter can be used to set a non-default limit.
      Measurements can be done to find out which amdgpu.moverate setting gives
      the best results.
      
      Mainly APUs and cards with small VRAM will benefit from this. For F1 2015,
      anything with 2 GB VRAM or less will benefit.
      
      Some benchmark results - F1 2015 (Tonga 2GB):
      
      Limit      MinFPS AvgFPS
      Old code:  14     32.6
      128 MB/s:  28     41
      64 MB/s:   15.5   43
      32 MB/s:   28.7   43.4
      8 MB/s:    27.8   44.4
      8 MB/s:    21.9   42.8 (different run)
      
      Random drops in Min FPS can still occur (due to fragmented VRAM?), but
      the average FPS is much better. 8 MB/s is probably a good limit for this
      game & the current VRAM management. The random FPS drops are still to be
      tackled.
      
      v2: use a spinlock
      Signed-off-by: NMarek Olšák <marek.olsak@amd.com>
      Acked-by: NChristian König <christian.koenig@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      95844d20
  2. 25 8月, 2016 1 次提交
  3. 23 8月, 2016 2 次提交
  4. 20 8月, 2016 1 次提交
  5. 18 8月, 2016 1 次提交
  6. 16 8月, 2016 1 次提交
  7. 11 8月, 2016 1 次提交
  8. 09 8月, 2016 1 次提交
  9. 08 8月, 2016 10 次提交
  10. 30 7月, 2016 1 次提交
    • L
      drm/amdgpu: Disable RPM helpers while reprobing connectors on resume · 23a1a9e5
      Lyude 提交于
      Just about all of amdgpu's connector probing functions try to acquire
      runtime PM refs. If we try to do this in the context of
      amdgpu_resume_kms by calling drm_helper_hpd_irq_event(), we end up
      deadlocking the system.
      
      Since we're guaranteed to be holding the spinlock for RPM in
      amdgpu_resume_kms, and we already know the GPU is in working order, we
      need to prevent the RPM helpers from trying to run during the initial
      connector reprobe on resume.
      
      There's a couple of solutions I've explored for fixing this, but this
      one by far seems to be the simplest and most reliable (plus I'm pretty
      sure that's what disable_depth is there for anyway).
      
      Reproduction recipe:
        - Get any laptop dual GPUs using PRIME
        - Make sure runtime PM is enabled for amdgpu
        - Boot the machine
        - If the machine managed to boot without hanging, switch out of X to
          another VT. This should definitely cause X to hang infinitely.
      
      Changes since v1:
        - add appropriate #ifdef checks for CONFIG_PM. This is not very
          useful, but it appears some kernel test suites test compiling amdgpu
          with CONFIG_PM disabled, which results in this patch breaking the builds
          if we don't include this #ifdef
      
      Cc: stable@vger.kernel.org
      Cc: Alex Deucher <alexdeucher@gmail.com>
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: NLyude <cpaul@redhat.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      23a1a9e5
  11. 08 7月, 2016 20 次提交