mirror of
https://github.com/torvalds/linux.git
synced 2026-09-27 11:02:03 +02:00
sched_ext: Assign a unique id to each scheduler instance
Neither a scx_sched pointer nor its cgroup id uniquely identifies a scheduler instance. A freed sched's memory can be reallocated, and a cgroup can detach one sched and attach another. Add a monotonic, never-reused u64 id. A later patch compares it to drop a slice request that outlived a change of a task's owning scheduler. Signed-off-by: Tejun Heo <tj@kernel.org> Reviewed-by: Andrea Righi <arighi@nvidia.com>
This commit is contained in:
parent
147d1885f3
commit
61d564fcdf
|
|
@ -108,6 +108,9 @@ static bool dsq_is_rq_owned(struct scx_dispatch_q *dsq)
|
|||
}
|
||||
}
|
||||
|
||||
/* Cursor for unique scx_sched instance ids. id 0 is reserved. */
|
||||
static atomic64_t scx_sched_id_cursor = ATOMIC64_INIT(0);
|
||||
|
||||
#ifdef CONFIG_EXT_SUB_SCHED
|
||||
/*
|
||||
* The sub sched being enabled. Used by scx_disable_and_exit_task() to exit
|
||||
|
|
@ -6502,6 +6505,7 @@ struct scx_sched *scx_alloc_and_add_sched(struct scx_enable_cmd *cmd,
|
|||
level * sizeof(parent->ancestors[0]));
|
||||
sch->ancestors[level] = sch;
|
||||
sch->level = level;
|
||||
sch->id = atomic64_inc_return(&scx_sched_id_cursor);
|
||||
|
||||
if (ops->timeout_ms)
|
||||
sch->watchdog_timeout = msecs_to_jiffies(ops->timeout_ms);
|
||||
|
|
|
|||
|
|
@ -1445,6 +1445,9 @@ struct scx_sched {
|
|||
|
||||
struct list_head all;
|
||||
|
||||
/* unique instance id, monotonic and never reused */
|
||||
u64 id;
|
||||
|
||||
#ifdef CONFIG_EXT_SUB_SCHED
|
||||
struct rhash_head hash_node;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user