mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-04 17:05:12 -04:00
drm/sched/tests: Add unit test for cancel_job()
The scheduler unit tests now provide a new callback, cancel_job(). This callback gets used by drm_sched_fini() for all still pending jobs to cancel them. Implement a new unit test to test this. Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com> Signed-off-by: Philipp Stanner <phasta@kernel.org> Link: https://lore.kernel.org/r/20250710125412.128476-6-phasta@kernel.org
This commit is contained in:
@@ -204,6 +204,47 @@ static struct kunit_suite drm_sched_basic = {
|
||||
.test_cases = drm_sched_basic_tests,
|
||||
};
|
||||
|
||||
static void drm_sched_basic_cancel(struct kunit *test)
|
||||
{
|
||||
struct drm_mock_sched_entity *entity;
|
||||
struct drm_mock_scheduler *sched;
|
||||
struct drm_mock_sched_job *job;
|
||||
bool done;
|
||||
|
||||
/*
|
||||
* Check that drm_sched_fini() uses the cancel_job() callback to cancel
|
||||
* jobs that are still pending.
|
||||
*/
|
||||
|
||||
sched = drm_mock_sched_new(test, MAX_SCHEDULE_TIMEOUT);
|
||||
entity = drm_mock_sched_entity_new(test, DRM_SCHED_PRIORITY_NORMAL,
|
||||
sched);
|
||||
|
||||
job = drm_mock_sched_job_new(test, entity);
|
||||
|
||||
drm_mock_sched_job_submit(job);
|
||||
|
||||
done = drm_mock_sched_job_wait_scheduled(job, HZ);
|
||||
KUNIT_ASSERT_TRUE(test, done);
|
||||
|
||||
drm_mock_sched_entity_free(entity);
|
||||
drm_mock_sched_fini(sched);
|
||||
|
||||
KUNIT_ASSERT_EQ(test, job->hw_fence.error, -ECANCELED);
|
||||
}
|
||||
|
||||
static struct kunit_case drm_sched_cancel_tests[] = {
|
||||
KUNIT_CASE(drm_sched_basic_cancel),
|
||||
{}
|
||||
};
|
||||
|
||||
static struct kunit_suite drm_sched_cancel = {
|
||||
.name = "drm_sched_basic_cancel_tests",
|
||||
.init = drm_sched_basic_init,
|
||||
.exit = drm_sched_basic_exit,
|
||||
.test_cases = drm_sched_cancel_tests,
|
||||
};
|
||||
|
||||
static void drm_sched_basic_timeout(struct kunit *test)
|
||||
{
|
||||
struct drm_mock_scheduler *sched = test->priv;
|
||||
@@ -471,6 +512,7 @@ static struct kunit_suite drm_sched_credits = {
|
||||
|
||||
kunit_test_suites(&drm_sched_basic,
|
||||
&drm_sched_timeout,
|
||||
&drm_sched_cancel,
|
||||
&drm_sched_priority,
|
||||
&drm_sched_modify_sched,
|
||||
&drm_sched_credits);
|
||||
|
||||
Reference in New Issue
Block a user