1. 30 Aug, 2021 9 commits
    • 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
    • Daniel Vetter's avatar
      drm/msm: Improve drm/sched point of no return rules · 357285a2
      Daniel Vetter authored
      Originally drm_sched_job_init was the point of no return, after which
      drivers really should submit a job. I've split that up, which allows
      us to fix this issue pretty easily.
      
      Only thing we have to take care of is to not skip to error paths after
      that. Other drivers do this the same for out-fence and similar things.
      
      v2: It's not really a bugfix, just an improvement, since all
      drm_sched_job_arm does is reserve the fence number. And gaps should be
      fine, as long as the drm_sched_job doesn't escape anywhere at all.
      
      For robustness it's still better to align with other drivers here and
      not bail out after job_arm().
      
      v3: I misplaced drm_sched_job_arm by _one_ line! Thanks to Rob for
      testing and debug help.
      
      Cc: Rob Clark <robdclark@chromium.org>
      Cc: Rob Clark <robdclark@gmail.com>
      Tested-by: default avatarRob 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: dri-devel@lists.freedesktop.org
      Cc: freedreno@lists.freedesktop.org
      Cc: linux-media@vger.kernel.org
      Cc: linaro-mm-sig@lists.linaro.org
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210826093334.1117944-1-daniel.vetter@ffwll.ch
      357285a2
    • Daniel Vetter's avatar
      drm/sched: Split drm_sched_job_init · dbe48d03
      Daniel Vetter authored
      This is a very confusingly named function, because not just does it
      init an object, it arms it and provides a point of no return for
      pushing a job into the scheduler. It would be nice if that's a bit
      clearer in the interface.
      
      But the real reason is that I want to push the dependency tracking
      helpers into the scheduler code, and that means drm_sched_job_init
      must be called a lot earlier, without arming the job.
      
      v2:
      - don't change .gitignore (Steven)
      - don't forget v3d (Emma)
      
      v3: Emma noticed that I leak the memory allocated in
      drm_sched_job_init if we bail out before the point of no return in
      subsequent driver patches. To be able to fix this change
      drm_sched_job_cleanup() so it can handle being called both before and
      after drm_sched_job_arm().
      
      Also improve the kerneldoc for this.
      
      v4:
      - Fix the drm_sched_job_cleanup logic, I inverted the booleans, as
        usual (Melissa)
      
      - Christian pointed out that drm_sched_entity_select_rq() also needs
        to be moved into drm_sched_job_arm, which made me realize that the
        job->id definitely needs to be moved too.
      
        Shuffle things to fit between job_init and job_arm.
      
      v5:
      Reshuffle the split between init/arm once more, amdgpu abuses
      drm_sched.ready to signal gpu reset failures. Also document this
      somewhat. (Christian)
      
      v6:
      Rebase on top of the msm drm/sched support. Note that the
      drm_sched_job_init() call is completely misplaced, and hence also the
      split-out drm_sched_entity_push_job(). I've put in a FIXME which the next
      patch will address.
      
      v7: Drop the FIXME in msm, after discussions with Rob I agree it shouldn't
      be a problem where it is now.
      Acked-by: default avatarChristian König <christian.koenig@amd.com>
      Acked-by: default avatarMelissa Wen <mwen@igalia.com>
      Cc: Melissa Wen <melissa.srw@gmail.com>
      Acked-by: default avatarEmma Anholt <emma@anholt.net>
      Acked-by: Steven Price <steven.price@arm.com> (v2)
      Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> (v5)
      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: 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: Masahiro Yamada <masahiroy@kernel.org>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Adam Borowski <kilobyte@angband.pl>
      Cc: Nick Terrell <terrelln@fb.com>
      Cc: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
      Cc: Paul Menzel <pmenzel@molgen.mpg.de>
      Cc: Sami Tolvanen <samitolvanen@google.com>
      Cc: Viresh Kumar <viresh.kumar@linaro.org>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Cc: Dave Airlie <airlied@redhat.com>
      Cc: Nirmoy Das <nirmoy.das@amd.com>
      Cc: Deepak R Varma <mh12gx2825@gmail.com>
      Cc: Lee Jones <lee.jones@linaro.org>
      Cc: Kevin Wang <kevin1.wang@amd.com>
      Cc: Chen Li <chenli@uniontech.com>
      Cc: Luben Tuikov <luben.tuikov@amd.com>
      Cc: "Marek Olšák" <marek.olsak@amd.com>
      Cc: Dennis Li <Dennis.Li@amd.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
      Cc: Sonny Jiang <sonny.jiang@amd.com>
      Cc: Boris Brezillon <boris.brezillon@collabora.com>
      Cc: Tian Tao <tiantao6@hisilicon.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: Emma Anholt <emma@anholt.net>
      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/20210817084917.3555822-1-daniel.vetter@ffwll.ch
      dbe48d03
  2. 29 Aug, 2021 1 commit
  3. 28 Aug, 2021 1 commit
  4. 27 Aug, 2021 2 commits
  5. 26 Aug, 2021 7 commits
  6. 23 Aug, 2021 7 commits
  7. 20 Aug, 2021 6 commits
  8. 18 Aug, 2021 3 commits
  9. 17 Aug, 2021 4 commits