lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 26 Mar 2008 17:09:04 -0700
From:	Dave Hansen <dave@...ux.vnet.ibm.com>
To:	Jeremy Fitzhardinge <jeremy@...p.org>
Cc:	KAMEZAWA Hiroyuki <kamezawa.hiroyu@...fujitsu.com>,
	Yasunori Goto <y-goto@...fujitsu.com>,
	Christoph Lameter <clameter@....com>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	Anthony Liguori <anthony@...emonkey.ws>,
	Chris Wright <chrisw@...s-sol.org>
Subject: Re: Trying to make use of hotplug memory for xen balloon driver


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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ