mirror of
https://github.com/torvalds/linux.git
synced 2026-09-25 21:21:09 -04:00
kthread: use kthread_create_on_node()
ksoftirqd, kworker, migration, and pktgend kthreads can be created with kthread_create_on_node(), to get proper NUMA affinities for their stack and task_struct. Signed-off-by: Eric Dumazet <[email protected]> Acked-by: David S. Miller <[email protected]> Reviewed-by: Andi Kleen <[email protected]> Acked-by: Rusty Russell <[email protected]> Acked-by: Tejun Heo <[email protected]> Cc: Tony Luck <[email protected]> Cc: Fenghua Yu <[email protected]> Cc: David Howells <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
committed by
Linus Torvalds
parent
207205a2ba
commit
94dcf29a11
+4
-1
@@ -845,7 +845,10 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb,
|
||||
switch (action) {
|
||||
case CPU_UP_PREPARE:
|
||||
case CPU_UP_PREPARE_FROZEN:
|
||||
p = kthread_create(run_ksoftirqd, hcpu, "ksoftirqd/%d", hotcpu);
|
||||
p = kthread_create_on_node(run_ksoftirqd,
|
||||
hcpu,
|
||||
cpu_to_node(hotcpu),
|
||||
"ksoftirqd/%d", hotcpu);
|
||||
if (IS_ERR(p)) {
|
||||
printk("ksoftirqd for %i failed\n", hotcpu);
|
||||
return notifier_from_errno(PTR_ERR(p));
|
||||
|
||||
@@ -301,8 +301,10 @@ static int __cpuinit cpu_stop_cpu_callback(struct notifier_block *nfb,
|
||||
case CPU_UP_PREPARE:
|
||||
BUG_ON(stopper->thread || stopper->enabled ||
|
||||
!list_empty(&stopper->works));
|
||||
p = kthread_create(cpu_stopper_thread, stopper, "migration/%d",
|
||||
cpu);
|
||||
p = kthread_create_on_node(cpu_stopper_thread,
|
||||
stopper,
|
||||
cpu_to_node(cpu),
|
||||
"migration/%d", cpu);
|
||||
if (IS_ERR(p))
|
||||
return notifier_from_errno(PTR_ERR(p));
|
||||
get_task_struct(p);
|
||||
|
||||
+4
-2
@@ -1366,8 +1366,10 @@ static struct worker *create_worker(struct global_cwq *gcwq, bool bind)
|
||||
worker->id = id;
|
||||
|
||||
if (!on_unbound_cpu)
|
||||
worker->task = kthread_create(worker_thread, worker,
|
||||
"kworker/%u:%d", gcwq->cpu, id);
|
||||
worker->task = kthread_create_on_node(worker_thread,
|
||||
worker,
|
||||
cpu_to_node(gcwq->cpu),
|
||||
"kworker/%u:%d", gcwq->cpu, id);
|
||||
else
|
||||
worker->task = kthread_create(worker_thread, worker,
|
||||
"kworker/u:%d", id);
|
||||
|
||||
+4
-1
@@ -3761,7 +3761,10 @@ static int __init pktgen_create_thread(int cpu)
|
||||
list_add_tail(&t->th_list, &pktgen_threads);
|
||||
init_completion(&t->start_done);
|
||||
|
||||
p = kthread_create(pktgen_thread_worker, t, "kpktgend_%d", cpu);
|
||||
p = kthread_create_on_node(pktgen_thread_worker,
|
||||
t,
|
||||
cpu_to_node(cpu),
|
||||
"kpktgend_%d", cpu);
|
||||
if (IS_ERR(p)) {
|
||||
pr_err("kernel_thread() failed for cpu %d\n", t->cpu);
|
||||
list_del(&t->th_list);
|
||||
|
||||
Reference in New Issue
Block a user