From: Dave Hansen <dave@linux.vnet.ibm.com>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Yasunori Goto <y-goto@jp.fujitsu.com>,
Christoph Lameter <clameter@sgi.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Anthony Liguori <anthony@codemonkey.ws>,
Chris Wright <chrisw@sous-sol.org>
Subject: Re: Trying to make use of hotplug memory for xen balloon driver
Date: Wed, 26 Mar 2008 17:09:04 -0700 [thread overview]
Message-ID: <1206576544.7883.21.camel@nimitz.home.sr71.net> (raw)
In-Reply-To: <47EAD83A.2000000@goop.org>
On Wed, 2008-03-26 at 16:11 -0700, Jeremy Fitzhardinge wrote:
>
>
> I'm trying to make use of hotplug memory in the Xen balloon driver.
> If
> you want to expand a domain to be larger than its initial size, it
> must
> add new page structures to describe the new memory.
>
> The platform is x86-32, with CONFIG_SPARSEMEM and
> CONFIG_HOTPLUG_MEMORY. Because the new memory is only
> pseudo-physical,
> the physical address within the domain is arbitrary, and I added a
> add_memory_resource() function so I could use allocate_resource() to
> find an appropriate address to put the new memory at.
>
> When I want to expand the domain's memory, I do (error checking
> edited
> out for brevity):
>
> res = kzalloc(sizeof(*res), GFP_KERNEL);
>
> res->name = "Xen Balloon";
> res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
>
> ret = allocate_resource(&iomem_resource, res, size, 0, -1,
> PAGE_SIZE, NULL, NULL);
>
> ret = add_memory_resource(0, res);
Yeah, this is your problem. You've only allocated the iomem *resource*
for the memory area, which means that you've basically claimed the
physical addresses.
But, you don't have any 'struct page's there.
We really screwed up the memory hotplug code and ended up with some
incredibly arcane function names. You might want to look at
add_memory(). It is hidden away in mm/memory_hotplug.c :)
You might also note that most of the ppc64 memory hotplug is driven by
userspace. The hypervisor actually contacts a daemon on the guest to
tell it where its new memory is. That daemon does the addition
through /sys/devices/system/memory/probe.
-- Dave
next prev parent reply other threads:[~2008-03-27 0:09 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-26 23:11 Jeremy Fitzhardinge
2008-03-27 0:09 ` Dave Hansen [this message]
2008-03-27 0:15 ` Jeremy Fitzhardinge
2008-03-27 1:23 ` Christoph Lameter
2008-03-27 0:26 ` Dave Hansen
2008-03-27 22:23 ` Jeremy Fitzhardinge
2008-03-28 18:21 ` Dave Hansen
2008-03-27 0:50 ` KAMEZAWA Hiroyuki
2008-03-27 5:57 ` Jeremy Fitzhardinge
2008-03-27 6:11 ` KAMEZAWA Hiroyuki
2008-03-27 6:09 ` Jeremy Fitzhardinge
2008-03-27 20:54 ` Jeremy Fitzhardinge
2008-03-28 0:20 ` KAMEZAWA Hiroyuki
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=1206576544.7883.21.camel@nimitz.home.sr71.net \
--to=dave@linux.vnet.ibm.com \
--cc=anthony@codemonkey.ws \
--cc=chrisw@sous-sol.org \
--cc=clameter@sgi.com \
--cc=jeremy@goop.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=y-goto@jp.fujitsu.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
all inboxes | Powered by JetHome®