|
|
 |
|
|
|
|
|
|
|
xen-bugs
[Xen-bugs] [Bug 655] New: physid_set() not always setting bit
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
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-bugs] [Bug 655] New: physid_set() not always setting bit,
bugzilla-daemon <=
|
|
|
|
|