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-devel] [PATCH] Allow Hypervisor build with more than 64 CPUs

To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] Allow Hypervisor build with more than 64 CPUs
From: Bill Burns <bburns@xxxxxxxxxx>
Date: Fri, 15 Aug 2008 15:26:27 -0400
Delivery-date: Fri, 15 Aug 2008 12:36:38 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird (X11/20080515)
Trying to build the Xen hypervisor with max_phys_cpus=128
for x86_64 fails. (Note that this was on a 3.1 base, but
unstable appears to have the same issue).

There is a build assertion due to the size of
the page_info structure and the shadow_page_info
structures get out of sync due to the presence
of cpumask_t in the page info structure (which
grows with more than 64 CPUs).

The proposed fix is to tack on the following to
the end of shadow_page_info structure.

Kudo's to Eduardo Habkost for the workaround.

Signed-off-by: Bill Burns <bburns@xxxxxxxxxx>

--- xen/arch/x86/mm/shadow/private.h.orig       2007-12-06 12:48:38.000000000 
+++ xen/arch/x86/mm/shadow/private.h    2008-08-12 12:52:49.000000000 -0400
@@ -243,6 +243,12 @@ struct shadow_page_info
         /* For non-pinnable shadows, a higher entry that points at us */
         paddr_t up;
+#if NR_CPUS > 64
+    /* Need to add some padding to match struct page_info size,
+    * if cpumask_t is larger than a long
+    */
+    u8 padding[sizeof(cpumask_t)-sizeof(long)];

Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>