1. 30 Aug, 2021 3 commits
    • 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
  10. 16 Aug, 2021 6 commits