[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] x86: correct socket_cpumask allocation for AP



On 07/08/2015 11:38 AM, Jan Beulich wrote:
On 08.07.15 at 17:11, <dario.faggioli@xxxxxxxxxx> wrote:
On Wed, 2015-07-08 at 13:38 +0100, Jan Beulich wrote:
On 08.07.15 at 11:36, <chao.p.peng@xxxxxxxxxxxxxxx> wrote:
@@ -84,11 +85,21 @@ void *stack_base[NR_CPUS];
  static void smp_store_cpu_info(int id)
  {
      struct cpuinfo_x86 *c = cpu_data + id;
+    unsigned int socket;
*c = boot_cpu_data;
      if ( id != 0 )
+    {
          identify_cpu(c);
+ socket = cpu_to_socket(id);
+        if ( !socket_cpumask[socket] )
+        {
+            socket_cpumask[socket] = secondary_socket_cpumask;
+            secondary_socket_cpumask = NULL;
I don't think this will build with small enough NR_CPUS.

And it *does* *not* fix the issue on my box.
I.e. bad analysis (albeit it seemed correct to me) _and_ new code
not tested. Chao, one more try, or we'll have to revert the whole
series (closing the window for it for 4.6).

FWIW, this fixes it for me:

diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c
index c73aa1b..a93c723 100644
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -707,6 +707,8 @@ static int cpu_smpboot_alloc(unsigned int cpu)
     unsigned long stub_page;
     unsigned int socket = cpu_to_socket(cpu);

+    socket = cpu >> 4;
+
     if ( node != NUMA_NO_NODE )
         memflags = MEMF_node(node);



But I suspect this is not what you want ;-)

-boris



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.