From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: [PATCH 1/2] x86: during boot, anticipate identifying the boot cpu Date: Mon, 25 Aug 2014 09:35:52 +0100 Message-ID: <53FB1188020000780002D122@mail.emea.novell.com> References: <20140822165628.32764.15082.stgit@Solace.lan> <20140822171534.32764.77550.stgit@Solace.lan> <53F77DC4.4080703@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1XLpkq-0007sK-GP for xen-devel@lists.xenproject.org; Mon, 25 Aug 2014 08:35:56 +0000 In-Reply-To: <53F77DC4.4080703@citrix.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Andrew Cooper , Dario Faggioli , xen-devel Cc: george.dunlap@eu.citrix.com, keir@xen.org List-Id: xen-devel@lists.xenproject.org >>> On 22.08.14 at 19:28, wrote: > On 22/08/14 18:15, Dario Faggioli wrote: >> --- a/xen/arch/x86/smpboot.c >> +++ b/xen/arch/x86/smpboot.c >> @@ -59,7 +59,8 @@ DEFINE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_core_mask); >> cpumask_t cpu_online_map __read_mostly; >> EXPORT_SYMBOL(cpu_online_map); >> >> -struct cpuinfo_x86 cpu_data[NR_CPUS]; >> +struct cpuinfo_x86 cpu_data[NR_CPUS] = >> + { [0 ... NR_CPUS-1] = { .phys_proc_id=-1 } }; > > This moves a huge chunk of data from .bss to .data. Can it not be fixed > by enumerating topology on APs before setting scheduling up? Yeah, I was intending to ask the same thing. Just set .phys_proc_id to -1 early during CPU bringup. >> --- a/xen/include/asm-x86/processor.h >> +++ b/xen/include/asm-x86/processor.h >> @@ -213,8 +213,10 @@ extern void detect_extended_topology(struct cpuinfo_x86 *c); >> >> extern void detect_ht(struct cpuinfo_x86 *c); >> >> -#define cpu_to_core(_cpu) (cpu_data[_cpu].cpu_core_id) >> -#define cpu_to_socket(_cpu) (cpu_data[_cpu].phys_proc_id) >> +#define cpu_to_core(_cpu) (cpu_data[_cpu].cpu_core_id) >> +#define cpu_to_socket(_cpu) (cpu_data[_cpu].phys_proc_id) >> +#define boot_cpu_to_core() (boot_cpu_data.phys_core_id) >> +#define boot_cpu_to_socket() (boot_cpu_data.phys_proc_id) > > This change is pointless. Anything explicitly referencing the bsp > should just use boot_cpu_data directly, rather than obscuring the IDs > behind macros like this. If the purpose is to use these in arch-independent code, I think the "obscuring" actually makes sense. Jan