From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Thibault Subject: Re: Re: [Xen-changelog] [xen-unstable] Clean up handling of IS_PRIV_FOR() and rcu_[un]lock_domain(). Date: Sat, 5 Apr 2008 18:25:39 +0200 Message-ID: <20080405162538.GM4005@implementation> References: <20080329112316.GC4482@implementation> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit 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 Keir Fraser, le Sat 29 Mar 2008 11:47:57 +0000, a écrit : > > DOMCTL_getdomaininfo is needed. > > DOMCTL_max_mem is needed. > > These ones are a sticking point I'm afraid. DOMCTL_max_mem is a globally > privileged operation because it can give increased access to the global > memory resource. We can't let stub domains have at it. We'll have to keep > max_mem permanently increased, and set that up in xend. With that done you > probably don't really need getdomaininfo either. Hum, actually that was already done, see python/xen/xend/Image.py:682 and that can indeed be seen in xm top... The patch below drops the qemu reservation code, and things still work as expected. Samuel ioemu: drop duplicate memory reservation Signed-off-by: Samuel Thibault diff -r 30c502e58777 tools/ioemu/vl.c --- a/tools/ioemu/vl.c Sat Apr 05 15:01:14 2008 +0100 +++ b/tools/ioemu/vl.c Sat Apr 05 17:18:56 2008 +0100 @@ -7018,26 +7018,12 @@ int unset_mm_mapping(int xc_handle, uint xen_pfn_t *extent_start) { int err = 0; - xc_dominfo_t info; - - xc_domain_getinfo(xc_handle, domid, 1, &info); - if ((info.nr_pages - nr_pages) <= 0) { - fprintf(stderr, "unset_mm_mapping: error nr_pages\n"); - err = -1; - } err = xc_domain_memory_decrease_reservation(xc_handle, domid, nr_pages, 0, extent_start); if (err) fprintf(stderr, "Failed to decrease physmap\n"); - - if (xc_domain_setmaxmem(xc_handle, domid, (info.nr_pages - nr_pages) * - PAGE_SIZE/1024) != 0) { - fprintf(logfile, "set maxmem returned error %d\n", errno); - err = -1; - } - return err; } @@ -7045,16 +7031,7 @@ int set_mm_mapping(int xc_handle, uint32 unsigned long nr_pages, unsigned int address_bits, xen_pfn_t *extent_start) { - xc_dominfo_t info; int err = 0; - - xc_domain_getinfo(xc_handle, domid, 1, &info); - - if (xc_domain_setmaxmem(xc_handle, domid, info.max_memkb + - nr_pages * PAGE_SIZE/1024) != 0) { - fprintf(logfile, "set maxmem returned error %d\n", errno); - return -1; - } err = xc_domain_memory_populate_physmap(xc_handle, domid, nr_pages, 0, address_bits, extent_start);