Tian, Kevin
2006-Apr-21 03:46 UTC
RE: [Xen-devel] [PATCH]Check the values of MAX_VIRT_CPUS and NR_CPUSfor SMP
Hi, Atsushi, I''m still not clear about the relationship between MAX_VIRT_CPUS and NR_CPUS. Why do you need to add that check to force MAX_VIRT_CPUS>=NR_CPUS? Normally for each physical cpu existing in cpu_present_map (or limited by max_cpus), __cpu_up is called and then a corresponding idle_vcpu will be created on that cpu. Later when timer interrupt is enabled on that physical cpu, scheduler begin to work with idle vcpu already existing. So it''s really strange to see you have a physical cpu with scheduler running however with idle_vcpu as null. Could you post more detail why MAX_VIRT_CPUS makes above weird thing happening? If MAX_VIRT_CPUS is the point, you may need find real cause from other places... Thanks, Kevin>-----Original Message----- >From: xen-devel-bounces@lists.xensource.com >[mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of Atsushi >SAKAI >Sent: 2006年4月21日 9:32 >To: xen-devel@lists.xensource.com >Subject: [Xen-devel] [PATCH]Check the values of MAX_VIRT_CPUS >and NR_CPUSfor SMP > >Hi, All > > This is a patch for checking # of CPUs consistency. >This patch compares the values of MAX_VIRT_CPU and NR_CPUS. >The object of this patch is to avoid boot error for SMP case. > >Reason for the need of this patch > >When we were testing SMP system, Boot sequence was failed >in the case of using BVT scheduler. >Each CPU assumed to have idle_vcpu in scheduler. >But these two values inconsistency makes the cpus which is not >assigned idle_vcpu. >This case is occurred MAX_VIRT_CPUS is less than # of Real CPU. >(for example MAX_VIRT_CPUS = 4 and Real CPU = 8 >4Real CPUs are not assigned to idle_vcpu) >Currently, no check routine exists in scheduler for this problem. >To solve this problem, I added check routine in xen/sched.h. > > > >Current situations > >This problem is currently solved in IA64 by CSET;9495 patch by >expanding both CPUS value to 64. >(Previously MAX_VIRT_CPUS = 8 and NR_CPUS = 4) > >#define MAX_VIRT_CPUS 64 in xen/include/public/arch-ia64.h >and >#define NR_CPUS 64 in xen/include/asm-ia64/config.h > >But the logical limit of the IA64 Max CPU is larger than 64. >If someone change these values, some possibility make this error again. > >To avoid this problem, I believe this check code should be exists. > >Signed-off-by: Atsushi SAKAI <sakaia@jp.fujitsu.com> > > >Atsushi SAKAI_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Tristan Gingold
2006-Apr-21 06:59 UTC
Re: [Xen-devel] [PATCH]Check the values of MAX_VIRT_CPUS and NR_CPUSfor SMP
Le Vendredi 21 Avril 2006 05:46, Tian, Kevin a écrit :> Hi, Atsushi, > I''m still not clear about the relationship between > MAX_VIRT_CPUS and NR_CPUS. Why do you need to add that > check to force MAX_VIRT_CPUS>=NR_CPUS?The simple answer is idle domain. idle domain is SMP-guest for a long time, because it creates a VCPU for each CPUS! See also Keir message. Tristan. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel