Commit c31f2ee5 authored by Tejun Heo's avatar Tejun Heo
Browse files

sched_ext: Fix enq_last_no_enq_fails selftest



cc9877fb ("sched_ext: Improve error reporting during loading") changed
how load failures are reported so that more error context can be
communicated. This breaks the enq_last_no_enq_fails test as attach no longer
fails. The scheduler is guaranteed to be ejected on attach completion with
full error information. Update enq_last_no_enq_fails so that it checks that
the scheduler is ejected using ops.exit().

Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Reported-by: default avatarVishal Chourasia <vishalc@linux.ibm.com>
Link: http://lkml.kernel.org/r/Zxknp7RAVNjmdJSc@linux.ibm.com
Fixes: cc9877fb ("sched_ext: Improve error reporting during loading")
parent 7724abf0
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -12,10 +12,18 @@

char _license[] SEC("license") = "GPL";

u32 exit_kind;

void BPF_STRUCT_OPS_SLEEPABLE(enq_last_no_enq_fails_exit, struct scx_exit_info *info)
{
	exit_kind = info->kind;
}

SEC(".struct_ops.link")
struct sched_ext_ops enq_last_no_enq_fails_ops = {
	.name			= "enq_last_no_enq_fails",
	/* Need to define ops.enqueue() with SCX_OPS_ENQ_LAST */
	.flags			= SCX_OPS_ENQ_LAST,
	.exit			= (void *) enq_last_no_enq_fails_exit,
	.timeout_ms		= 1000U,
};
+7 −3
Original line number Diff line number Diff line
@@ -31,8 +31,12 @@ static enum scx_test_status run(void *ctx)
	struct bpf_link *link;

	link = bpf_map__attach_struct_ops(skel->maps.enq_last_no_enq_fails_ops);
	if (link) {
		SCX_ERR("Incorrectly succeeded in to attaching scheduler");
	if (!link) {
		SCX_ERR("Incorrectly failed at attaching scheduler");
		return SCX_TEST_FAIL;
	}
	if (!skel->bss->exit_kind) {
		SCX_ERR("Incorrectly stayed loaded");
		return SCX_TEST_FAIL;
	}

@@ -50,7 +54,7 @@ static void cleanup(void *ctx)

struct scx_test enq_last_no_enq_fails = {
	.name = "enq_last_no_enq_fails",
	.description = "Verify we fail to load a scheduler if we specify "
	.description = "Verify we eject a scheduler if we specify "
		       "the SCX_OPS_ENQ_LAST flag without defining "
		       "ops.enqueue()",
	.setup = setup,