From: David Vrabel <david.vrabel@citrix.com>
To: xen-devel@lists.xensource.com
Cc: David Vrabel <david.vrabel@citrix.com>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Subject: [PATCH 2/5] xen/balloon: account for pages released during memory setup
Date: Fri, 19 Aug 2011 15:57:17 +0100 [thread overview]
Message-ID: <1313765840-22084-3-git-send-email-david.vrabel@citrix.com> (raw)
In-Reply-To: <1313765840-22084-1-git-send-email-david.vrabel@citrix.com>
In xen_memory_setup() pages that occur in gaps in the memory map are
released back to Xen. This reduces the domain's current page count.
The Xen balloon driver does not correctly decrease its initial
current_pages count to reflect this. If 'delta' pages are released
and the target is adjusted the resulting reservation is always 'delta'
less than the requested target.
This affects dom0 if the initial allocation of pages overlaps the PCI
memory region but won't affect most domU guests that have been setup
with pseudo-physical memory maps that don't have gaps.
Fix this by asking the hypervisor what the current reservation is when
starting the balloon driver.
If the domain's targets are managed by xapi, the domain may eventually
run out of memory and die because xapi currently gets its target
calculations wrong and whenever it is restarted it always reduces the
target by 'delta'.
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
---
drivers/xen/balloon.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
index 5dfd8f8..5814022 100644
--- a/drivers/xen/balloon.c
+++ b/drivers/xen/balloon.c
@@ -557,15 +557,20 @@ EXPORT_SYMBOL(free_xenballooned_pages);
static int __init balloon_init(void)
{
+ domid_t domid = DOMID_SELF;
unsigned long pfn, extra_pfn_end;
struct page *page;
+ int ret;
if (!xen_domain())
return -ENODEV;
pr_info("xen/balloon: Initialising balloon driver.\n");
- balloon_stats.current_pages = xen_pv_domain() ? min(xen_start_info->nr_pages, max_pfn) : max_pfn;
+ ret = HYPERVISOR_memory_op(XENMEM_current_reservation, &domid);
+ if (ret < 0)
+ return ret;
+ balloon_stats.current_pages = ret;
balloon_stats.target_pages = balloon_stats.current_pages;
balloon_stats.balloon_low = 0;
balloon_stats.balloon_high = 0;
--
1.7.2.5
next prev parent reply other threads:[~2011-08-19 14:57 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-19 14:57 xen: memory initialization/balloon fixes (#2) David Vrabel
2011-08-19 14:57 ` [PATCH 1/5] xen: use maximum reservation to limit amount of usable RAM David Vrabel
2011-08-31 20:40 ` Konrad Rzeszutek Wilk
2011-09-01 12:12 ` David Vrabel
2011-09-01 13:14 ` Konrad Rzeszutek Wilk
2011-08-19 14:57 ` David Vrabel [this message]
2011-09-06 21:31 ` [PATCH 2/5] xen/balloon: account for pages released during memory setup Konrad Rzeszutek Wilk
2011-09-08 15:01 ` David Vrabel
2011-08-19 14:57 ` [PATCH 3/5] xen: allow balloon driver to use more than one memory region David Vrabel
2011-09-06 21:57 ` Konrad Rzeszutek Wilk
2011-09-07 10:44 ` David Vrabel
2011-09-07 18:09 ` Konrad Rzeszutek Wilk
2011-08-19 14:57 ` [PATCH 4/5] xen: allow extra memory to be in multiple regions David Vrabel
2011-09-07 12:28 ` Konrad Rzeszutek Wilk
2011-08-19 14:57 ` [PATCH 5/5] xen: release all pages within 1-1 p2m mappings David Vrabel
2011-08-19 15:05 ` David Vrabel
2011-09-06 21:20 ` Konrad Rzeszutek Wilk
2011-09-07 11:03 ` David Vrabel
2011-09-07 18:23 ` Konrad Rzeszutek Wilk
2011-08-22 14:49 ` xen: memory initialization/balloon fixes (#2) Konrad Rzeszutek Wilk
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=1313765840-22084-3-git-send-email-david.vrabel@citrix.com \
--to=david.vrabel@citrix.com \
--cc=konrad.wilk@oracle.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).