1. 29 10月, 2017 1 次提交
    • R
      drm/msm: add special _get_vaddr_active() for cmdstream dumps · fad33f4b
      Rob Clark 提交于
      Prep work for adding a debugfs file that dumps just submits which
      trigger hangs/faults.  In this case the bo may already be in the
      MADV_DONTNEED state, but will be still on the active list (since
      the submit hasn't completed yet).  So the normal check that the
      bo is in the WILLNEED state does not apply.  (But of course the bo
      should definitely not be in the PURGED state!)
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      fad33f4b
  2. 28 10月, 2017 4 次提交
    • J
      drm/msm: Removed unused struct_mutex_task · 3ceaa141
      Jordan Crouse 提交于
      Recent changes to locking have rendered struct_mutex_task
      unused.
      
      Unused since 0e08270a.
      Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      3ceaa141
    • J
      drm/msm: Implement preemption for A5XX targets · b1fc2839
      Jordan Crouse 提交于
      Implement preemption for A5XX targets - this allows multiple
      ringbuffers for different priorities with automatic preemption
      of a lower priority ringbuffer if a higher one is ready.
      Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      b1fc2839
    • J
      drm/msm: Support multiple ringbuffers · f97decac
      Jordan Crouse 提交于
      Add the infrastructure to support the idea of multiple ringbuffers.
      Assign each ringbuffer an id and use that as an index for the various
      ring specific operations.
      
      The biggest delta is to support legacy fences. Each fence gets its own
      sequence number but the legacy functions expect to use a unique integer.
      To handle this we return a unique identifier for each submission but
      map it to a specific ring/sequence under the covers. Newer users use
      a dma_fence pointer anyway so they don't care about the actual sequence
      ID or ring.
      
      The actual mechanics for multiple ringbuffers are very target specific
      so this code just allows for the possibility but still only defines
      one ringbuffer for each target family.
      Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      f97decac
    • J
      drm/msm: Add per-instance submit queues · f7de1545
      Jordan Crouse 提交于
      Currently the behavior of a command stream is provided by the user
      application during submission and the application is expected to internally
      maintain the settings for each 'context' or 'rendering queue' and specify
      the correct ones.
      
      This works okay for simple cases but as applications become more
      complex we will want to set context specific flags and do various
      permission checks to allow certain contexts to enable additional
      privileges.
      
      Add kernel-side submit queues to be analogous to 'contexts' or
      'rendering queues' on the application side. Each file descriptor
      instance will maintain its own list of queues. Queues cannot be
      shared between file descriptors.
      
      For backwards compatibility context id '0' is defined as a default
      context specifying no priority and no special flags. This is
      intended to be the usual configuration for 99% of applications so
      that a garden variety application can function correctly without
      creating a queue. Only those applications requiring the specific
      benefit of different queues need create one.
      Signed-off-by: NJordan Crouse <jcrouse@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      f7de1545
  3. 23 8月, 2017 4 次提交
  4. 17 6月, 2017 1 次提交
  5. 16 6月, 2017 2 次提交
  6. 28 5月, 2017 1 次提交
  7. 08 4月, 2017 1 次提交
  8. 20 3月, 2017 1 次提交
  9. 08 3月, 2017 1 次提交
  10. 25 2月, 2017 1 次提交
  11. 07 2月, 2017 2 次提交
  12. 29 11月, 2016 1 次提交
    • R
      drm/msm: convert iova to 64b · 78babc16
      Rob Clark 提交于
      For a5xx the gpu is 64b so we need to change iova to 64b everywhere.  On
      the display side, iova is still 32b so it can ignore the upper bits.
      (Although all the armv8 devices have an iommu that can map 64b pa to 32b
      iova.)
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      78babc16
  13. 28 11月, 2016 3 次提交
  14. 27 11月, 2016 1 次提交
  15. 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
  16. 29 8月, 2016 1 次提交
  17. 16 7月, 2016 6 次提交
    • R
      drm/msm: wire up vmap shrinker · e1e9db2c
      Rob Clark 提交于
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      e1e9db2c
    • R
      drm/msm: change gem->vmap() to get/put · 18f23049
      Rob Clark 提交于
      Before we can add vmap shrinking, we really need to know which vmap'ings
      are currently being used.  So switch to get/put interface.  Stubbed put
      fxns for now.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      18f23049
    • R
      drm/msm: shrinker support · 68209390
      Rob Clark 提交于
      For a first step, only purge obj->madv==DONTNEED objects.  We could be
      more agressive and next try unpinning inactive objects..  but that is
      only useful if you have swap.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      68209390
    • R
      drm/msm: add madvise ioctl · 4cd33c48
      Rob Clark 提交于
      Doesn't do anything too interesting until we wire up shrinker.  Pretty
      much lifted from i915.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      4cd33c48
    • A
      drm/msm/mdp5: Create a separate MDP5 device · 1dd0a0b1
      Archit Taneja 提交于
      In order to have a tree-like device hierarchy between MDSS and its
      sub-blocks (MDP5, DSI, HDMI, eDP etc), we need to create a separate
      device/driver for MDP5. Currently, MDP5 and MDSS are squashed
      together are are tied to the top level platform_device, which is
      also the one used to create drm_device.
      
      The mdp5_kms_init code is split into two parts. The part where device
      resources are allocated are associated with the MDP5 driver's probe,
      the rest is executed later when we initialize modeset.
      
      With this change, unlike MDP4, the MDP5 platform_device isn't tied to
      the top level drm_device anymore. The top level drm_device is now
      associated with a platform device that corresponds to MDSS wrapper
      hardware.
      
      Create mdp5_init/destroy funcs that will be used by the MDP5 driver
      probe/remove. Use the HW_VERSION register in the MDP5 register address
      space. Both the MDSS and MDP VERSION registers give out identical
      version info.
      
      The older mdp5_kms_init code is left as is for now, this would be removed
      later when we have all the pieces to support the new device hierarchy.
      Signed-off-by: NArchit Taneja <architt@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      1dd0a0b1
    • A
      drm/msm/mdp5: Add MDSS top level driver · 990a4007
      Archit Taneja 提交于
      SoCs that contain MDP5 have a top level wrapper called MDSS that manages
      clocks, power and irq for the sub-blocks within it.
      
      Currently, the MDSS portions are stuffed into the MDP5 driver. This makes
      it hard to represent the DT bindings in the correct way. We create a top
      level MDSS helper that handles these parts. This is essentially moving out
      some of the mdp5_kms irq code and MDSS register space and keeping it as a
      separate entity. We haven't given any clocks to the top level MDSS yet,
      but a AHB clock would be added in the future to access registers.
      
      One thing to note is that the resources allocated by this helper are
      tied to the top level platform_device (the one that allocates the
      drm_device struct too). This device would be the parent to MDSS
      sub-blocks like MDP5, DSI, eDP etc.
      Signed-off-by: NArchit Taneja <architt@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      990a4007
  18. 08 5月, 2016 7 次提交
  19. 02 5月, 2016 1 次提交