xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Dario Faggioli <dario.faggioli@citrix.com>,
	xen-devel <xen-devel@lists.xenproject.org>
Cc: george.dunlap@eu.citrix.com, keir@xen.org,
	Jan Beulich <JBeulich@suse.com>
Subject: Re: [PATCH 1/2] x86: during boot, anticipate identifying the boot cpu
Date: Fri, 22 Aug 2014 18:28:36 +0100	[thread overview]
Message-ID: <53F77DC4.4080703@citrix.com> (raw)
In-Reply-To: <20140822171534.32764.77550.stgit@Solace.lan>

On 22/08/14 18:15, Dario Faggioli wrote:
> and provide helpers to access the core and socket IDs,
> resulting from that identification phase.
>
> Also, initialize the socket ID of all the cpus to something
> invalid (-1), rather than leaving it as 0, which is at risk
> of being confused with "this CPU is on socket 0".
>
> All this is right now relevant to credit2 only, but may be
> useful in other schedulers, or elsewhere in general.
>
> Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com>
> ---
>  xen/arch/x86/setup.c            |    8 ++++++--
>  xen/arch/x86/smpboot.c          |    3 ++-
>  xen/include/asm-x86/processor.h |    6 ++++--
>  3 files changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index 6a814cd..f39fdf0 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1262,6 +1262,12 @@ void __init noreturn __start_xen(unsigned long mbi_p)
>  
>      timer_init();
>  
> +    /*
> +     * Identify the boot CPU, in case the scheduler initialization
> +     * needs to know about it (e.g., topology, etc.)
> +     */
> +    identify_cpu(&boot_cpu_data);
> +
>      init_idle_domain();
>  
>      trap_init();
> @@ -1272,8 +1278,6 @@ void __init noreturn __start_xen(unsigned long mbi_p)
>  
>      arch_init_memory();
>  
> -    identify_cpu(&boot_cpu_data);
> -
>      if ( cpu_has_fxsr )
>          set_in_cr4(X86_CR4_OSFXSR);
>      if ( cpu_has_xmm )
> diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c
> index 84f2d25..16a7474 100644
> --- 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?

>  
>  u32 x86_cpu_to_apicid[NR_CPUS] __read_mostly =
>  	{ [0 ... NR_CPUS-1] = BAD_APICID };
> diff --git a/xen/include/asm-x86/processor.h b/xen/include/asm-x86/processor.h
> index a156e01..76d47de 100644
> --- 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.

~Andrew

>  
>  unsigned int apicid_to_socket(unsigned int);
>  
>

  reply	other threads:[~2014-08-22 17:28 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-22 17:15 [PATCH 0/2] Credit2: fix per-socket runqueue setup Dario Faggioli
2014-08-22 17:15 ` [PATCH 1/2] x86: during boot, anticipate identifying the boot cpu Dario Faggioli
2014-08-22 17:28   ` Andrew Cooper [this message]
2014-08-22 18:40     ` Dario Faggioli
2014-08-25  8:35     ` Jan Beulich
2014-08-25  8:39   ` Jan Beulich
2014-09-01 15:12     ` George Dunlap
2014-09-01 15:24       ` Jan Beulich
2014-08-22 17:15 ` [PATCH 2/2] sched: credit2: use boot CPU info for CPU #0 Dario Faggioli
2014-08-25  8:41   ` Jan Beulich
2014-08-25  8:31 ` [PATCH 0/2] Credit2: fix per-socket runqueue setup Jan Beulich
2014-09-01 13:59   ` George Dunlap
2014-09-02 16:46     ` Dario Faggioli
2014-09-03 10:00       ` George Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53F77DC4.4080703@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=JBeulich@suse.com \
    --cc=dario.faggioli@citrix.com \
    --cc=george.dunlap@eu.citrix.com \
    --cc=keir@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).