All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andres Lagar-Cavilla <andres@lagarcavilla.org>
To: xen-devel@lists.xensource.com
Cc: andres@gridcentric.ca, tim@xen.org, adin@gridcentric.ca
Subject: [PATCH 1 of 4] Prevent low values of max_pages for domains doing sharing or paging
Date: Wed, 15 Feb 2012 22:57:04 -0500	[thread overview]
Message-ID: <11fd4e0a1e1a76ca3bc1.1329364624@xdev.gridcentric.ca> (raw)
In-Reply-To: <patchbomb.1329364623@xdev.gridcentric.ca>

 xen/common/domctl.c |  8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)


Apparently, setting d->max_pages to something lower than d->tot_pages is
used as a mechanism for controling a domain's footprint. It will result
in all new page allocations failing.

This is a really bad idea with paging or sharing, as regular guest memory
accesses may need to be satisfied by allocating new memory (either to
page in or to unshare).

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>

diff -r 62b1fe67b8d1 -r 11fd4e0a1e1a xen/common/domctl.c
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
@@ -813,8 +813,14 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
          * NB. We removed a check that new_max >= current tot_pages; this means
          * that the domain will now be allowed to "ratchet" down to new_max. In
          * the meantime, while tot > max, all new allocations are disallowed.
+         *
+         * Except that this is not a great idea for domains doing sharing or 
+         * paging, as they need to perform new allocations on the fly.
          */
-        d->max_pages = new_max;
+        if ( (new_max > d->max_pages) ||
+             !((d->mem_event->paging.ring_page != NULL) ||
+                d->arch.hvm_domain.mem_sharing_enabled) )
+            d->max_pages = new_max;
         ret = 0;
         spin_unlock(&d->page_alloc_lock);

  reply	other threads:[~2012-02-16  3:57 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-16  3:57 [PATCH 0 of 4] Handling of (some) low memory conditions Andres Lagar-Cavilla
2012-02-16  3:57 ` Andres Lagar-Cavilla [this message]
2012-02-16  9:16   ` [PATCH 1 of 4] Prevent low values of max_pages for domains doing sharing or paging Jan Beulich
2012-02-16 10:20   ` Tim Deegan
2012-02-16 14:45     ` Andres Lagar-Cavilla
2012-02-16 14:58       ` Tim Deegan
2012-02-16 15:32       ` Jan Beulich
2012-02-16 16:08         ` Tim Deegan
2012-02-16 16:44           ` Jan Beulich
2012-02-16  3:57 ` [PATCH 2 of 4] x86/mm: Allow to not sleep on mem event ring Andres Lagar-Cavilla
2012-02-16 16:11   ` Tim Deegan
2012-02-17 16:57     ` Andres Lagar-Cavilla
2012-02-16  3:57 ` [PATCH 3 of 4] Memory sharing: better handling of ENOMEM while unsharing Andres Lagar-Cavilla
2012-02-16 16:19   ` Tim Deegan
2012-02-17 17:01     ` Andres Lagar-Cavilla
2012-02-16  3:57 ` [PATCH 4 of 4] Global virq for low memory situations Andres Lagar-Cavilla
2012-02-16  9:31 ` [PATCH 0 of 4] Handling of (some) low memory conditions Jan Beulich
2012-02-16 14:40   ` Andres Lagar-Cavilla
2012-02-16 15:22     ` Jan Beulich
2012-02-16 15:34       ` Andres Lagar-Cavilla
2012-02-16 16:26         ` Jan Beulich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=11fd4e0a1e1a76ca3bc1.1329364624@xdev.gridcentric.ca \
    --to=andres@lagarcavilla.org \
    --cc=adin@gridcentric.ca \
    --cc=andres@gridcentric.ca \
    --cc=tim@xen.org \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.