1. 16 5月, 2018 1 次提交
    • E
      drm/gpu-sched: fix force APP kill hang(v4) · 8ee3a52e
      Emily Deng 提交于
      issue:
      there are VMC page fault occurred if force APP kill during
      3dmark test, the cause is in entity_fini we manually signal
      all those jobs in entity's queue which confuse the sync/dep
      mechanism:
      
      1)page fault occurred in sdma's clear job which operate on
      shadow buffer, and shadow buffer's Gart table is cleaned by
      ttm_bo_release since the fence in its reservation was fake signaled
      by entity_fini() under the case of SIGKILL received.
      
      2)page fault occurred in gfx' job because during the lifetime
      of gfx job we manually fake signal all jobs from its entity
      in entity_fini(), thus the unmapping/clear PTE job depend on those
      result fence is satisfied and sdma start clearing the PTE and lead
      to GFX page fault.
      
      fix:
      1)should at least wait all jobs already scheduled complete in entity_fini()
      if SIGKILL is the case.
      
      2)if a fence signaled and try to clear some entity's dependency, should
      set this entity guilty to prevent its job really run since the dependency
      is fake signaled.
      
      v2:
      splitting drm_sched_entity_fini() into two functions:
      1)The first one is does the waiting, removes the entity from the
      runqueue and returns an error when the process was killed.
      2)The second one then goes over the entity, install it as
      completion signal for the remaining jobs and signals all jobs
      with an error code.
      
      v3:
      1)Replace the fini1 and fini2 with better name
      2)Call the first part before the VM teardown in
      amdgpu_driver_postclose_kms() and the second part
      after the VM teardown
      3)Keep the original function drm_sched_entity_fini to
      refine the code.
      
      v4:
      1)Rename entity->finished to entity->last_scheduled;
      2)Rename drm_sched_entity_fini_job_cb() to
      drm_sched_entity_kill_jobs_cb();
      3)Pass NULL to drm_sched_entity_fini_job_cb() if -ENOENT;
      4)Replace the type of entity->fini_status with "int";
      5)Remove the check about entity->finished.
      Signed-off-by: NMonk Liu <Monk.Liu@amd.com>
      Signed-off-by: NEmily Deng <Emily.Deng@amd.com>
      Reviewed-by: NChristian König <christian.koenig@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      8ee3a52e
  2. 08 12月, 2017 1 次提交
  3. 05 12月, 2017 4 次提交
  4. 20 10月, 2017 2 次提交
  5. 10 10月, 2017 5 次提交
  6. 27 9月, 2017 1 次提交
  7. 01 6月, 2017 1 次提交
    • A
      drm/amdgpu: untie user ring ids from kernel ring ids v6 · effd924d
      Andres Rodriguez 提交于
      Add amdgpu_queue_mgr, a mechanism that allows disjointing usermode's
      ring ids from the kernel's ring ids.
      
      The queue manager maintains a per-file descriptor map of user ring ids
      to amdgpu_ring pointers. Once a map is created it is permanent (this is
      required to maintain FIFO execution guarantees for a context's ring).
      
      Different queue map policies can be configured for each HW IP.
      Currently all HW IPs use the identity mapper, i.e. kernel ring id is
      equal to the user ring id.
      
      The purpose of this mechanism is to distribute the load across multiple
      queues more effectively for HW IPs that support multiple rings.
      Userspace clients are unable to check whether a specific resource is in
      use by a different client. Therefore, it is up to the kernel driver to
      make the optimal choice.
      
      v2: remove amdgpu_queue_mapper_funcs
      v3: made amdgpu_queue_mgr per context instead of per-fd
      v4: add context_put on error paths
      v5: rebase and include new IPs UVD_ENC & VCN_*
      v6: drop unused amdgpu_ring_is_valid_index (Alex)
      Reviewed-by: NChristian König <christian.koenig@amd.com>
      Signed-off-by: NAndres Rodriguez <andresx7@gmail.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      effd924d
  8. 25 5月, 2017 1 次提交
  9. 29 4月, 2017 1 次提交
  10. 14 2月, 2017 1 次提交
  11. 28 10月, 2016 1 次提交
  12. 25 10月, 2016 1 次提交
    • C
      dma-buf: Rename struct fence to dma_fence · f54d1867
      Chris Wilson 提交于
      I plan to usurp the short name of struct fence for a core kernel struct,
      and so I need to rename the specialised fence/timeline for DMA
      operations to make room.
      
      A consensus was reached in
      https://lists.freedesktop.org/archives/dri-devel/2016-July/113083.html
      that making clear this fence applies to DMA operations was a good thing.
      Since then the patch has grown a bit as usage increases, so hopefully it
      remains a good thing!
      
      (v2...: rebase, rerun spatch)
      v3: Compile on msm, spotted a manual fixup that I broke.
      v4: Try again for msm, sorry Daniel
      
      coccinelle script:
      @@
      
      @@
      - struct fence
      + struct dma_fence
      @@
      
      @@
      - struct fence_ops
      + struct dma_fence_ops
      @@
      
      @@
      - struct fence_cb
      + struct dma_fence_cb
      @@
      
      @@
      - struct fence_array
      + struct dma_fence_array
      @@
      
      @@
      - enum fence_flag_bits
      + enum dma_fence_flag_bits
      @@
      
      @@
      (
      - fence_init
      + dma_fence_init
      |
      - fence_release
      + dma_fence_release
      |
      - fence_free
      + dma_fence_free
      |
      - fence_get
      + dma_fence_get
      |
      - fence_get_rcu
      + dma_fence_get_rcu
      |
      - fence_put
      + dma_fence_put
      |
      - fence_signal
      + dma_fence_signal
      |
      - fence_signal_locked
      + dma_fence_signal_locked
      |
      - fence_default_wait
      + dma_fence_default_wait
      |
      - fence_add_callback
      + dma_fence_add_callback
      |
      - fence_remove_callback
      + dma_fence_remove_callback
      |
      - fence_enable_sw_signaling
      + dma_fence_enable_sw_signaling
      |
      - fence_is_signaled_locked
      + dma_fence_is_signaled_locked
      |
      - fence_is_signaled
      + dma_fence_is_signaled
      |
      - fence_is_later
      + dma_fence_is_later
      |
      - fence_later
      + dma_fence_later
      |
      - fence_wait_timeout
      + dma_fence_wait_timeout
      |
      - fence_wait_any_timeout
      + dma_fence_wait_any_timeout
      |
      - fence_wait
      + dma_fence_wait
      |
      - fence_context_alloc
      + dma_fence_context_alloc
      |
      - fence_array_create
      + dma_fence_array_create
      |
      - to_fence_array
      + to_dma_fence_array
      |
      - fence_is_array
      + dma_fence_is_array
      |
      - trace_fence_emit
      + trace_dma_fence_emit
      |
      - FENCE_TRACE
      + DMA_FENCE_TRACE
      |
      - FENCE_WARN
      + DMA_FENCE_WARN
      |
      - FENCE_ERR
      + DMA_FENCE_ERR
      )
       (
       ...
       )
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      Acked-by: NSumit Semwal <sumit.semwal@linaro.org>
      Acked-by: NChristian König <christian.koenig@amd.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/20161025120045.28839-1-chris@chris-wilson.co.uk
      f54d1867
  13. 13 10月, 2016 1 次提交
  14. 28 9月, 2016 1 次提交
  15. 13 2月, 2016 2 次提交
  16. 11 2月, 2016 1 次提交
  17. 19 12月, 2015 1 次提交
  18. 15 12月, 2015 2 次提交
  19. 03 12月, 2015 1 次提交
  20. 04 11月, 2015 1 次提交
  21. 24 9月, 2015 2 次提交
  22. 25 8月, 2015 2 次提交
  23. 21 8月, 2015 1 次提交
  24. 18 8月, 2015 5 次提交