lkml.org 
[lkml]   [2019]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v2 1/8] RISC-V: Do not wait indefinitely in __cpu_up
> 
> void *__cpu_up_stack_pointer[NR_CPUS];
> void *__cpu_up_task_pointer[NR_CPUS];
> +static DECLARE_COMPLETION(cpu_running);
>
> void __init smp_prepare_boot_cpu(void)
> {
> @@ -81,6 +82,7 @@ void __init setup_smp(void)
>
> int __cpu_up(unsigned int cpu, struct task_struct *tidle)
> {
> + int ret = 0;
> int hartid = cpuid_to_hartid_map(cpu);
> tidle->thread_info.cpu = cpu;
>
> @@ -96,10 +98,15 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle)
> task_stack_page(tidle) + THREAD_SIZE);
> WRITE_ONCE(__cpu_up_task_pointer[hartid], tidle);
>
> - while (!cpu_online(cpu))
> - cpu_relax();
> + wait_for_completion_timeout(&cpu_running,
> + msecs_to_jiffies(1000));

Having a global completion here worries me. I bet we have some higher
level serialization, but can we comment or even better lockdep assert on
that?

Also please use up your available lines (72 in commit logs, 80 in source
files) instead of adding spurious line wraps.

\
 
 \ /
  Last update: 2019-01-15 14:51    [W:0.122 / U:6.612 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site