This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


Re: [Xen-devel] [PATCH] changeset 8831 gets sockets, cores, and siblings

To: Keir Fraser <Keir.Fraser@xxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] changeset 8831 gets sockets, cores, and siblings wrong
From: Andrew Theurer <habanero@xxxxxxxxxx>
Date: Thu, 16 Feb 2006 12:18:36 -0600
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Thu, 16 Feb 2006 18:31:09 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <d78f897640ab3448e8e8a283497e9ff1@xxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <43F39B4B.6080806@xxxxxxxxxx> <d78f897640ab3448e8e8a283497e9ff1@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 1.5 (X11/20051201)
Keir Fraser wrote:

On 15 Feb 2006, at 21:21, Andrew Theurer wrote:

FWIW, I noticed that changeset 8831 gets the sockets/cores/siblings incorrect on my system. On 8830 I get 4 sockets per node, 2 cores per socket, and 2 threads per core. On 8831 I get 1 socket per node, 2 cores per socket, and 8 threads per core. Xen boot messages still appear to show four distinct physical cpus (sockets). Just wondering if anyone has noticed this behavior.

This all stems from an incorrect value for smp_num_siblings. This could come from one of two places: 1. Do you get a message 'WARNING: 8 siblings found for CPUx, should be 2' during boot? If so, smpboot.c is screwing up the smp_num_siblings calculation. 2. Otherwise, detect_ht() in arch/x86/cpu/common.c must be the culprit, and you'll need to add some tracing to it to find out where the value '8' is coming from.
It looks like with changeset 8831 cpu_core_ids are no longer unique across phys cpus. So, when we search for siblings to populate cpu_sibling_map, just checking for same core IDs are not good enough. Both core ID and phys cpu ID have to match. Patch attached fixes this.


<signed-off-by: habanero@xxxxxxxxxx>
diff -Naurp xen-unstable.hg-8849/xen/arch/x86/smpboot.c 
--- xen-unstable.hg-8849/xen/arch/x86/smpboot.c 2006-02-16 12:15:53.000000000 
+++ xen-unstable.hg-8849-sibling_fix/xen/arch/x86/smpboot.c     2006-02-16 
12:11:33.000000000 -0600
@@ -1093,7 +1093,8 @@ static void __init smp_boot_cpus(unsigne
                        for (i = 0; i < NR_CPUS; i++) {
                                if (!cpu_isset(i, cpu_callout_map))
-                               if (cpu_core_id[cpu] == cpu_core_id[i]) {
+                               if (cpu_core_id[cpu] == cpu_core_id[i] && 
+                                    phys_proc_id[cpu] == phys_proc_id[i]) {
                                        cpu_set(i, cpu_sibling_map[cpu]);
Xen-devel mailing list