Skip to content

drm/sched: Fix memory leaks with cancel_job() callback

Philipp Stanner dri-devel linux-media lkml nouveau stable 4 versions – Applied

Status from this message: Pushed to drm-misc-next, with an RB from Tvrtko I had forgot, and

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest8 patches 3 repliesApplied
  2. v37 patches 1 replySuperseded
  3. v27 patches 7 repliesSuperseded
Earlier versions · 1
VersionPostedPatchesRepliesStatus
v16 patches8 repliesSuperseded

Changes in v4 from the cover letter

- Change dev_err() to dev_warn() in pending_list emptyness check.

Patches in v4 Applied

#Subject and filesSizeRepliesApplied
1/8drm/panfrost: Fix scheduler workqueue bugdrivers/gpu/drm/panfrost/panfrost_job.c+1 -11 reply
2/8drm/sched: Avoid memory leaks with cancel_job() callbackdrivers/gpu/drm/scheduler/sched_main.c include/drm/gpu_scheduler.h+39 -130 replies
3/8drm/sched/tests: Implement cancel_job() callbackdrivers/gpu/drm/scheduler/tests/mock_scheduler.c drivers/gpu/drm/scheduler/tests/sched_tests.h+25 -440 replies
4/8drm/sched/tests: Add unit test for cancel_job()drivers/gpu/drm/scheduler/tests/tests_basic.c+42 -00 replies
5/8drm/sched: Warn if pending_list is not emptydrivers/gpu/drm/scheduler/sched_main.c+3 -01 reply
6/8drm/nouveau: Make fence container helper usable driver-widedrivers/gpu/drm/nouveau/nouveau_fence.c drivers/gpu/drm/nouveau/nouveau_fence.h+13 -130 replies
7/8drm/nouveau: Add new callback for scheduler teardowndrivers/gpu/drm/nouveau/nouveau_fence.c drivers/gpu/drm/nouveau/nouveau_fence.h drivers/gpu/drm/nouveau/nouveau_sched.c+30 -10 replies
8/8drm/nouveau: Remove waitque for sched teardowndrivers/gpu/drm/nouveau/nouveau_sched.c drivers/gpu/drm/nouveau/nouveau_sched.h drivers/gpu/drm/nouveau/nouveau_uvmm.c+14 -230 replies

Reviews trailers per patch

6 of 8 patches have a Reviewed-by or Acked-by.

PatchMaíra CanalTvrtko UrsulinDanilo Krummrich
1/8
2/8R-b
3/8
4/8R-b
5/8A-b
6/8A-b
7/8A-b
8/8A-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v4 thread

Cover letter [PATCH v4 0/8] drm/sched: Fix memory leaks with cancel_job() callback

Changes in v4:
- Change dev_err() to dev_warn() in pending_list emptyness check.

Changes in v3:
- Remove forgotten copy-past artifacts. (Tvrtko)
- Remove forgotten done_list struct member. (Tvrtko)
- Slightly adjust commit message of patch 7.
- Add RBs. (Maira, Danilo, Tvrtko)

Changes in v2:
- Add new unit test to test cancel_job()'s behavior. (Tvrtko)
- Add RB from Maíra

Changes since the RFC:
- Rename helper function for drm_sched_fini(). (Tvrtko)
- Add Link to Tvrtko's RFC patch to patch 1.

Since a long time, drm_sched_fini() can leak jobs that are still in drm_sched.pending_list.

This series solves the leaks in a backwards-compatible manner by adding a new, optional callback. If that callback is implemented, the scheduler uses it to cancel all jobs from pending_list and then frees them.

Philipp Stanner (8):
drm/panfrost: Fix scheduler workqueue bug drm/sched: Avoid memory leaks with cancel_job() callback drm/sched/tests: Implement cancel_job() callback drm/sched/tests: Add unit test for cancel_job() drm/sched: Warn if pending_list is not empty drm/nouveau: Make fence container helper usable driver-wide drm/nouveau: Add new callback for scheduler teardown drm/nouveau: Remove waitque for sched teardown

 drivers/gpu/drm/nouveau/nouveau_fence.c       | 35 ++++++----
 drivers/gpu/drm/nouveau/nouveau_fence.h       |  7 ++
 drivers/gpu/drm/nouveau/nouveau_sched.c       | 35 ++++++----
 drivers/gpu/drm/nouveau/nouveau_sched.h       |  9 +--
 drivers/gpu/drm/nouveau/nouveau_uvmm.c        |  8 +--
 drivers/gpu/drm/panfrost/panfrost_job.c       |  2 +-
 drivers/gpu/drm/scheduler/sched_main.c        | 37 ++++++----
 .../gpu/drm/scheduler/tests/mock_scheduler.c  | 68 +++++++------------
 drivers/gpu/drm/scheduler/tests/sched_tests.h |  1 -
 drivers/gpu/drm/scheduler/tests/tests_basic.c | 42 ++++++++++++
 include/drm/gpu_scheduler.h                   | 18 +++++
 11 files changed, 167 insertions(+), 95 deletions(-)
Signature · 1 line
2.49.0