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-ppc-devel

Danger! Re: [XenPPC] [xenppc-unstable] [XEND][POWERPC] correct shadow2 m

To: xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
Subject: Danger! Re: [XenPPC] [xenppc-unstable] [XEND][POWERPC] correct shadow2 merge conflict
From: Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
Date: Wed, 23 Aug 2006 06:21:43 -0400
Delivery-date: Wed, 23 Aug 2006 03:22:27 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <E1GFdz7-0007nE-9e@xxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-ppc-devel-request@lists.xensource.com?subject=help>
List-id: Xen PPC development <xen-ppc-devel.lists.xensource.com>
List-post: <mailto:xen-ppc-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ppc-devel>, <mailto:xen-ppc-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ppc-devel>, <mailto:xen-ppc-devel-request@lists.xensource.com?subject=unsubscribe>
References: <E1GFdz7-0007nE-9e@xxxxxxxxxxxxxxxxxxxxx>
Sender: xen-ppc-devel-bounces@xxxxxxxxxxxxxxxxxxx
the push below does breaks domain building, unless there are additional instructions missing somewhere.
If you happened to pull/update, you can back out this patch with:
  $ hg log -p -r 8fa42dd4c92a | patch -p1 -R

I'll get with hollis and find out WTF

-JX

On Aug 22, 2006, at 5:40 PM, Xen patchbot-xenppc-unstable wrote:

# HG changeset patch
# User Hollis Blanchard <hollisb@xxxxxxxxxx>
# Node ID 8fa42dd4c92a1e3c27e20fc5225edaa49bfb4972
# Parent  5ec3af32d347a058f6939fb9b13c0cb2d6247566
[XEND][POWERPC] correct shadow2 merge conflict
Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx>
---
tools/python/xen/xend/XendDomainInfo.py | 45 +++++++++++ +-------------------- tools/python/xen/xend/image.py | 41 ++++++ +----------------------
 2 files changed, 27 insertions(+), 59 deletions(-)

diff -r 5ec3af32d347 -r 8fa42dd4c92a tools/python/xen/xend/ XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Tue Aug 22 16:32:54 2006 -0500 +++ b/tools/python/xen/xend/XendDomainInfo.py Tue Aug 22 16:35:07 2006 -0500
@@ -30,7 +30,6 @@ import time
 import time
 import threading
 import os
-import math

 import xen.lowlevel.xc
 from xen.util import asserts
@@ -1280,37 +1279,27 @@ class XendDomainInfo:
                 for v in range(0, self.info['max_vcpu_id']+1):
xc.vcpu_setaffinity(self.domid, v, self.info ['cpus'])

-            # set domain maxmem in KiB
- xc.domain_setmaxmem(self.domid, self.info['maxmem'] * 1024)
-
- m = self.image.getDomainMemory(self.info['memory'] * 1024)
+            # set memory limit
+ maxmem = self.image.getRequiredMemory(self.info ['maxmem'] * 1024)
+            xc.domain_setmaxmem(self.domid, maxmem)
+
+ mem_kb = self.image.getRequiredMemory(self.info ['memory'] * 1024)

             # get the domain's shadow memory requirement
- sm = int(math.ceil(self.image.getDomainShadowMemory (m) / 1024.0))
-            if self.info['shadow_memory'] > sm:
-                sm = self.info['shadow_memory']
+            shadow_kb = self.image.getRequiredShadowMemory(mem_kb)
+            shadow_kb_req = self.info['shadow_memory'] * 1024
+            if shadow_kb_req > shadow_kb:
+                shadow_kb = shadow_kb_req

             # Make sure there's enough RAM available for the domain
-            balloon.free(m + sm * 1024)
-
-            if os.uname()[4] in ('ppc64'):
-                self.info['shadow_memory'] = 0
-            else:
-                # Set up the shadow memory
-                sm = xc.shadow_mem_control(self.domid, mb=sm)
-                self.info['shadow_memory'] = sm
-
-            init_reservation = self.info['memory'] * 1024
-            if os.uname()[4] in ('ia64', 'ppc64'):
-                # Workaround for architectures that don't yet support
-                # ballooning.
-                init_reservation = m
-                # Following line from xiantao.zhang@xxxxxxxxx
- # Needed for IA64 until supports ballooning -- okay for PPC64?
-                xc.domain_setmaxmem(self.domid, m)
-
- xc.domain_memory_increase_reservation(self.domid, init_reservation,
-                                                  0, 0)
+            balloon.free(mem_kb + shadow_kb)
+
+            # Set up the shadow memory
+ shadow_cur = xc.shadow_mem_control(self.domid, shadow_kb * 1024)
+            self.info['shadow_memory'] = shadow_cur
+
+            # initial memory allocation
+ xc.domain_memory_increase_reservation(self.domid, mem_kb, 0, 0)

             self.createChannels()

diff -r 5ec3af32d347 -r 8fa42dd4c92a tools/python/xen/xend/image.py
--- a/tools/python/xen/xend/image.py    Tue Aug 22 16:32:54 2006 -0500
+++ b/tools/python/xen/xend/image.py    Tue Aug 22 16:35:07 2006 -0500
@@ -146,7 +146,7 @@ class ImageHandler:
     def getRequiredMemory(self, mem_kb):
         return mem_kb

-    def getDomainShadowMemory(self, mem_kb):
+    def getRequiredShadowMemory(self, mem_kb):
"""@return The minimum shadow memory required, in KiB, for a domain
         with mem_kb KiB of RAM."""
         # PV domains don't need any shadow memory
@@ -197,10 +197,6 @@ class PPC_LinuxImageHandler(LinuxImageHa
     def configure(self, imageConfig, deviceConfig):
         LinuxImageHandler.configure(self, imageConfig, deviceConfig)
         self.imageConfig = imageConfig
-
-    def getDomainMemory(self, mem_kb):
-        """@see ImageHandler.getDomainMemory"""
-        return mem_kb

     def buildDomain(self):
         store_evtchn = self.vm.getStorePort()
@@ -382,32 +378,6 @@ class HVMImageHandler(ImageHandler):
         os.waitpid(self.pid, 0)
         self.pid = 0

-    def getDomainMemory(self, mem_kb):
-        """@see ImageHandler.getDomainMemory"""
-        if os.uname()[4] == 'ia64':
-            page_kb = 16
- # ROM size for guest firmware, ioreq page and xenstore page
-            extra_pages = 1024 + 2
-        else:
-            page_kb = 4
-            # This was derived emperically:
-            #   2.4 MB overhead per 1024 MB RAM + 8 MB constant
-            #   + 4 to avoid low-memory condition
-            extra_mb = (2.4/1024) * (mem_kb/1024.0) + 12;
-            extra_pages = int( math.ceil( extra_mb*1024 / page_kb ))
-        return mem_kb + extra_pages * page_kb
-
-    def getDomainShadowMemory(self, mem_kb):
- """@return The minimum shadow memory required, in KiB, for a domain
-        with mem_kb KiB of RAM."""
-        if os.uname()[4] in ('ia64', 'ppc64'):
-            # Explicit shadow memory is not a concept
-            return 0
-        else:
-            # 1MB per vcpu plus 4Kib/Mib of RAM.  This is higher than
- # the minimum that Xen would allocate if no value were given.
-            return 1024 * self.vm.getVCpuCount() + mem_kb / 256
-
     def register_shutdown_watch(self):
         """ add xen store watch on control/shutdown """
self.shutdownWatch = xswatch(self.vm.dompath + "/control/ shutdown", \
@@ -453,6 +423,10 @@ class IA64_HVM_ImageHandler(HVMImageHand
         # ROM size for guest firmware, ioreq page and xenstore page
         extra_pages = 1024 + 2
         return mem_kb + extra_pages * page_kb
+
+    def getRequiredShadowMemory(self, mem_kb):
+        # Explicit shadow memory is not a concept
+        return 0

 class X86_HVM_ImageHandler(HVMImageHandler):

@@ -466,6 +440,11 @@ class X86_HVM_ImageHandler(HVMImageHandl
         extra_mb = (2.4/1024) * (mem_kb/1024.0) + 12;
         extra_pages = int( math.ceil( extra_mb*1024 / page_kb ))
         return mem_kb + extra_pages * page_kb
+
+    def getRequiredShadowMemory(self, mem_kb):
+        # 1MB per vcpu plus 4Kib/Mib of RAM.  This is higher than
+        # the minimum that Xen would allocate if no value were given.
+        return 1024 * self.vm.getVCpuCount() + mem_kb / 256

 _handlers = {
     "powerpc": {

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


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

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