1. 09 Sep, 2021 8 commits
  2. 07 Sep, 2021 2 commits
  3. 05 Sep, 2021 1 commit
  4. 03 Sep, 2021 4 commits
  5. 02 Sep, 2021 4 commits
  6. 01 Sep, 2021 4 commits
  7. 31 Aug, 2021 5 commits
  8. 30 Aug, 2021 12 commits
    • Andrey Grodzovsky's avatar
      drm/ttm: Create pinned list · 32eadf52
      Andrey Grodzovsky authored
      This list will be used to capture all non VRAM BOs not
      on LRU so when device is hot unplugged we can iterate
      the list and unmap DMA mappings before device is removed.
      
      v2: Reanme function to ttm_bo_move_to_pinned
      v3: Move the pinned list to ttm device
      Signed-off-by: default avatarAndrey Grodzovsky <andrey.grodzovsky@amd.com>
      Suggested-by: default avatarChristian König <christian.koenig@amd.com>
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Link: https://patchwork.freedesktop.org/patch/451614/?series=93971
      32eadf52
    • Daniel Vetter's avatar
      dma-resv: Give the docs a do-over · d9edf92d
      Daniel Vetter authored
      Specifically document the new/clarified rules around how the shared
      fences do not have any ordering requirements against the exclusive
      fence.
      
      But also document all the things a bit better, given how central
      struct dma_resv to dynamic buffer management the docs have been very
      inadequat.
      
      - Lots more links to other pieces of the puzzle. Unfortunately
        ttm_buffer_object has no docs, so no links :-(
      
      - Explain/complain a bit about dma_resv_locking_ctx(). I still don't
        like that one, but fixing the ttm call chains is going to be
        horrible. Plus we want to plug in real slowpath locking when we do
        that anyway.
      
      - Main part of the patch is some actual docs for struct dma_resv.
      
      Overall I think we still have a lot of bad naming in this area (e.g.
      dma_resv.fence is singular, but contains the multiple shared fences),
      but I think that's more indicative of how the semantics and rules are
      just not great.
      
      Another thing that's real awkard is how chaining exclusive fences
      right now means direct dma_resv.exclusive_fence pointer access with an
      rcu_assign_pointer. Not so great either.
      
      v2:
      - Fix a pile of typos (Matt, Jason)
      - Hammer it in that breaking the rules leads to use-after-free issues
        around dma-buf sharing (Christian)
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Cc: Jason Ekstrand <jason@jlekstrand.net>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Cc: Sumit Semwal <sumit.semwal@linaro.org>
      Cc: "Christian König" <christian.koenig@amd.com>
      Cc: linux-media@vger.kernel.org
      Cc: linaro-mm-sig@lists.linaro.org
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805104705.862416-21-daniel.vetter@ffwll.ch
      d9edf92d
    • Daniel Vetter's avatar
      drm/msm: Don't break exclusive fence ordering · f1b3f696
      Daniel Vetter authored
      There's only one exclusive slot, and we must not break the ordering.
      
      Adding a new exclusive fence drops all previous fences from the
      dma_resv. To avoid violating the signalling order we err on the side of
      over-synchronizing by waiting for the existing fences, even if
      userspace asked us to ignore them.
      
      A better fix would be to us a dma_fence_chain or _array like e.g.
      amdgpu now uses, but
      - msm has a synchronous dma_fence_wait for anything from another
        context, so doesn't seem to care much,
      - and it probably makes sense to lift this into dma-resv.c code as a
        proper concept, so that drivers don't have to hack up their own
        solution each on their own.
      
      v2: Improve commit message per Lucas' suggestion.
      
      Cc: Lucas Stach <l.stach@pengutronix.de>
      Acked-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: Sean Paul <sean@poorly.run>
      Cc: linux-arm-msm@vger.kernel.org
      Cc: freedreno@lists.freedesktop.org
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805104705.862416-17-daniel.vetter@ffwll.ch
      f1b3f696
    • Daniel Vetter's avatar
      drm/msm: Use scheduler dependency handling · 80bcfbd3
      Daniel Vetter authored
      drm_sched_job_init is already at the right place, so this boils down
      to deleting code.
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Cc: Rob Clark <robdclark@gmail.com>
      Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
      Cc: Sean Paul <sean@poorly.run>
      Cc: Sumit Semwal <sumit.semwal@linaro.org>
      Cc: "Christian König" <christian.koenig@amd.com>
      Cc: linux-arm-msm@vger.kernel.org
      Cc: freedreno@lists.freedesktop.org
      Cc: linux-media@vger.kernel.org
      Cc: linaro-mm-sig@lists.linaro.org
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805104705.862416-13-daniel.vetter@ffwll.ch
      80bcfbd3
    • Daniel Vetter's avatar
      drm/v3d: Use scheduler dependency handling · da3208e8
      Daniel Vetter authored
      With the prep work out of the way this isn't tricky anymore.
      
      Aside: The chaining of the various jobs is a bit awkward, with the
      possibility of failure in bad places. I think with the
      drm_sched_job_init/arm split and maybe preloading the
      job->dependencies xarray this should be fixable.
      
      v2: Rebase over renamed function names for adding dependencies.
      
      Reviewed-by: Melissa Wen <mwen@igalia.com> (v1)
      Acked-by: default avatarEmma Anholt <emma@anholt.net>
      Cc: Melissa Wen <melissa.srw@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Cc: Emma Anholt <emma@anholt.net>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805104705.862416-11-daniel.vetter@ffwll.ch
      da3208e8
    • Daniel Vetter's avatar
      drm/v3d: Move drm_sched_job_init to v3d_job_init · 916044fa
      Daniel Vetter authored
      Prep work for using the scheduler dependency handling. We need to call
      drm_sched_job_init earlier so we can use the new drm_sched_job_await*
      functions for dependency handling here.
      
      v2: Slightly better commit message and rebase to include the
      drm_sched_job_arm() call (Emma).
      
      v3: Cleanup jobs under construction correctly (Emma)
      
      v4: Rebase over perfmon patch
      
      Reviewed-by: Melissa Wen <mwen@igalia.com> (v3)
      Acked-by: default avatarEmma Anholt <emma@anholt.net>
      Cc: Melissa Wen <melissa.srw@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Cc: Emma Anholt <emma@anholt.net>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805104705.862416-10-daniel.vetter@ffwll.ch
      916044fa
    • Daniel Vetter's avatar
      drm/lima: use scheduler dependency tracking · c79a4487
      Daniel Vetter authored
      Nothing special going on here.
      
      Aside reviewing the code, it seems like drm_sched_job_arm() should be
      moved into lima_sched_context_queue_task and put under some mutex
      together with drm_sched_push_job(). See the kerneldoc for
      drm_sched_push_job().
      
      v2: Rebase over renamed functions to add dependencies.
      Reviewed-by: default avatarQiang Yu <yuq825@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Cc: Qiang Yu <yuq825@gmail.com>
      Cc: Sumit Semwal <sumit.semwal@linaro.org>
      Cc: "Christian König" <christian.koenig@amd.com>
      Cc: lima@lists.freedesktop.org
      Cc: linux-media@vger.kernel.org
      Cc: linaro-mm-sig@lists.linaro.org
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805104705.862416-9-daniel.vetter@ffwll.ch
      c79a4487
    • Daniel Vetter's avatar
      drm/panfrost: use scheduler dependency tracking · 53516280
      Daniel Vetter authored
      Just deletes some code that's now more shared.
      
      Note that thanks to the split into drm_sched_job_init/arm we can now
      easily pull the _init() part from under the submission lock way ahead
      where we're adding the sync file in-fences as dependencies.
      
      v2: Correctly clean up the partially set up job, now that job_init()
      and job_arm() are apart (Emma).
      
      v3: Rebased over renamed functions for adding depdencies
      Acked-by: default avatarAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
      Acked-by: default avatarEmma Anholt <emma@anholt.net>
      Reviewed-by: Steven Price <steven.price@arm.com> (v3)
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>
      Cc: Steven Price <steven.price@arm.com>
      Cc: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
      Cc: Sumit Semwal <sumit.semwal@linaro.org>
      Cc: "Christian König" <christian.koenig@amd.com>
      Cc: linux-media@vger.kernel.org
      Cc: linaro-mm-sig@lists.linaro.org
      Cc: Emma Anholt <emma@anholt.net>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805104705.862416-8-daniel.vetter@ffwll.ch
      53516280
    • Daniel Vetter's avatar
      drm/sched: improve docs around drm_sched_entity · 981b04d9
      Daniel Vetter authored
      I found a few too many things that are tricky and not documented, so I
      started typing.
      
      I found a few more things that looked broken while typing, see the
      varios FIXME in drm_sched_entity.
      
      Also some of the usual logics:
      - actually include sched_entity.c declarations, that was lost in the
        move here: 620e762f ("drm/scheduler: move entity handling into
        separate file")
      
      - Ditch the kerneldoc for internal functions, keep the comments where
        they're describing more than what the function name already implies.
      
      - Switch drm_sched_entity to inline docs.
      Acked-by: default avatarMelissa Wen <mwen@igalia.com>
      Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> (v1)
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Cc: Lucas Stach <l.stach@pengutronix.de>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Maxime Ripard <mripard@kernel.org>
      Cc: Thomas Zimmermann <tzimmermann@suse.de>
      Cc: "Christian König" <christian.koenig@amd.com>
      Cc: Boris Brezillon <boris.brezillon@collabora.com>
      Cc: Steven Price <steven.price@arm.com>
      Cc: Emma Anholt <emma@anholt.net>
      Cc: Lee Jones <lee.jones@linaro.org>
      Cc: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805104705.862416-7-daniel.vetter@ffwll.ch
      981b04d9
    • Daniel Vetter's avatar
      drm/sched: drop entity parameter from drm_sched_push_job · 0e10e9a1
      Daniel Vetter authored
      Originally a job was only bound to the queue when we pushed this, but
      now that's done in drm_sched_job_init, making that parameter entirely
      redundant.
      
      Remove it.
      
      The same applies to the context parameter in
      lima_sched_context_queue_task, simplify that too.
      
      v2:
      Rebase on top of msm adopting drm/sched
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Acked-by: default avatarEmma Anholt <emma@anholt.net>
      Acked-by: default avatarMelissa Wen <mwen@igalia.com>
      Reviewed-by: Steven Price <steven.price@arm.com> (v1)
      Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> (v1)
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Cc: Lucas Stach <l.stach@pengutronix.de>
      Cc: Russell King <linux+etnaviv@armlinux.org.uk>
      Cc: Christian Gmeiner <christian.gmeiner@gmail.com>
      Cc: Qiang Yu <yuq825@gmail.com>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>
      Cc: Steven Price <steven.price@arm.com>
      Cc: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
      Cc: Emma Anholt <emma@anholt.net>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Sumit Semwal <sumit.semwal@linaro.org>
      Cc: "Christian König" <christian.koenig@amd.com>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Cc: Nirmoy Das <nirmoy.das@amd.com>
      Cc: Dave Airlie <airlied@redhat.com>
      Cc: Chen Li <chenli@uniontech.com>
      Cc: Lee Jones <lee.jones@linaro.org>
      Cc: Deepak R Varma <mh12gx2825@gmail.com>
      Cc: Kevin Wang <kevin1.wang@amd.com>
      Cc: Luben Tuikov <luben.tuikov@amd.com>
      Cc: "Marek Olšák" <marek.olsak@amd.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
      Cc: Dennis Li <Dennis.Li@amd.com>
      Cc: Boris Brezillon <boris.brezillon@collabora.com>
      Cc: etnaviv@lists.freedesktop.org
      Cc: lima@lists.freedesktop.org
      Cc: linux-media@vger.kernel.org
      Cc: linaro-mm-sig@lists.linaro.org
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: Sean Paul <sean@poorly.run>
      Cc: Melissa Wen <mwen@igalia.com>
      Cc: linux-arm-msm@vger.kernel.org
      Cc: freedreno@lists.freedesktop.org
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805104705.862416-6-daniel.vetter@ffwll.ch
      0e10e9a1
    • Daniel Vetter's avatar
      drm/sched: Add dependency tracking · ebd5f742
      Daniel Vetter authored
      Instead of just a callback we can just glue in the gem helpers that
      panfrost, v3d and lima currently use. There's really not that many
      ways to skin this cat.
      
      v2/3: Rebased.
      
      v4: Repaint this shed. The functions are now called _add_dependency()
      and _add_implicit_dependency()
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> (v3)
      Reviewed-by: Steven Price <steven.price@arm.com> (v1)
      Acked-by: default avatarMelissa Wen <mwen@igalia.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Sumit Semwal <sumit.semwal@linaro.org>
      Cc: "Christian König" <christian.koenig@amd.com>
      Cc: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
      Cc: Lee Jones <lee.jones@linaro.org>
      Cc: Nirmoy Das <nirmoy.aiemd@gmail.com>
      Cc: Boris Brezillon <boris.brezillon@collabora.com>
      Cc: Luben Tuikov <luben.tuikov@amd.com>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Cc: linux-media@vger.kernel.org
      Cc: linaro-mm-sig@lists.linaro.org
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805104705.862416-5-daniel.vetter@ffwll.ch
      ebd5f742
    • Daniel Vetter's avatar
      drm/sched: Barriers are needed for entity->last_scheduled · b0a5303d
      Daniel Vetter authored
      It might be good enough on x86 with just READ_ONCE, but the write side
      should then at least be WRITE_ONCE because x86 has total store order.
      
      It's definitely not enough on arm.
      
      Fix this proplery, which means
      - explain the need for the barrier in both places
      - point at the other side in each comment
      
      Also pull out the !sched_list case as the first check, so that the
      code flow is clearer.
      
      While at it sprinkle some comments around because it was very
      non-obvious to me what's actually going on here and why.
      
      Note that we really need full barriers here, at first I thought
      store-release and load-acquire on ->last_scheduled would be enough,
      but we actually requiring ordering between that and the queue state.
      
      v2: Put smp_rmp() in the right place and fix up comment (Andrey)
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Acked-by: default avatarMelissa Wen <mwen@igalia.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Cc: "Christian König" <christian.koenig@amd.com>
      Cc: Steven Price <steven.price@arm.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
      Cc: Lee Jones <lee.jones@linaro.org>
      Cc: Boris Brezillon <boris.brezillon@collabora.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805104705.862416-4-daniel.vetter@ffwll.ch
      b0a5303d