WARNING - OLD ARCHIVES

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/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] x86-64: enforce memory limits imposed by virtual mem

To: <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] x86-64: enforce memory limits imposed by virtual memory layout
From: "Jan Beulich" <jbeulich@xxxxxxxxxx>
Date: Tue, 16 Sep 2008 15:53:46 +0100
Delivery-date: Tue, 16 Sep 2008 07:53:33 -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
... which currently means:
- The 1:1 map cannot deal with more than 1Tb.
- The m2p table can handle at most 8Tb.
- The page_info array can cover up to e.g. 1.6Gb (<= 64 CPUs) or
  1Tb (193-256 CPUs).

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>

Index: 2008-09-01/xen/arch/x86/e820.c
===================================================================
--- 2008-09-01.orig/xen/arch/x86/e820.c 2008-09-05 16:14:11.000000000 +0200
+++ 2008-09-01/xen/arch/x86/e820.c      2008-09-16 16:47:24.000000000 +0200
@@ -4,6 +4,7 @@
 #include <xen/compat.h>
 #include <xen/dmi.h>
 #include <asm/e820.h>
+#include <asm/mm.h>
 #include <asm/page.h>
 
 /* opt_mem: Limit of physical RAM. Any RAM beyond this point is ignored. */
@@ -327,7 +328,7 @@ static void __init clip_to_limit(uint64_
             continue;
         if ( warnmsg )
         {
-            snprintf(_warnmsg, sizeof(_warnmsg), warnmsg, (int)(limit>>30));
+            snprintf(_warnmsg, sizeof(_warnmsg), warnmsg, (long)(limit>>30));
             printk("WARNING: %s\n", _warnmsg);
         }
         printk("Truncating memory map to %lukB\n",
@@ -366,8 +367,25 @@ static void __init machine_specific_memo
 
 #ifdef __i386__
     clip_to_limit((1ULL << 30) * MACHPHYS_MBYTES,
-                  "Only the first %u GB of the physical memory map "
+                  "Only the first %lu GB of the physical memory map "
                   "can be accessed by Xen in 32-bit mode.");
+#else
+    {
+        unsigned long limit, mpt_limit, pft_limit;
+
+        limit = DIRECTMAP_VIRT_END - DIRECTMAP_VIRT_START;
+        mpt_limit = ((RDWR_MPT_VIRT_END - RDWR_MPT_VIRT_START)
+                     / sizeof(unsigned long)) << PAGE_SHIFT;
+        pft_limit = ((FRAMETABLE_VIRT_END - FRAMETABLE_VIRT_START)
+                     / sizeof(struct page_info)) << PAGE_SHIFT;
+        if ( limit > mpt_limit )
+            limit = mpt_limit;
+        if ( limit > pft_limit )
+            limit = pft_limit;
+        clip_to_limit(limit,
+                      "Only the first %lu GB of the physical "
+                      "memory map can be accessed by Xen.");
+    }
 #endif
 
     reserve_dmi_region();




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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH] x86-64: enforce memory limits imposed by virtual memory layout, Jan Beulich <=