From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Daniel P. Berrange" Subject: Re: 3.0.5-rc3: Creating HVM guest fails with: Cannot allocate memory Date: Fri, 27 Apr 2007 14:26:16 +0100 Message-ID: <20070427132616.GC13642@redhat.com> References: <20070426231219.GC17027@redhat.com> Reply-To: "Daniel P. Berrange" Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Keir Fraser Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On Fri, Apr 27, 2007 at 07:53:24AM +0100, Keir Fraser wrote: > On 27/4/07 00:12, "Daniel P. Berrange" wrote: > > > The _constructDomain call is failing in xc.domain_create() - the code which > > deals with ballooning down Domain-0 is not even run yet - that lives in > > the _initDomain method. So HVM domain creation is failing before XenD has > > even had a chance to do ballooning. If I manually use 'xm mem-set' to > > balloon down Domain-0 ahead of time, everything works just fine. > > > > I'm at a lose to figure out how to solve this without major re-arranging > > of the order of _constructDomain & _initDomain work. Perhaps someone can > > figure out an easier fix ? > > I don't think domain_create() allocates very many pages, although it's > possible it's making a default allocation of shadow memory. Assuming not, it > may be sufficient to make auto-balloon leave a bit of slack memory rather > than try to account for all available memory down to the last page. A few > pages might turn out to suffice. Does this problem occur with the very first > domain you try to create after booting the machine? It seems to occurr with any HVM guest I try to create, unless there was already some free mem (from starting & stopping a previous dom). I'm testing with this very simple hack which seems to make it work - just ensure the balloon driver frees a 10 MB chunk right at the start. Hardcoding is fine because when we later get to the _initDomain() method we'll definitely be freeing up much more than 10 MB for the HVM guests's actual mem requirements. --- xen-3.0.5-testing.hg-rc3-14934/tools/python/xen/xend/XendDomainInfo.py 2007-04-26 19:30:11.000000000 -0400 +++ xen-3.0.5-testing.hg-rc3-14934.new/tools/python/xen/xend/XendDomainInfo.py 2007-04-26 19:36:06.000000000 -0400 @@ -1422,6 +1422,8 @@ class XendDomainInfo: raise VmError("HVM guest support is unavailable: is VT/AMD-V " "supported by your CPU and enabled in your " "BIOS?") + # Hack to pre-reserve some mem for basic HVM setup + balloon.free(10*1024) self.domid = xc.domain_create( domid = 0, Dan. -- |=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=| |=- Perl modules: http://search.cpan.org/~danberr/ -=| |=- Projects: http://freshmeat.net/~danielpb/ -=| |=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|