<div>setup_per_cpu_areas just prepare a per-cpu area for each</div><div>possible cpu, and it doesn't try to start up other possible cpu(s).</div><div><br></div><div>The address of  a per-cpu area corresponding to this cpu will be </div><div>written to its per-cpu-area register , before starting up.</div><div><br></div><div>Starting up other non-boot cpu happens in start_secondary function.</div><div><div><br></div><div>Larry</div><div><br></div><div style="font-size: 12px;font-family: Arial Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div><div style="font-size: 12px;background:#efefef;padding:8px;"><div><b>From: </b> "Dave Tian"<dave.jing.tian@gmail.com>;</div><div><b>Date: </b> Sat, Apr 23, 2016 10:02 PM</div><div><b>To: </b> "ÂäºÛ"<losemyheaven@qq.com>;<wbr></div><div><b>Cc: </b> "kernelnewbies"<kernelnewbies@kernelnewbies.org>; <wbr></div><div><b>Subject: </b> Re: where is __percpu_seg initialized?</div></div><div><br></div>load_percpu_segment, which is called by switch_to_new_gdt in setup_per_cpu_areas.<br><br>-daveti<br><br><br>> On Apr 23, 2016, at 3:24 AM, ÂäºÛ <losemyheaven@qq.com> wrote:<br>> <br>> Hi all:<br>> I knew the kernel implement the per-cpu variable via __percpu_seg. For example on x86 architecture, it's defined as:<br>> <br>> #ifdef CONFIG_X86_64<br>> #define __percpu_seg         gs<br>> #define __percpu_mov_op                movq<br>> #else<br>> #define __percpu_seg             fs<br>> #define __percpu_mov_op                movl<br>> #endif <br>>     <br>> But I'm curious where __percpu_seg is initialized?? I fail to find the relative code. Thanks.<br>> _______________________________________________<br>> Kernelnewbies mailing list<br>> Kernelnewbies@kernelnewbies.org<br>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies<br><br></div>