mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +02:00 
			
		
		
		
	sched_ext, scx_qmap: Add and use SCX_ENQ_CPU_SELECTED
scx_qmap and other schedulers in the SCX repo are using SCX_ENQ_WAKEUP to tell whether ops.select_cpu() was called. This is incorrect as ops.select_cpu() can be skipped in the wakeup path and leads to e.g. incorrectly skipping direct dispatch for tasks that are bound to a single CPU. sched core has been updated to specify ENQUEUE_RQ_SELECTED if ->select_task_rq() was called. Map it to SCX_ENQ_CPU_SELECTED and update scx_qmap to test it instead of SCX_ENQ_WAKEUP. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: David Vernet <void@manifault.com> Cc: Daniel Hodges <hodges.daniel.scott@gmail.com> Cc: Changwoo Min <multics69@gmail.com> Cc: Andrea Righi <andrea.righi@linux.dev> Cc: Dan Schatzberg <schatzberg.dan@gmail.com>
This commit is contained in:
		
							parent
							
								
									f207dc2dcd
								
							
						
					
					
						commit
						9b671793c7
					
				
					 2 changed files with 3 additions and 2 deletions
				
			
		|  | @ -696,6 +696,7 @@ enum scx_enq_flags { | |||
| 	/* expose select ENQUEUE_* flags as enums */ | ||||
| 	SCX_ENQ_WAKEUP		= ENQUEUE_WAKEUP, | ||||
| 	SCX_ENQ_HEAD		= ENQUEUE_HEAD, | ||||
| 	SCX_ENQ_CPU_SELECTED	= ENQUEUE_RQ_SELECTED, | ||||
| 
 | ||||
| 	/* high 32bits are SCX specific */ | ||||
| 
 | ||||
|  |  | |||
|  | @ -230,8 +230,8 @@ void BPF_STRUCT_OPS(qmap_enqueue, struct task_struct *p, u64 enq_flags) | |||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	/* if !WAKEUP, select_cpu() wasn't called, try direct dispatch */ | ||||
| 	if (!(enq_flags & SCX_ENQ_WAKEUP) && | ||||
| 	/* if select_cpu() wasn't called, try direct dispatch */ | ||||
| 	if (!(enq_flags & SCX_ENQ_CPU_SELECTED) && | ||||
| 	    (cpu = pick_direct_dispatch_cpu(p, scx_bpf_task_cpu(p))) >= 0) { | ||||
| 		__sync_fetch_and_add(&nr_ddsp_from_enq, 1); | ||||
| 		scx_bpf_dispatch(p, SCX_DSQ_LOCAL_ON | cpu, slice_ns, enq_flags); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Tejun Heo
						Tejun Heo