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


[Xen-bugs] [Bug 655] New: physid_set() not always setting bit

To: xen-bugs@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-bugs] [Bug 655] New: physid_set() not always setting bit
From: bugzilla-daemon@xxxxxxxxxxxxxxxxxxx
Date: Mon, 22 May 2006 12:04:15 -0700
Delivery-date: Mon, 22 May 2006 12:05:03 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-bugs-request@lists.xensource.com?subject=help>
List-id: Xen Bugzilla <xen-bugs.lists.xensource.com>
List-post: <mailto:xen-bugs@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-bugs>, <mailto:xen-bugs-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-bugs>, <mailto:xen-bugs-request@lists.xensource.com?subject=unsubscribe>
Reply-to: bugs@xxxxxxxxxxxxxxxxxx
Sender: xen-bugs-bounces@xxxxxxxxxxxxxxxxxxx

           Summary: physid_set() not always setting bit
           Product: Xen
           Version: unstable
          Platform: x86-64
        OS/Version: Linux
            Status: NEW
          Severity: major
          Priority: P1
         Component: Hardware Support
        AssignedTo: xen-bugs@xxxxxxxxxxxxxxxxxxx
        ReportedBy: habanero@xxxxxxxxxx
                CC: niv@xxxxxxxxxx

It looks like physid_set() is not setting a bit in a position greater than the
native word size.  This is a problem for physid_mask_of_physid(), when we
populate a "sparse" cpu-mask for phys_cpu_present_map.  For some of our large
systems, we cannot boot more than 16 cpus because the phys_cpu_present_map
needs bits set beyond bit 63 (we have apic IDs greater than 63).  The following
change fixes the problem for us:

--- xen-unstable.hg-9585/xen/include/asm-x86/mpspec.h   2006-04-10
12:49:03.000000000 -0500
+++ xen-unstable.hg-20060407/xen/include/asm-x86/mpspec.h       2006-04-10
11:26:35.000000000 -0500
@@ -71,7 +71,8 @@ typedef struct physid_mask physid_mask_t
 #define physid_mask_of_physid(physid)                                         
                physid_mask_t __physid_mask = PHYSID_MASK_NONE;                
-               physid_set(physid, __physid_mask);                             
+               __physid_mask.mask[physid / BITS_PER_LONG] =                   
+                       1UL << (physid % BITS_PER_LONG);                       

Configure bugmail: 
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

Xen-bugs mailing list