Xen 
 
Home About Xen.org Xen Xen Summit Wiki Mailing List Bug Tracker Xen Downloads
 
   
 

xen-bugs

[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
http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=655

           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);                       
\
                __physid_mask;                                                 
\
        })


-- 
Configure bugmail: 
http://bugzilla.xensource.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

_______________________________________________
Xen-bugs mailing list
Xen-bugs@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-bugs