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

Re: [Xen-devel] [PATCH v6 01/14] x86: add socket_to_cpumask



On Fri, Apr 24, 2015 at 03:46:11PM +0100, Jan Beulich wrote:
> >>> On 23.04.15 at 11:55, <chao.p.peng@xxxxxxxxxxxxxxx> wrote:
> > @@ -301,6 +304,8 @@ static void set_cpu_sibling_map(int cpu)
> >              }
> >          }
> >      }
> > +
> > +    cpumask_set_cpu(cpu, &socket_to_cpumask[cpu_to_socket(cpu)]);
> >  }
> 
> There is an early return path in this function, which you need to
> deal with.
> 
> > @@ -717,6 +722,14 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
> >  
> >      stack_base[0] = stack_start;
> >  
> > +    nr_sockets = DIV_ROUND_UP(nr_cpu_ids, boot_cpu_data.x86_max_cores *
> > +                                          boot_cpu_data.x86_num_siblings);
> 
> I think this is going to be problematic when there are more CPUs
> in the system than Xen can (or is told to) handle.

After dived into the code I think there is no way we can do it
correctly, especially when we want to get the nr_sockets which counts
in the unplugged socket(s) as well.

One possible way is to culculate the package mask from cpuid topology
first and then use it to culculate the possible sockets. It should work
but is also wasteful. For me, it's unacceptable.

Another way would be make a build time macro NR_SOCKETS, which is not so
flexible but makes all things easy.

Also, if you think it's needed, I can add a nr_socket boot option to
rewrite NR_SOCKETS if the default it not correct.

Chao

_______________________________________________
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®.